Question

System memory is consumed by ~140MB after running process, but process took only ~8MB. This process (openttd dedicaded server) is completely standalone (does not communicate with others processes).

Before

free -m
             total       used       free     shared    buffers     cached
Mem:          1000        777        222          0          0          0
-/+ buffers/cache:        777        222
Swap:            0          0          0

After

free -m 
             total       used       free     shared    buffers     cached
Mem:          1000        913         86          0          0          0
-/+ buffers/cache:        913         86
Swap:            0          0          0

Process map

pmap 18428 -x
18428:   /var/www/ttd-server/openttd_1.2.3 -s null -m null -x -c /var/www/ttd-server    /configuration/preload/openttd.cfg -D
Address           Kbytes     RSS   Dirty Mode   Mapping
0000000000400000       0    2948       0 r-x--  openttd_1.2.3
0000000000aee000       0      64      48 rw---  openttd_1.2.3
0000000000afe000       0     588     584 rw---    [ anon ]
000000001c66d000       0    2516    2516 rw---    [ anon ]
00002ba83f5a7000       0     100       0 r-x--  ld-2.11.3.so
00002ba83f5c5000       0     256     256 rw---    [ anon ]
00002ba83f7c4000       0       4       4 r----  ld-2.11.3.so
00002ba83f7c5000       0       4       4 rw---  ld-2.11.3.so
00002ba83f7c6000       0       4       4 rw---    [ anon ]
00002ba83f7c7000       0     380       0 r-x--  libstdc++.so.6.0.13
00002ba83f8bd000       0       0       0 -----  libstdc++.so.6.0.13
00002ba83fabd000       0      28      28 r----  libstdc++.so.6.0.13
00002ba83fac4000       0       8       8 rw---  libstdc++.so.6.0.13
00002ba83fac6000       0       4       4 rw---    [ anon ]
00002ba83fadb000       0      52       0 r-x--  libpthread-2.11.3.so
00002ba83faf2000       0       0       0 -----  libpthread-2.11.3.so
00002ba83fcf1000       0       4       4 r----  libpthread-2.11.3.so
00002ba83fcf2000       0       4       4 rw---  libpthread-2.11.3.so
00002ba83fcf3000       0       8       8 rw---    [ anon ]
00002ba83fcf8000       0     112       0 r-x--  libm-2.11.3.so
00002ba83fd78000       0       0       0 -----  libm-2.11.3.so
00002ba83ff78000       0       4       4 r----  libm-2.11.3.so
00002ba83ff79000       0       4       4 rw---  libm-2.11.3.so
00002ba83ff7a000       0     460       0 r-x--  libc-2.11.3.so
00002ba8400d3000       0       0       0 -----  libc-2.11.3.so
00002ba8402d2000       0      16      16 r----  libc-2.11.3.so
00002ba8402d6000       0       4       4 rw---  libc-2.11.3.so
00002ba8402d7000       0      16      16 rw---    [ anon ]
00002ba8402dc000       0      16       0 r-x--  libgcc_s.so.1
00002ba8402f2000       0       0       0 -----  libgcc_s.so.1
00002ba8404f1000       0       4       4 rw---  libgcc_s.so.1
00002ba8404f2000       0     104     104 rw---    [ anon ]
00002ba848565000       0     284     284 rw---    [ anon ]
00007fff900e4000       0      44      44 rw---    [ stack ]
00007fff901fd000       0       8       0 r-x--    [ anon ]
ffffffffff600000       0       0       0 -----    [ anon ]
----------------  ------  ------  ------
total kB          162884    8048    3952

top before (sorted by RES)

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                         
15801 www-data  17   0 1320m 173m 4036 S  1.3 17.4   0:54.75 java                                                                                                            
 1518 ejabberd  15   0 99684  54m 3724 S  0.0  5.5  18:05.64 beam                                                                                                            
 7917 www-data  15   0  124m  47m 2204 S  0.0  4.8   0:02.43 plackup                                                                                                         
 8039 www-data  15   0  123m  46m 2204 S  0.0  4.7   0:02.38 plackup                                                                                                         
