LINUX.ORG.RU
ФорумAdmin

использование озу

 


0

2

на впс 512 озу, программы free и top показывают свободно 5 мб, и своп 10 м, программа htop показывает использование 200 мб и своп 10 мб

гуглил, в статьях пишут что top и free учитывают память под кэш, которая якобы может освободиться в любой момент, но у меня почему то при нехватки памяти растет своп, и все начинает тормозить, а память из под кэш не освобождается

которая якобы может освободиться в любой момент, но у меня почему то при нехватки памяти растет своп, и все начинает тормозить, а память из под кэш не освобождается

потому что видимо у тебя система УЖЕ раком встала (в смысле что упёрлась в io), потому кеша и так слишком мало, и освобождать нечего.

И да, настройки впс отличаются от настройки нормального железа, обратись в поддержку с жалобой. Возможно они подскажут, что делать на их впске.

emulek
()

Параметр vm.swappiness определяет процент занятой памяти, после которого данные начинают скидывать в своп. По умолчанию 60% кажись.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

vm.swappiness

Его заметное уменьшение, как и увеличение приводит к тормозам. Хватит копипастить бездумные советы.

anonymous
()
Ответ на: комментарий от Black_Roland

Параметр vm.swappiness определяет процент занятой памяти, после которого данные начинают скидывать в своп. По умолчанию 60% кажись.

что ты предлагаешь? Покрутить? Может лучше свои яйца покрутишь?

emulek
()
Ответ на: комментарий от kommersant

Не знаю как vps, на обычных системах принято медитировать над выводом /proc/meminfo. Долго гуглить...

В целом, это распространённое заблуждение, что память buffers и cached в выводе top является свободной, точнее может быть вся освобождена ядром в любой момент времени. Из не освобождаемых в buffers находится slab (объекты ядра), в cached, помимо не записанных на диск даных, находится tmpfs (в том числе /dev/shm) и mmap-нутые mlock-нутые файлы.

mky ★★★★★
()
Ответ на: комментарий от mky

В целом, это распространённое заблуждение, что память buffers и cached в выводе top является свободной

и еще она свопится

crowbar
()
Ответ на: комментарий от emulek


avg-cpu: %user %nice %system %iowait %steal %idle
14,07 0,00 1,99 2,08 0,14 81,72

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvdap1 40,61 888,17 146,21 115862668 19073416
xvdap2 0,42 1,98 1,49 258504 194768

kommersant ★★
() автор топика
Ответ на: комментарий от mky

В целом, это распространённое заблуждение, что память buffers и cached в выводе top является свободной, точнее может быть вся освобождена ядром в любой момент времени.

Это не заблуждение, а допустимое упрощение. В нормальном режиме — может выделить большую часть файлового кеша. Если конечно ты там ничего не накрутил.

slab (объекты ядра)

их там немного.

emulek
()
Ответ на: комментарий от mky

В целом, это распространённое заблуждение

Теперь все дебилы, те 95% аудитории будет ссылаться на твой пост, рассказывая что «линакс жрёт оперативу», молодец.

mlock-нутые файлы

Очень большая редкость.

