Linux – довольно гибкая система, выполнить задачи в которой можно разными способами. Сегодня мы рассмотрим, как узнать, сколько оперативной памяти (ОЗУ — оперативное запоминающее устройство или RAM — Random Access Memory) используется определенным процессом. Сама оперативная память представляет собой специальное устройство, которое используется для временного хранения данных и обеспечивает функционирование ПО.
ОЗУ не стоит путать с ПЗУ (постоянным запоминающим устройством): их отличие заключается в том, что оперативная память является энергозависимой (при выключении компьютера все данные исчезнут), в то время как память жесткого диска сохранит все данные даже после выключения машины. Поэтому и функции, которые они выполняют, также разнятся. Процессор использует оперативную память для быстрого доступа к данным - жесткий диск такую скорость обеспечить не может, поэтому при запуске программа загружается в оперативную память.
Мы отследим занимаемую память на примере процесса веб-сервера Apache.
Команда ps
Первым вариантом будет команда ps, с помощью которой можно получить список процессов, запущенных на сервере.
Введите команду:
ps -p <PID> v
<PID> - идентификатор процесса, в нашем случае это число 897110.
Получим следующий вывод:
# ps -p 897110 v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 897110 ? S 0:04 0 342 387153 35176 0.0 /usr/sbin/httpd.itk -k start
ОЗУ будет представлено в процентном соотношении к общему количеству доступной памяти. К сожалению, в данном примере этот процент крайне мал, и столбец %MEM показывает 0,0.
Команда ps имеет свои ключи, которые вы также можете использовать для удобства:
- -A : все процессы;
- -a : процессы, связанные с конкретным терминалом, кроме главных системных процессов сеанса;
- -d : все процессы, кроме главных системных процессов сеанса;
- T : все процессы на конкретном терминале;
- a : процессы, связанные с текущим терминалом, а также процессы других пользователей;
- r : информация только о работающих процессах;
- x : процессы, отсоединённые от терминала.
Команда top
Второй вариант – использование команды top. Более продвинутые пользователи должны знать эту команду, так как она выводит информацию о нагрузке системы и обновляет ее в реальном времени.
# top -p 897110 top - 16:11:19 up 143 days, 13:09, 1 user, load average: 7.02, 6.89, 6.96 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 19.2%us, 4.8%sy, 0.1%ni, 75.3%id, 0.6%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 65773676k total, 42553788k used, 23219888k free, 6596532k buffers Swap: 2097144k total, 0k used, 2097144k free, 27375052k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 897110 root 20 0 378m 34m 500 S 0.0 0.1 0:04.77 httpd.itk
Обратите внимание на столбцы VIRT и %MEM. Последний столбец показывает информацию, которая очень похожа на ту, что получили предыдущей командой. А вот столбец VIRT отображает занятую виртуальную память.
Одним словом, виртуальная память – это некая комбинация ОЗУ и swap, которую использует запущенный процесс.
Обратите внимание, что команда top ограничена размерами окна, из-за чего игнорируется вся информация, которая не помещается на экран.
Получение занятой памяти из /proc
Последней командой для получения занятой процессором памяти будет обращение к псевдофайловой системе /proc.
# cat /proc/897110/status |grep -i VMSIZE VmSize: 387496 kB
Снова будет выведен результат, который схож с уже полученным ранее – виртуальная память, используемая процессом веб-сервера Apache.
Вот мы и разобрали на примере процесса Apache способы, которыми можно посмотреть занимаемую память.
Комментарии