Process.VMSize() Linux

Started by dzin88, November 21, 2015, 12:09:27 PM

Previous topic - Next topic

dzin88

Категорически приветствую!!


Имею конфуз, параметр Process.VMSize(), при указании в качестве процесса apache2, имеет показания памяти в 11 раз большее, чем оно есть на самом деле.

В NetXMS:
Process.VMSize(apache2) = 3850588160

В Системе:
cat /proc/2499/status
Name:   apache2
State:  S (sleeping)
Tgid:   2499
Ngid:   0
Pid:    2499
PPid:   1
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 64
Groups: 0
VmPeak:   537164 kB
VmSize:   537164 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:     31240 kB
VmRSS:     31224 kB
VmData:    81056 kB
VmStk:       136 kB
VmExe:       596 kB
VmLib:     71476 kB
VmPTE:       612 kB
VmSwap:        0 kB
Threads:        1
SigQ:   0/3832
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001001000
SigCgt: 00000001880046eb
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
Seccomp:        0
Cpus_allowed:   fff
Cpus_allowed_list:      0-11
Mems_allowed:   00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        2776497
nonvoluntary_ctxt_switches:     7849

ps aux | head -n 1; ps aux | grep apache2 | grep -v grep
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2499  0.0  0.5 537164 31224 ?        Ss   Oct20   2:25 /usr/sbin/apache2 -k start
www-data 14309  0.0  0.1 537196  9908 ?        S    11:47   0:00 /usr/sbin/apache2 -k start
www-data 14310  0.0  0.1 537196  9908 ?        S    11:47   0:00 /usr/sbin/apache2 -k start
www-data 14311  0.0  0.1 537196  9908 ?        S    11:47   0:00 /usr/sbin/apache2 -k start
www-data 14312  0.0  0.1 537196  9908 ?        S    11:47   0:00 /usr/sbin/apache2 -k start
www-data 14313  0.0  0.1 537196  9908 ?        S    11:47   0:00 /usr/sbin/apache2 -k start
www-data 14327  0.0  0.1 537196  9908 ?        S    11:47   0:00 /usr/sbin/apache2 -k start

Даже суммируя все треды, не могу получить значение = 3850588160.

top -n 1 -p 2499

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
2499 root      20   0  537164  31224  22084 S   0.0  0.6   2:25.84 apache2


OS: Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-40-generic x86_64)
Agent's version: 2.0-RC2
Server: 2.0-RC2-3

Остальные процессы имеют неточность в значении на 2-3%, предполагаю это из-за стандартного модификатора (который при отображении показывает число в Gb,Mb ), который делит полученное значение на 1000, а не на 1024, приходится делать для всех процессов модификатор $1/1024/1024*1000*1000.

Мб, я не правильно посмотрел в системе ?

Есть идеи, что я делаю не так ?

Workaroud для меня:

Дописал модификатор $1/11.0005999/1024/1024*1000*1000 получил точное значение VMSize для процесса apache2.

Victor Kirhenshtein

Вроде как все правильно получается: у нас 7 процессов с именем apache2, каждый потребляет 537164 KB. 537164 * 7 * 1024 дает 3850391552, что близко к значению, полученному с агента (разница из-за того, что между двумя командами объем памяти, занятой одним или несколькими процессами, изменился).