slab (объекты ядра

Очень мало занимает, по нынешним временам, если какой-нибудь fglrx не потёк.

tmpfs (в том числе /dev/shm

Это прозрачно детектируется df.

anonymous
()
Ответ на: комментарий от anonymous

Да, для slab есть slabtop, если чё.

anonymous
()
Ответ на: комментарий от anonymous

Ну это лучше, чем когда все дебилы по любому вопросу о памяти отправляют сразу на linuxatemyram.com, как здесь: Linux ate my RAM , вместо того, чтобы разобраться.

И если поискать по ЛОРу, погуглить, то утечки slab'а встречаются, но, видимо, их мало кто замечает или боятся спрашивать, чтобы не послали на linuxatemyram.com.

mky ★★★★★
()
Ответ на: комментарий от emulek

Вот скромная домашняя помойка, ничего сейчас особо не делат, браузер, с которого пишу крутит и всё:

# free ; sync ; sync ; sync; echo 3 > /proc/sys/vm/drop_caches ; free
             total       used       free     shared    buffers     cached
Mem:       2005344    1832340     173004          0     187852     899484
-/+ buffers/cache:     745004    1260340
Swap:       511992      38044     473948
             total       used       free     shared    buffers     cached
Mem:       2005344     807860    1197484          0        140      96848
-/+ buffers/cache:     710872    1294472
Swap:       511992      38044     473948
Ничего там не крутил, как бы, 96 Мбайт от 2 Гбайт это не много, но заметно. И это у меня /tmp на диске, а не в tmpfs, как тут постоянно советуют.

А slab обычно достаточно заметный объём занимает (по меркам 512 Мбайт), разве что насчёт того, что он входит в buffers я нагнал.

mky ★★★★★
()
Ответ на: комментарий от mky

96 Мбайт от 2 Гбайт это не много, но заметно

это просто ничто. Ну переведи в рубли...

И это у меня /tmp на диске, а не в tmpfs, как тут постоянно советуют.

ну и зачем тебе /tmp на диске? У тебя не 16Мб вроде, а 2048.

А slab обычно достаточно заметный объём занимает (по меркам 512 Мбайт)

вот пусть ТС посмотрит, по своим меркам. Что там у тебя — не имеет значения.

emulek
()
Ответ на: комментарий от kommersant

суппорт скажет чтоб переходит на более дорогой тариф

да. Есть такая ерунда. Слышал анекдот про бесплатного доктора?

ИМХО эти низкие тарифы нужны только для PoC какого-нить сайта, если ты желаешь показать заказчику, что твой говнокод работает. IRL они даже 10 человек не выдерживают, и это не баг, а фича.

emulek
()
Ответ на: комментарий от emulek

В рубли я это перевести не могу, потому что в мою помойку больше 2 Гбайт памяти не засунуть, такой помойный чипсет. Сразу отвечу, что материнку я утащил с работы, а не покупал, нищебродство и лень :-)

Но, на 2 Гбайт 96 Мбайт не так заметно, как на 512 Мбайт, как в случае с ТС. И никто ему не посоветовал сделать free сразу после sync & drop_caches, чтобы оценить, сколько в его системе реально не освобождаемой памяти. Поэтому, такак данных от ТС нет, будем гадать, чё ещё по субботам то делать :-)

А /tmp на диске у меня в силу привычки, я там мусорю, а не в /home. И по scp туда файлы заливаю, а потом перекладывают куда надо (если надо).

mky ★★★★★
()
Ответ на: комментарий от mky

память в впсках работает не совсем так, как в железе. Потому данные sync && free ИМХО будут иметь мало смысла, т.к. выводы из этих данных будут неправильными. Если хочешь — попробуй, разузнай... Я не буду вам мешать...

А /tmp на диске у меня в силу привычки, я там мусорю, а не в /home. И по scp туда файлы заливаю, а потом перекладывают куда надо (если надо).

вот основной стимул пихать /tmp в память для меня: лень убирать помойку.

emulek
()

Смотри кто сколько жрет, настраивай параметр vm.swappiness в 0 для того, чтобы не свапило, а чистило кеш.

blind_oracle ★★★★★
()
Ответ на: комментарий от anonymous

Его заметное уменьшение, как и увеличение приводит к тормозам. Хватит копипастить бездумные советы.

Чем докажешь что это копипаста и бездумный совет?

Black_Roland ★★★★
()
Ответ на: комментарий от emulek

что ты предлагаешь? Покрутить? Может лучше свои яйца покрутишь?

Твои сексуальные фантазии меня не интересуют.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Чем докажешь что это копипаста и бездумный совет?

вообще-то это ты доказывать должен.

Если не согласен, то сейчас будешь http://lurkmore.to/Копипаста:Вован опровергать.

Твои сексуальные фантазии меня не интересуют.

это не пруф.

emulek
()
Ответ на: комментарий от emulek

Твои сексуальные фантазии меня не интересуют.

это не пруф.

Пруф чего? Ты о чем? На мой пост о swappines ты начал фантазировать на темы связанные с половыми органами. Я просто сказал, что мне твои фантазии не интересны.

Чем докажешь что это копипаста и бездумный совет?

вообще-то это ты доказывать должен.

С какой стати? Аноним сделал лживое заявление о том, что это копипаста — пусть он и доказывает.

Если не согласен, то сейчас будешь http://lurkmore.to/Копипаста:Вован опровергать.

Сам это читай, мне гавно не интересно.

И вообще тот аноним это ты? Или ты просто лезешь куда не просят?

Black_Roland ★★★★
()
Ответ на: комментарий от mky

Не лучше, нужно было написать про df |grep tmpfs и slabtop, а так вышел пердок в лужу. В общем случае linuxatemyram подходит под вопрос тс на 100%.

anonymous
()
Ответ на: комментарий от Black_Roland

С какой стати? Аноним сделал лживое заявление о том, что это копипаста — пусть он и доказывает.

ты разве не знаешь, что это и вправду — копипаста?

На мой пост о swappines

вот это подтвердишь? Или будешь рассуждать «про половые органы»?

emulek
()
Ответ на: комментарий от emulek

ты разве не знаешь, что это и вправду — копипаста?

Пруф?

вот это подтвердишь? Или будешь рассуждать «про половые органы»?

Читай документацию.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

ты разве не знаешь, что это и вправду — копипаста?

Пруф?

погугли. В сети таких советов полно.

вот это подтвердишь? Или будешь рассуждать «про половые органы»?

Читай документацию.

имя файла, номер строки?

emulek
()
Ответ на: комментарий от emulek

имя файла, номер строки?

Я не нанимался искать информацию за неспособных. Ты же мне говоришь просто «погугли», почему тогда я должен искать информацию за тебя?

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

ладно засчитывай слив: emulek не смог обосновать необходимость предоставления пруфов для утверждения, которое очевидно для 95% идиотов.

emulek
()
Ответ на: комментарий от anonymous

Ну дак и напиши. Пока что в этом треде никто не пытается вести диагностику. Дельный совет дал emulek — переключиться на более производительный тарифный план. Судя по ″xvdap1″ тут рассматривается виртуалка в Xen, и я сходу не скажу, насколько там правдоподобная информация в /proc/meminfo и выводе slabtop.

А ТС, судя по стартовому сообщению, уже читал linuxatemyram.com или что-то подобное и считает, что htop должен сначала показать полное использование всей памяти (то есть buffers и cached по нулями) и только потом система должна начать использовать swap. И я писал именно про это, что линукс никогда не осовободит ВЕСЬ cached, там всегда будет какой-то минимум, без которого невозможны дисковые операции и ещё что-то. Судя по всему, ТС к этому особого внимания не проявил.

mky ★★★★★
()
Ответ на: комментарий от mky

там всегда будет какой-то минимум

не совсем так. Вот как бывает:

1. идёт активный IO, который требует 1Гб буферов. Т.е. IO настолько активный, что без 1Gb всё будет люто тупить. К примеру, Over9000 клиентов одновременно смотрят 10 файлов по 100Mb каждый.

2. одновременно с этим программы в совокупности запросили 1Gb.

Вот если в таких условиях мы имеем 1500Mb памяти, то увидим, что 66% занято кешами(1Gb), 33% занято программами(512M), и ещё полгига свопа.

В принципе, если не трогать настройки, и если ПО используется не очень активно, то всё работает достаточно хорошо, если НЕ крутить дефолтные настройки wm.

emulek
()
Ответ на: комментарий от emulek

