CentOS: Почему процесс 'cma' занимает так много оперативной памяти?
Я проверял использование ресурсов моего сервера и заметил, что процесс "cma" использует много оперативной памяти.
top - 15:04:54 up 127 days, 21:00, 1 user, load average: 0.27, 0.33, 0.24
Tasks: 157 total, 1 running, 156 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.9%us, 0.3%sy, 0.0%ni, 92.6%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 4043700k total, 4006616k used, 37084k free, 146968k buffers
Swap: 1052248k total, 1052240k used, 8k free, 1351364k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4308 root 16 0 2080m 977m 4708 S 0.0 24.8 0:00.02 cma
4396 root 15 0 2080m 977m 4708 S 0.0 24.8 0:00.10 cma
4397 root 16 0 2080m 977m 4708 S 0.0 24.8 3:47.36 cma
4398 root 15 0 2080m 977m 4708 S 0.0 24.8 2:31.40 cma
4399 root 15 0 2080m 977m 4708 S 0.0 24.8 0:00.34 cma
4400 root 18 0 2080m 977m 4708 S 0.0 24.8 0:00.00 cma
4403 root 15 0 2080m 977m 4708 S 0.0 24.8 0:47.36 cma
4404 root 18 0 2080m 977m 4708 S 0.0 24.8 0:00.07 cma
4405 root 18 0 2080m 977m 4708 S 0.0 24.8 0:00.04 cma
4406 root 15 0 2080m 977m 4708 S 0.0 24.8 0:12.14 cma
4408 root 19 0 2080m 977m 4708 S 0.0 24.8 0:00.00 cma
Я нашел этот пост на форуме в прошлом году, и, очевидно, эти процессы связаны со сканированием на вирусы McAfee.
Я запустил pmap на одном из процессов, и это последняя строка вывода:
mapped: 2130892K writeable/private: 2113632K shared: 40K
Действительно ли этот процесс использует 2,1 ГБ памяти? Топ точно сообщает об использовании памяти>
Спасибо!
1 ответ
В столбце VIRT указывается общий размер сегментов виртуальной памяти, отображаемых в процессе - это включает в себя сам исполняемый файл, библиотеки, сегменты данных, стек, кучу, отображенные в память файлы и т. Д. В некотором смысле это общий объем памяти. что процесс в настоящее время имеет разрешение на то или иное касание (чтение, запись, выполнение). Процесс не обязательно использует все это, что является одной из нескольких причин, по которым столбец RES сообщает меньшее число. RES - это общий размер подмножества размера VIRT, который на данный момент фактически находится в физической памяти. Это лучший (но все же не очень хороший) показатель того, сколько памяти фактически использует процесс - тот факт, что он находится в памяти, указывает на то, что он использовался или в настоящее время активно используется. Однако, если в вашей системе много памяти, часть этого номера RES, возможно, была затронута 3 дня назад, а не с тех пор, поэтому она может не использоваться активно. И наоборот, если у вас недостаточно памяти, процесс может пытаться активно использовать больше, чем указывает в настоящее время RES, что приведет к подкачке / обмену и проблемам с производительностью.
Кроме того, существует тенденция к тому, что некоторые типы памяти (исполняемые файлы, библиотеки) распределяются между несколькими экземплярами программы, наличием разделяемой памяти типа IPC и несколькими другими факторами, которые влияют на то, "сколько памяти использует этот процесс?"...
Другими словами, это не такой простой вопрос, как вы можете себе представить...