2016-06-19 2 views
1

Рекомендуется периодически указывать cat /proc/meminfo, если существует утечка памяти в системе.Может ли/proc/meminfo указать некоторые подсказки о утечке памяти?

Если да, то метрику я должен сосредоточиться, учитывая, что подозреваемая утечка памяти в модуле ядра:

> cat /proc/meminfo 

MemTotal:  16344972 kB 
MemFree:  13634064 kB 
MemAvailable: 14836172 kB 
Buffers:   3656 kB 
Cached:  1195708 kB 
SwapCached:   0 kB 
Active:   891636 kB 
Inactive:  1077224 kB 
HighTotal: 15597528 kB 
HighFree:  13629632 kB 
LowTotal:  747444 kB 
LowFree:   4432 kB 
SwapTotal:   0 kB 
SwapFree:   0 kB 
Dirty:    968 kB 
Writeback:   0 kB 
AnonPages:  861800 kB 
Mapped:   280372 kB 
Shmem:    644 kB 
Slab:   284364 kB 
SReclaimable: 159856 kB 
SUnreclaim:  124508 kB 
PageTables:  24448 kB 
NFS_Unstable:  0 kB 
Bounce:    0 kB 
WritebackTmp:  0 kB 
CommitLimit: 7669796 kB 
Committed_AS: 100056 kB 
VmallocTotal: 112216 kB 
VmallocUsed:  428 kB 
VmallocChunk: 111088 kB 
AnonHugePages: 49152 kB 
+0

Есть несколько инструментов, доступных - сверху, iotop, IOSTAT, сар, df -h что может дать вам представление о том, что происходит – dmitryro

+0

dmitryro, iotop, df не поможет обнаружить утечку в модулях ядра; top и sar показывают только бит информации. artm, вы можете начать с инструмента 'free', но вы должны знать, как интерпретировать информацию кэширования/буферов от него (это [кэш страницы] (https://en.wikipedia.org/wiki/Page_cache) FS): http://www.linuxatemyram.com/ и https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/chap-Oracle_9i_and_10g_Tuning_Guide-Memory_Usage_and_Page_Cache.html – osgx

+0

вы можете использовать kmemleak –

ответ

4

Лучший способ начать это free инструмента командной строки, которая использует тот же файл /proc/meminfo : http://man7.org/linux/man-pages/man1/free.1.html

бесплатно - Показать количество свободной и занятой памяти в системе. бесплатно отображает общее количество свободной и используемой физической и свопированной памяти в системе, а также буферы и кеши, используемые ядром. Информация, собранная разборе/Proc/MemInfo

free инструмент имеет «б» и «свободные» столбцы памяти с двумя значениями каждый, но истина заключается в том, что в Linux (и Unix, и, вероятно, в Windows, тоже) существует Page cache механизм кэширования данных с жесткого диска в ОЗУ.

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

В Linux, памяти, используемой кэш страниц сообщается как не свободно, но в «буферы»/«кэш» столбцов, и учитывается в первой строке «используется»

buffers 
      Memory used by kernel buffers (Buffers in /proc/meminfo) 

    cache Memory used by the page cache and slabs (Cached and 
      SReclaimable in /proc/meminfo) 

Пример бесплатно выход:

$ free -m 
      total  used  free  shared buffers  cached 
Mem:   1504  1491   13   0   91  764 
-/+ buffers/cache:  635  869 
Swap:   2047   6  2041 

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

Вы можете прочитать на

+0

спасибо. Итак, когда происходит утечка памяти, будет ли «свободный» метрик приближаться к нулю? – artm

+0

Я наблюдал метрику 'MemFree''/proc/meminfo', но на самом деле не видел шаблон. – artm

+0

artm, почему вы думаете, что есть утечка? Не начинайте с meminfo, начинайте с инструмента 'free'.Вы также можете попробовать ручной сброс (сброс) кэшированных/буферов с помощью 'echo 3>/proc/sys/vm/drop_caches' - http://unix.stackexchange.com/questions/17936/setting-proc-sys-vm- бросивших кэша-к-ясный-кэш – osgx

Смежные вопросы