Вот я про это же, «какой-то минимум, без которого невозможны дисковые операции». Я немного то слово использовал, «Невозможны» не в смысле, что вобще никак, а невозможны с удовлетворительной производительностью. А на вселюбимом http://www.linuxatemyram.com:

If your applications want more memory, they just take back a chunk that the disk cache borrowed. Disk cache can always be given back to applications immediately! You are not low on ram!

Без всяких оговорок, про дисковую активность и т.д. Уточнения, есть, но на второй странице http://www.linuxatemyram.com/play.html внизу, а кто до туда дочитывает.

Вот если в таких условиях мы имеем 1500Mb памяти, то увидим, что 66% занято кешами(1Gb), 33% занято программами(512M), и ещё полгига свопа.

А команда htop покажет проще:

Mem 512/1500 Мбайт
Swap 512/1500 Мбайт
и это у некоторых может вызвать недоумение, почему столько swap'а при не занятом ОЗУ.

А возвращаясь к случаю ТС, на некоторых сайтах я встречал совет для xen domU выставлять vm.swappiness=0, это всегда разумно или зависит от настроек dom0 ?

mky ★★★★★
()
Ответ на: комментарий от kommersant

Я не знаю, какая у вас там реальная нагрузка в текущий момент. Вы, судя по всему, привели вывод iostat просто, без параметров. Тогда эта команда показывает кол-во считанных/записанных блоков со старта системы и среднюю скорость за это время. Лучше запустите ″iostat 5″ и посмотрите, какие значения она показывает в данных условиях, когда всё тормозит. И, аналогично, посмотрите ″vmstat 5″, чтобы определить количество операция чтения/записи в swap. Если операций мало (колонки si и so), то ядро всё делает правильно и отправляет в swap действительно не нужные области памяти, освобождая их под дисковый кеш.

Посмотрите, что даст команда отсюда: использование озу (комментарий) . Если после drop_caches объём buffers и cached уменьшится не сильно, покажите вывод команды ″df″.

mky ★★★★★
()
Ответ на: комментарий от mky

If your applications want more memory, they just take back a chunk that the disk cache borrowed. Disk cache can always be given back to applications immediately! You are not low on ram!

ну если кеш «холодный», то да, немедленно оторвёт. Но на «горячем» обожжётся. Как можно выдрать кеш, который сейчас используется?

Т.ч. написана правда, но не вся правда. Просто многие новички считают, что если они купили 4Гб памяти, у них должно быть свободным как минимум 3Гб. Для них такую ерунду и пишут, что-бы не доставали с тупыми вопросами...

и это у некоторых может вызвать недоумение, почему столько swap'а при не занятом ОЗУ.

дык память не зря зовут «мозгами». Она работает там, где _сейчас_ нужно.

А возвращаясь к случаю ТС, на некоторых сайтах я встречал совет для xen domU выставлять vm.swappiness=0, это всегда разумно

ну в общем случае ИМХО для виртуалки это разумно, потому что там вообще управление памятью плохо работает. Гостевая система не видит напрямую физическую память, а хостовая система тоже не понимает такой странный и непредсказуемый вид доступа. Для хоста такая нагрузка сильно непредсказуемая, а для успешной работы свопа требуется «заглянуть в хрустальный шар», что-бы узнать, будет-ли использоваться страница, или она будет не нужна.

С другой стороны виртуалки совершенствуются, и в идеале могут стать совсем прозрачными. Может быть.

emulek
()
Ответ на: комментарий от kommersant

нагрузки практически нету

да не. Нагрузка довольно серьёзная, у вас половина памяти активно используется. Это пиковая нагрузка или обычная?

emulek
()
Ответ на: комментарий от kommersant

ну значит неудивительно, что в пиковую оно захлебнётся. Судя по скрину, там сейчас один юзер(на этом вашем httpd), а второй уронит систему(точнее загонит её в своп). И проблема тут в памяти, что видно по RES=70m для mysqld и столько же для php-скриптов.

