2013-11-16 11 views
0

У меня есть много примеров процесса, выполняющегося на моем хосте, каждый, казалось бы, потребляющий большой объем памяти.использование памяти процессом linux

пс Окс на процессы дают мне следующую информацию

blah1 18634 0.0 0.4 131852 31188 pts/15 Ssl+ 00:27 0:00 myPgm 
blah2 18859 0.0 0.3 131292 30656 pts/32 Sl+ 01:17 0:00 myPgm 
blah3 19813 0.0 0.4 131960 31220 pts/44 Ssl+ 01:17 0:00 myPgm 
blah4 20228 0.1 0.3 131728 31036 pts/54 Ssl+ 01:41 0:00 myPgm 
blah5 20238 0.0 0.3 131688 30932 pts/20 Sl+ Nov15 0:00 myPgm 
blah6 21181 0.0 0.3 131304 30632 pts/25 Sl+ Nov15 0:00 myPgm 
blah7 21278 0.0 0.3 131824 31096 pts/61 Ssl+ Nov15 0:00 myPgm 
blah8 21821 0.0 0.3 131444 30808 pts/7 Sl+ 00:54 0:00 myPgm 

Так VSZ всегда вокруг 130 MB и RSS около 30 Мб. ртар для процессов имеют следующие данные: Для 18634:

mapped: 131852K writeable/private: 59692K shared: 28K 

Для 21181:

mapped: 131304K writeable/private: 59144K shared: 28K 

и аналогичные значения для других процессов, а также. Хост имеет 7 ГБ физической памяти. Время от времени у меня около 700 до 800 экземпляров того же процесса, что и на хосте. Я пытаюсь понять, сколько памяти каждый процесс потребляет в действительности. Если я беру «writeable/private» в качестве фактического использования памяти в каждом процессе, тогда 58 МБ для каждого процесса приведет к 45 ГБ (для 800 процессов), что является безумным. Может ли кто-нибудь объяснить, если я сделаю это неправильно и как следует делать расчет?

Также бесплатно -k дает

   total  used  free  shared buffers  cached 
Mem:  7782580 4802104 2980476   0  380192 1931708 
-/+ buffers/cache: 2490204 5292376 
Swap:  1048568   32 1048536 

Похоже, не так много свопа используется, теперь где же память для каждого процесса взялось? Благодарю.

ответ

1

Вы не знаете, что такое VSZ. Вы думаете, что знаете, но факты говорят иначе, поэтому вам нужно выяснить, что это такое.

VZS - это размер виртуальной памяти, и все это требуется для процесса, включая общую память. Вот почему вы не можете просто суммировать (VSZ) и ожидать получить меньше физического объема памяти + своп.

Подключенный памяти в ртар, вероятно, соответствует VSZ и записываемый/частное, я думаю, это память, которая разделяет некоторых процессов, где каждый из них имеет доступ к этой памяти (писать, как распределяются их родительского процесса или так).

Чтобы понять это, вам нужно понять, как работает распределение памяти и доступ, что сложно. http://emilics.com/blog/article/mconsumption.html Эта статья, кажется, объясняет это в некоторых деталях (но я читал это только на беглом пути)

+0

Спасибо за ваш ответ. Я знаю, что VSZ не является фактической памятью, используемой каждым отдельным процессом, поэтому я суммировал конфиденциальную/записываемую память (предполагая, что это может быть фактическое использование), и даже это кажется слишком высоким. Я рассмотрю статью, которую вы связали. – broun

Смежные вопросы