У нас проблема со встроенными Linux-блоками. В некоторых коробках есть утечка памяти.
Ни один из процессов не удерживает утечку памяти.
После уничтожения всех возможных процессов, утечка все еще существует. При просмотре из / proc / meminfo кажется, что утечка памяти находится под неактивной памятью:
~ # echo 1 > /proc/sys/vm/drop_caches ; cat /proc/meminfo
MemTotal: 126744 kB
MemFree: 107684 kB
Buffers: 0 kB
Cached: 1160 kB
SwapCached: 0 kB
Active: 1204 kB
Inactive: 12532 kB
SwapTotal: 0 kB
SwapFree: 0 kB
...
~ # ps
PID USER VSZ STAT COMMAND
1 root 2748 S init
2 root 0 SW< [kthreadd]
3 root 0 SW< [ksoftirqd/0]
4 root 0 SW< [events/0]
5 root 0 SW< [khelper]
31 root 0 SW< [kblockd/0]
42 root 0 SW< [khubd]
48 root 0 SW< [kmmcd]
82 root 0 SW [pdflush]
83 root 0 SW [pdflush]
84 root 0 SW< [kswapd0]
85 root 0 SW< [aio/0]
170 root 0 SW< [rpciod/0]
176 root 0 SW< [mmcqd]
1346 root 2756 S telnetd -l /bin/login
1347 root 2856 S -sh
3737 root 2856 R ps
~ #
Рам диски не используются. Версия для Linux 2.6.25.9.
Есть ли способ найти причину, по которой неактивная память постоянно увеличивается? Можно ли сбросить или сбросить неактивную память?
Ответы:
Неактивная память не проблема, конечно, не «утечка»; это страницы памяти, которые обычно использовались для буферизации файлов или исполняемых файлов, которые в данный момент не запущены и хранятся для возможного повторного использования. Если что-то нуждается в данных (чтение того же файла или запуск той же программы), они будут использованы повторно без повторного попадания на диск; однако если страницы нуждаются в чем-то еще, их неактивное состояние означает, что они будут использоваться при необходимости.
Немного иначе, думайте о свободной памяти как о памяти, которая имеет никогда были выделены; неактивная память - это память, которая была выделена и освобожден ,
источник
Нет никаких доказательств утечки каких-либо данных в размещенных вами данных. Память правильно отслеживается как неактивная. Если вы делаете
sync
передdrop_caches
вы, вероятно, не увидите столько неактивной памяти, но вы создаете ее, вытесняя страницы из кэша. Если они не могут быть освобождены (скажем, они грязные), они становятся неактивными.Вы можете ускорить синхронизацию грязной неактивной памяти, запустив
sync
, но я не могу представить никакой возможной причины для этого. Вы не можете заставить чистую неактивную память быть освобожденной, и я не могу представить причину, по которой вы захотите. Система может уже отказаться от него, и она уже первая в очереди на использование, когда пул свободной памяти исчерпан. Почему вы хотите, чтобы это было свободнее?Если вы не хотите, чтобы система использовала память, выньте ее из машины и положите на стол. Потому что сейчас вы просто заставляете систему замедлять работу системы, заставляя ее сокращать кеши и сбрасывать грязные страницы быстрее, чем хотелось бы, вызывая тонны ненужных операций ввода-вывода. Просто оставьте это в покое и позвольте ему делать свою работу.
источник