emulek
()
Ответ на: комментарий от emulek

запустил loadimpact.com на один сайт, который без cdn, так вот в пики LA было 1, своп почти не использовался, скорее всего изза того что я указал в настройках fastcgi FcgidMaxProcesses 3, до этого пхп процессов было в 2-3 раза больше

kommersant ★★
() автор топика
Ответ на: комментарий от mky

А /tmp на диске у меня

А отдельной партициией или нет? Покажи плиз как в /etc/fstab прописано.

в силу привычки, я там мусорю, а не в /home.

Так же. Недавно вот так забил, что освободить не вышло. Все файлы удалил, а места ноль. ХЗ, что это было. Только перезагрузка помогла.

varchar
()
Ответ на: комментарий от varchar

Нет, не отдельным разделом, винт 20 Гбайт, да ещё в конце bad sectors, помойка же, только на ЛОР ходить :-) Надо бы давно поменять, но пока ведь работает...

На всех моих машинках, которые desktop или только маршрутизаторы (без пользователей), что дома, что на работе, я вобще не парюсь с разбивкой диска, всё в корневой раздел и всё. Круглосуточная работа им не критична. Если что-то напишет в /tmp и забъёт весь диск, ну и пусть забъёт, почищу.

На единственном компе, который можно считать сервером, под /tmp отдельный кусок 1 Гбайт и столько же под samba.tmp — шара по smb, куда народ может чего намусорить.

Все файлы удалил, а места ноль. ХЗ, что это было.

Пока какое-то приложение пишет в файл (или просто держит открытым), файл удалить нельзя, можно удалить только имя файла, а данные на диске останутся и не будут освобождены, пока приложение не закроет этот файл.

mky ★★★★★
()
Ответ на: комментарий от mky

Нет, не отдельным разделом, винт 20 Гбайт, да ещё в конце bad sectors, помойка же, только на ЛОР ходить :-) Надо бы давно поменять, но пока ведь работает...

Ну покажи строку из fstab-а, будь добр, а то я что-то не соображу ЧТО первым в строке написать, т.е. ЧТО монтируем в /tmp если это не отдельный винт/партиция.

На всех моих машинках, которые desktop или только маршрутизаторы (без пользователей), что дома, что на работе, я вобще не парюсь с разбивкой диска, всё в корневой раздел и всё.

Swap-ы в файлы? А венды тоже на один раздел? Мне просто любопытно т.к. сам так делаю в случае винтов не больших.

Пока какое-то приложение пишет в файл (или просто держит открытым), файл удалить нельзя, можно удалить только имя файла, а данные на диске останутся и не будут освобождены, пока приложение не закроет этот файл.

Кодировал туда видео, ffmpeg ругнулся и завершился. Файл я удалил, но место не освободилось. Безрезультатно удалил всё прочее. lsof по /tmp - ничего подозрительного. Такие дела.

varchar
()
Ответ на: комментарий от varchar

Вобще ничего не надо писать в fstab, если /tmp не на отдельной ФС, только не забыть права доступа на каталог /tmp проверить:

UUID=1a387e5e-8ac2-4038-97d8-f849b8e6d2b8 /     ext3    defaults        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

/swapfile               swap                    swap    defaults        0 0

swap иногда в файл, иногда на раздел в начале диска, там где скорость чтения больше. Винду не использую лет десять.

Можно было сделать ″lsof | grep deleted″, посмотреть, есть ли удалённые, но открытые файлы.

mky ★★★★★
()
Ответ на: комментарий от mky

:) тю, что-то меня на монтировании заклинило... Просто каталог!

″lsof | grep deleted″, посмотреть, есть ли удалённые, но открытые файлы

И принудительно позакрывать дескрипторы. Как выход. Почему этим ядро не занимается... Удалённые но занимающие место открытые файлы кажутся глупостью.

varchar
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.