Сравнение размера виртуальной памяти с размером резидента

Я столкнулся с этой записью stackoverflow:

https://stackoverflow.com/questions/10400751/how-do-vmrss-and-resident-set-size-match

] Ответ проголосовал правильно:

«Итак, VSS должен быть больше, чем RSS. Если они близки к равным, это означает, что ваш процесс удобно находится в памяти. Если VSS намного больше, это означает, что памяти недостаточно, и ее части должны быть заменены на диск (т. е. из-за конкурирующего процесса и т. д.).

Это утверждение меня смущает, потому что, когда я проверяю мои системы, я замечаю следующее.

Во-первых, я замечаю, что у меня много свободной памяти:

$ cat /proc/meminfo
MemTotal:        6113156 kB
MemFree:         3668992 kB

Это означает, что у меня есть 3,5 гигабайта чистой памяти (без обмена, без диска и т. д.) [!d7 ]

Однако, когда я смотрю на мои порожденные дочерние процессы apache2, я удивляюсь:

$ ps aux | grep apache2
USER       PID  %CPU %MEM  VSZ  RSS     TTY   STAT START    TIME    COMMAND
root      1130  0.0  0.1 149080 10600 ?        Ss   Jul11   0:03 /usr/sbin/apache2 -k start
www-data 23211  0.0  0.3 163408 23784 ?        S    10:34   0:03 /usr/sbin/apache2 -k start
www-data 23215  0.0  0.4 164436 24832 ?        S    10:34   0:02 /usr/sbin/apache2 -k start
www-data 23287  0.0  0.3 163608 23992 ?        S    10:36   0:02 /usr/sbin/apache2 -k start
www-data 23351  0.0  0.3 163660 24064 ?        S    10:40   0:01 /usr/sbin/apache2 -k start
www-data 23440  0.0  0.3 161580 23588 ?        S    10:46   0:00 /usr/sbin/apache2 -k start
www-data 24393  0.0  0.3 163620 23496 ?        S    11:32   0:00 /usr/sbin/apache2 -k start
www-data 25377  0.0  0.2 150656 12316 ?        S    12:20   0:00 /usr/sbin/apache2 -k start
www-data 25378  0.0  0.3 158224 18400 ?        S    12:20   0:00 /usr/sbin/apache2 -k start
www-data 27038  0.0  0.1 149360  7816 ?        S    13:01   0:00 /usr/sbin/apache2 -k start
www-data 27041  0.0  0.1 149368  7660 ?        S    13:01   0:00 /usr/sbin/apache2 -k start
1000     27124  0.0  0.0   8112   900 pts/0    S+   13:04   0:00 grep apache2

(Обратите внимание, что grep удаляет заголовки столбцов, поэтому я их искусственно добавляю) [!d9 ]

Посмотрите, насколько большая виртуальная память сравнивается с резидентной памятью. Я имею в виду, например, для родительского процесса apache (родительский процесс - 1130):

$ ps xao pid,ppid,pgid,sid,comm | grep apache2 
 1130     1  1130  1130 apache2
23211  1130  1130  1130 apache2
23440  1130  1130  1130 apache2
27038  1130  1130  1130 apache2
27041  1130  1130  1130 apache2
27183  1130  1130  1130 apache2
27242  1130  1130  1130 apache2
27349  1130  1130  1130 apache2
27405  1130  1130  1130 apache2
27456  1130  1130  1130 apache2
27457  1130  1130  1130 apache2

Этот родительский процесс занимает 146 мегабайт виртуальной памяти по сравнению с 10 мегабайтами резидентной памяти. Это разница в использовании 136 мегабайт пространства подкачки!

Так что это не имеет смысла для меня. У меня столько свободной памяти, но она использует гораздо больше пространства подкачки? Согласно сообщению в stackoverflow, он говорит, что «значит, недостаточно памяти». Ну, это неправда. У меня много памяти.

1
задан 23 May 2017 в 15:39

0 ответов

Другие вопросы по тегам:

Похожие вопросы: