killall
команда не была упомянута, и я чувствую, что это - полезное дополнение к репертуару.
$ killall selenium
Можно также использовать -r regex
опция указать регулярное выражение для соответствия имени процесса и даже временной стоимости:
$ killall -o 5m selenium
Уничтожает все процессы селена, более старые, чем 5 минут.
Я нашел это smem
действительно видит используемую память, но только в "системном" режиме:
# smem -tw
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 1200240 379444 820796
userspace memory 2101184 136800 1964384
free memory 750532 750532 0
----------------------------------------------------------
4051956 1266776 2785180
# free -k
total used free shared buffers cached
Mem: 4051956 3298200 753756 0 31664 425552
-/+ buffers/cache: 2840984 1210972
Swap: 4051952 237368 3814584
который дает (едва любой) различие приблизительно 55 МиБ между не, кэш использовал память между free
и smem
.
4 ГБ RAM (физическая память) и что у Вас есть 2 zram устройства максимальных 2 025 976 КБ (примерно 2 ГБ каждый). zram использует доступную память, я не знаю точно внутреннее, но безотносительно механизма, я могу ясно вообразить сценарий, где страница Linux (= помещает некоторую память от RAM до zram) для получения еще некоторого свободного пространства, но затем zram использование в памяти растет, таким образом, это далее разбило бы на страницы, который приведет к дальнейшему увеличению zram использования, и так далее пока zram не использует всю физическую память.
Я предполагаю, что существует порог в любой системе, под которой подкачка страниц не подчеркнет ядро к точке, которую я описываю выше, так, чтобы zram улучшили производительность.
То, когда Ваша система хочет подкачать 100 МБ, что происходит, - то, что она помещает это 100 МБ в zram. Скажем, это сжато до на 50% меньше, так 50 МБ. Это означает, что Ваша система хотела освободить 100 МБ, но только 50 МБ были освобождены. Теперь Linux умен в этом, когда он разбил на страницы блока памяти (таким образом помещает их в подкачку), но нуждаются в них снова, он может сделать некоторую "оптимизацию", он может разбить на страницы в снова этой памяти, но сохранить его в подкачке также, поэтому если быстро после того, как он должен был бы разбить на страницы, они отделяются памяти, он мог избежать, чтобы expenive записал в файл подкачки. Таким образом в Вашем случае, могло случиться так, что Linux сохраняет 100 МБ в zram и отложил их в нормальной RAM, таким образом, система использует 150 МБ некоторое время. Если это повторяется для большей программы с меньшим количеством сжимаемых данных, это могло бы быстро стать кошмаром, вообразить блок на 300 МБ RAM, которая будет разбита на страницы и использовать 120 МБ в каждой подкачке zram. Это означает, что Linux хотел освободить 300 МБ RAM для другой цели, но только освободил (300-120-120=60) 60 МБ, это могло бы затем попытаться разбить на страницы дальнейшие страницы, и так далее, с проблемой, что у Вас есть 2 zram, которые могут использовать до 2 ГБ RAM каждый, таким образом съедая всю Вашу память.
Так дерьмо zram? Нет, нисколько, проблема состоит в том, что Вы настроили zram, чтобы иметь общий размер точно Вашей физической RAM, и это - проблема. Вы не должны настраивать zram для использования больше чем 25%, по моему скромному мнению, физической RAM, что означает, что необходимо было бы положиться все еще в решении для подкачки жесткого диска, после того как zram подкачка заполнено.
Простое решение состояло бы в том, чтобы уменьшить и zram, чтобы обработать каждого 500 МБ макс. и добавить файл подкачки примерно 2-3 ГБ, позволить ядру освобождать действительно неиспользованные страницы от zram до этого файла подкачки. Файл подкачки не будет использовать RAM и неясный давление на него.
Некоторая информация о том, как установить Ваш zram размер диска.
zram
недалеко от действительности, она, как предполагается, используется без реальной подкачки. Во-вторых: отключение zram
действительно не помог. Проблема, вероятно, вызывается некоторой ошибкой в radeon
драйвер, к сожалению, у меня не будет времени для отладки его в ближайшем будущем.
– Hubert Kario
02.03.2013, 21:55
zram
может быть удобным, но также и пожиратель ресурсов памяти!
– Huygens
03.03.2013, 20:45
Команда free -tm
также показывает использование свопа файлами, резервируемыми через tmpfs. Если вы можете очистить папку /tmp
, использование памяти командой smem -t -k
должно быть аналогично free -tm
.
zram
реальное использование в некэше динамической памяти ядра. Ваше использование подкачки отображено в строке "подкачки" свободным, но также и косвенно в вышеупомянутых строках, о которых сообщают свободным также! – Huygens 03.03.2013, 20:49zram
сжимает данные, и я не забываю видеть 4 сокращения размера сгиба), вещь, это не проблема, которую я пытаюсь диагностировать. Текущий вопрос - то, почему моя память ядра некэша является большой во-первых (даже если мы предполагаем, что zram память является несжатой, это - все еще более чем 600 МиБ, это используется, то есть, по восьми из общей памяти!). – Hubert Kario 03.03.2013, 23:04smem
забывает добавлять, что поле Shmem к пространству пользователя использовало память, Вы кажетесь, имел приблизительно 36 МБ из тех, но как время "создания снимков" могли бы отличаться команды, это могло объяснить различие. – Huygens 03.03.2013, 23:16smem
использует содержаниеmeminfo
вычислить значения строки динамической памяти ядра. Однакоmeminfo
не выставляет все типы памяти (попытайтесь добавить их, чтобы видеть, сложили ли они). Любое странное использование памяти (такое как zram мог произвести, но другие программы/модули могли сделать также другой материал) заканчивается считаемое в некэше ядра. Не фокусируйтесь на выводеsmem
возможно, Ваше потребление памяти не происходит, формируют ядро, но пространство пользователя приложения. Мы должны знать больше тип приложений, которые Вы запускаете для помощи Вам далее. – Huygens 03.03.2013, 23:18