Я просмотрел эту статью , в которой объясняются различные методы проверки использования вашей оперативной памяти. Однако я не могу примирить разные методы и не знаю, какой из них правильный.
При первом входе в систему меня приветствует экран, подобный следующему:
System information as of Sun Apr 28 21:46:58 UTC 2013
System load: 0.0 Processes: 76
Usage of /: 15.6% of 7.87GB Users logged in: 1
Memory usage: 41% IP address for eth0:
Swap usage: 0%
Это говорит мне о том, что я использую 41% своей оперативной памяти, что кажется довольно высоким, поскольку сервер мало что делает. Или это число относится к чему-то кроме ОЗУ?
Далее я попробую free -m
метод:
ubuntu@ip-:~$ free -m
total used free shared buffers cached
Mem: 590 513 76 0 67 315
-/+ buffers/cache: 130 459
Swap: 0 0 0
Согласно пояснительной иллюстрации в статье это означает, что у меня 130 МБ используемой оперативной памяти и 459 МБ свободной оперативной памяти, что говорит о том, что я использую около 22% своей оперативной памяти.
Далее я бегу top
:
top - 22:14:48 up 195 days, 21:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.3%us, 0.3%sy, 0.0%ni, 97.7%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 604376k total, 525692k used, 78684k free, 69124k buffers
Swap: 0k total, 0k used, 0k free, 322740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24332 1864 976 S 0.0 0.3 0:08.75 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
Это наиболее запутанно, поскольку в сводке показано, что я использую 525MG из 604M общего количества, и все же, когда используется интерактивная команда «m» для сортировки по верхнему объему памяти, верхний процесс использует только 0,3% памяти ???
Наконец, ps
команда, похоже, также показывает очень мало использования памяти:
root@ip-:/home/ubuntu# ps -o command,rss
COMMAND RSS
ps -o command,rss 788
sudo su root 1764
su root 1404
bash 2132
Я хотел бы, чтобы кто-то исправил все мои недоразумения, которые создают эти очевидные конфликты.
Спасибо!
РЕДАКТИРОВАТЬ для Rahul
Выход из cat /proc/meminfo
:
MemTotal: 604376 kB
MemFree: 157564 kB
Buffers: 49640 kB
Cached: 231376 kB
SwapCached: 0 kB
Active: 290040 kB
Inactive: 97772 kB
Active(anon): 107672 kB
Inactive(anon): 4844 kB
Active(file): 182368 kB
Inactive(file): 92928 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 52 kB
Writeback: 0 kB
AnonPages: 106836 kB
Mapped: 22920 kB
Shmem: 5712 kB
Slab: 42032 kB
SReclaimable: 34016 kB
SUnreclaim: 8016 kB
KernelStack: 688 kB
PageTables: 3584 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 302188 kB
Committed_AS: 242768 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7152 kB
VmallocChunk: 34359729008 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
cat /proc/meminfo
ps ax -o rss | awk '{ sum+=$1} END {print sum}'
только сейчас и 153156.Ответы:
Вам просто нужно понять концепцию памяти
Согласно вашему выводу / proc / meminfo, вам просто нужно заметить следующее:
Буферы : - Буфер - это то, что еще не «записано» на диск. Он показывает, сколько ОЗУ выделено для блока кеша. «Cached» похож на «Buffers», только на этот раз он кэширует страницы из файла чтения
Кэширование : - Кэш - это то, что было «прочитано» с диска и сохранено для последующего использования. Как правило, область кэша можно рассматривать как еще одну «свободную» оперативную память, поскольку она будет постепенно сокращаться, если приложению требуется больше памяти.
Достаточно понять, что и «буферы», и «кэшированные» представляют размер системного кэша. Они динамически растут или уменьшаются в соответствии с внутренним механизмом ядра Linux.
на веб-хостинге они очищают кеш с помощью нижеприведенного cmd: (в основном настроено в cron):
Цитировать Ссылка
РЕДАКТИРОВАТЬ для еще одного требования, т.е. для использования памяти пользователя
Пожалуйста, проверьте с помощью приведенного выше сценария и дайте мне знать, если он показывает правильно или нет.
источник
free -m
как не обеспечивает способ просмотра памяти, используемой на пользователя, каков точный способ определить, сколько реального ОЗУ потребляется конкретным пользователем? Это происходит, например, при мониторинге использования собственной памяти на общем сервере.Хороший ответ @RahulPatil.
Еще один момент, который нужно учитывать в отношении ps или top:
Через ibm / developerworks / linux_memory
Так как ваш вопрос относится к безголовому серверу - я не уверен, сколько на самом деле будет иметь двойной отчет top или ps.
источник
Я боюсь, что мы можем упускать из виду очевидное, потому что это «конечно» для большинства из нас.
Джона, прости меня, если я ошибаюсь, но твои вопросы звучат так, как будто ты не понял, что все эти значения, в частности использование ЦП, обычно меняются от секунды к секунде.
Загрузка ЦП может мгновенно перейти от однозначных цифр к 100% по мере запуска нового процесса, но быстро (надеюсь) упадет до диапазона ниже 50%.
Использование памяти меняется медленнее, но там Linux пытается использовать неактивную память, запуская процессы для «кэширования» обращений к диску. Например, он пытается предсказать, что нужно будет прочитать с диска дальше, например, возможно, оставшуюся часть большого файла после прочтения части, и предварительно загрузить его в кэш. Некоторые из значений использования памяти включают как память, используемую процессами, так и память, используемую для кэширования. В системе, которая работала некоторое время, эти две комбинации, вероятно, составят 80-90% или более.
Также учтите, что процесс, который вы запускаете, чтобы показать использование, например
top
, использует процессор и память, а также. Если вы написали сценарий с циклом для непрерывного отчета об использовании ЦП, он почти наверняка всегда будет показывать 100%, потому что сам отчет об использовании (без каких-либоsleep
задержек) использует весь ЦП.источник