как определить доступную физическую память в linux - PullRequest
9 голосов
/ 12 марта 2011

Я пытаюсь понять, работает ли мое программное обеспечение на linux suffers from memory leak. Я попытался измерить доступную физическую память, как указано в /proc/meminfo (см. Ниже), но смог понять, какие поля представляют доступную память и какова связь между MemFree, Cached, Buffers, Active, Inactive.

cat /proc/meminfo
MemTotal:       124128 kB
MemFree:         62872 kB
Buffers:             0 kB
Cached:          15624 kB
SwapCached:          0 kB
Active:          38724 kB
Inactive:        11148 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
AnonPages:       34272 kB
Mapped:          14640 kB
Slab:             5564 kB
SReclaimable:      424 kB
SUnreclaim:       5140 kB
PageTables:        504 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
WritebackTmp:        0 kB
CommitLimit:     62064 kB
Committed_AS:    57936 kB
VmallocTotal:   655360 kB
VmallocUsed:      1016 kB
VmallocChunk:   654328 kB 

Ответы [ 5 ]

22 голосов
/ 12 марта 2011

Это более простая команда для проверки использования памяти:

free
4 голосов
/ 12 марта 2011

/ proc / meminfo для общей информации о системной памяти./ proc / [pid] / status содержит информацию об использовании памяти для отдельного процесса.(он также находится в / proc / [pid] / stat в формате, более понятном для машины).

В частности, VmData (размер сегмента данных) и VmStk (размер сегментов стека) наиболее вероятно используются длявы.Или просто используйте ps или top вместо того, чтобы пытаться самостоятельно считывать данные.

Другие цифры, вероятно, просто сбивают с толку, поскольку общее использование системной памяти усложняется общей памятью, различного рода.буферов и т. д.

3 голосов
/ 12 марта 2011

Если вы ищете утечки памяти, используйте Valgrind .

Для быстрой проверки использования памяти приложением используйте getrusage() (требуется последнее ядро ​​Linux) и посмотрите значение ru_maxrss. /proc/meminfo дает информацию о системе в целом.

1 голос
/ 12 марта 2011

Если вы хотите проверить, есть ли утечка памяти в вашем программном обеспечении, посмотрите на «ps» или «top», чтобы посмотреть на вашу программу. Посмотрите, увеличивается ли виртуальный размер (VSS) с течением времени.

Для устранения таких проблем с памятью используйте Valgrind или (мой личный фаворит) dmalloc.

0 голосов
/ 15 октября 2013

Ваш вопрос задает что-то другое, но поскольку это хит # 2 Google для «физической памяти linux» -

Более новые версии ядра, работающие на x86, имеют DirectMap4k, DirectMap2M и, возможно, DirectMap4M и DirectMap1G поля в конце /proc/meminfo.Их сложение и умножение на 1024, похоже, дает количество байтов физической памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...