32439 www-data  15   0  116m  42m 2812 S  0.0  4.2   0:42.54 plackup                                                                                                         
29708 mysql     15   0  170m  38m 7556 S  0.0  3.9 187:51.36 mysqld                                                                                                          
32247 www-data  15   0  141m  38m 3376 S  0.0  3.8   0:08.01 plackup                                                                                                         
 6025 www-data  15   0  176m  37m 4532 S  0.0  3.7   0:06.17 php-cgi                                                                                                         
 3248 www-data  15   0  172m  33m 4544 S  0.0  3.4   0:10.55 php-cgi                                                                                                         
 3591 www-data  15   0  123m  32m 3080 S  0.0  3.3   9:09.46 plackup                                                                                                         
32303 www-data  15   0  250m  32m 6364 S  0.3  3.3  17:54.92 mongod                                                                                                          
24324 send2me   16   0 53340  14m 3088 S  0.0  1.5   0:03.00 perl                                                                                                            
26584 bind      25   0 93800  11m 2352 S  0.0  1.1   0:00.17 named                                                                                                           
20045 root      15   0  110m 9288 6876 S  0.0  0.9   2:18.20 ispmgr                                                                                                          
15574 www-data  18   0  144m 9168 5732 S  0.0  0.9   0:00.07 php-cgi                                                                                                         
30220 www-data  15   0 37420 9148 2936 S  0.0  0.9   1:29.11 websockify.py                                                                                                   
 9935 root      16   0 83864 3688 2856 S  0.0  0.4   0:00.02 sshd

top after (sorted by RES):

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                         
15801 www-data  17   0 1320m 173m 4036 S  1.3 17.4   0:53.77 java                                                                                                            
 1518 ejabberd  15   0 99684  54m 3724 S  0.0  5.5  18:05.62 beam                                                                                                            
 7917 www-data  15   0  124m  47m 2204 S  0.0  4.8   0:02.42 plackup                                                                                                         
 8039 www-data  15   0  123m  46m 2204 S  0.0  4.7   0:02.37 plackup                                                                                                         
32439 www-data  15   0  116m  42m 2812 S  0.0  4.2   0:42.54 plackup                                                                                                         
29708 mysql     15   0  170m  38m 7556 S  0.0  3.9 187:51.34 mysqld                                                                                                          
32247 www-data  15   0  141m  38m 3376 S  0.0  3.8   0:08.01 plackup                                                                                                         
 6025 www-data  15   0  176m  37m 4532 S  0.0  3.7   0:06.17 php-cgi                                                                                                         
 3248 www-data  15   0  172m  33m 4544 S  0.0  3.4   0:10.55 php-cgi                                                                                                         
 3591 www-data  15   0  123m  32m 3080 S  0.0  3.3   9:09.44 plackup                                                                                                         
32303 www-data  15   0  250m  32m 6364 R  0.3  3.3  17:54.61 mongod                                                                                                          
24324 send2me   16   0 53340  14m 3088 S  0.0  1.5   0:03.00 perl                                                                                                            
26584 bind      25   0 93800  11m 2352 S  0.0  1.1   0:00.17 named                                                                                                           
20045 root      15   0  110m 9288 6876 S  0.0  0.9   2:18.19 ispmgr                                                                                                          
15574 www-data  18   0  144m 9168 5732 S  0.0  0.9   0:00.07 php-cgi                                                                                                         
30220 www-data  15   0 37420 9148 2936 S  0.0  0.9   1:29.11 websockify.py                                        

18428 www-data  16   0  151m 8048 4096 R  0.0  0.8   0:00.30 openttd_1.2.3

 9935 root      16   0 83864 3688 2856 S  0.0  0.4   0:00.02 sshd

Looks like virtual memory of process located in physical memory, but why? For example java process have 1320MB of virtual memory but consumed only 173MB of real (mathced with RES), but openttd process have RES=8MB but consumes 136MB of real memory. What this is mean?

UPD.

My server is based on OpenVZ.
Openttd compiled in single threaded mode.
On the real PC there are no problem.

ulimit -a

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 128
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
Was it helpful?

Solution

There is problem in memory model of OpenVZ. When i call malloc(128 * 1024 * 1024) on PC total free memory does not consumed or consumed a little because it not really used by application. But if i call malloc under OpenVZ it is immediately consumes 128Mb of free memory. So when programming for OpenVZ you should no preallocate huge space of memory which not be used.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top