# [SOLVED] mysteriously used RAM

## tnt

I've tried to stop all non-necessary services, and my box still "uses" more then 3GB of RAM excluding caches and buffers.

```
free -m

             total       used       free     shared    buffers     cached

Mem:          7994       6929       1064          0        591       3178

-/+ buffers/cache:       3159       4834

Swap:        12299          5      12293
```

using ps aux, top and htop did not help finding memory hungry application/daemon, just <30MB for named:

http://imageshack.us/photo/my-images/833/32037839.png/

is there some other way to find what uses so much memory?

----------

## Hypnos

You can get the mem info "straight from the horse's mouth" with 

```
# cat /proc/meminfo
```

and then go process by process in /proc , e.g.

```
# cat /proc/2517/status
```

where you replace "2517" with the process # you are examining.

----------

## tnt

/proc/meminfo gives results similar to free (as free shoud use /proc/meminfo):

```
MemTotal:        8185896 kB

MemFree:          423976 kB

Buffers:          842768 kB

Cached:          3186072 kB

SwapCached:         3716 kB

Active:          1519988 kB

Inactive:        2551120 kB

Active(anon):      28940 kB

Inactive(anon):    13508 kB

Active(file):    1491048 kB

Inactive(file):  2537612 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:      12594944 kB

SwapFree:       12588880 kB

Dirty:              2312 kB

Writeback:             0 kB

AnonPages:         40212 kB

Mapped:            11888 kB

Shmem:               144 kB

Slab:            3391152 kB

SReclaimable:    3223888 kB

SUnreclaim:       167264 kB

KernelStack:        1472 kB

PageTables:         3172 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:    16687892 kB

Committed_AS:     118740 kB

VmallocTotal:   34359738367 kB

VmallocUsed:      271212 kB

VmallocChunk:   34359457788 kB

AnonHugePages:         0 kB

HugePages_Total:       0

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:        5568 kB

DirectMap2M:     8382464 kB
```

and greping all existing processes' stats for VmSize (even VM, not real memory used) gives:

```
VmSize:     4072 kB

VmSize:   104544 kB

VmSize:     9660 kB

VmSize:    36912 kB

VmSize:    52880 kB

VmSize:    29312 kB

VmSize:    52960 kB

VmSize:    69628 kB

VmSize:    17948 kB

VmSize:    43904 kB

VmSize:    18072 kB

VmSize:    57272 kB

VmSize:    39852 kB

VmSize:    18052 kB

VmSize:    69628 kB

VmSize:    18048 kB

VmSize:    12904 kB

VmSize:    25408 kB

VmSize:     4092 kB

VmSize:    69628 kB

VmSize:    18052 kB

VmSize:    69628 kB

VmSize:    18052 kB

VmSize:    22456 kB

VmSize:    56520 kB

VmSize:    12700 kB

VmSize:    15024 kB

VmSize:    25292 kB

VmSize:    31672 kB

VmSize:    25080 kB

VmSize:    16652 kB

VmSize:     4592 kB

VmSize:    19720 kB

VmSize:    16672 kB

VmSize:    10404 kB

VmSize:    10404 kB

VmSize:    10404 kB

VmSize:    10404 kB

VmSize:    10404 kB

VmSize:    10404 kB

VmSize:    12900 kB

VmSize:    12900 kB

VmSize:    21644 kB
```

wich gives the sum of 1216756 KB => 1188 MB => 1.16 GB

still, using values from /proc/meminfo, memory used by processes is:

8185896 kB (MemTotal) - 423976 kB (MemFree) - 842768 kB (Buffers) - 3186072 kB (Cached) = 3733080 kB 

so, I have 2.4 GB of RAM Missing In Action...  :Sad: 

----------

## tnt

interestingly enough, reboot makes system use small amount of RAM, but in very short time (couple of minutes, literally) it goes back to the same RAM usage as I've described.  :Sad: 

here's the output of "ps aux" (I've added dhcpd and samba to the list of services that are turned on):

```
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.1  0.0   4072   720 ?        Ss   03:51   0:00 init [3]  

root         2  0.0  0.0      0     0 ?        S    03:51   0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    03:51   0:00 [ksoftirqd/0]

root         4  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/0:0]

root         5  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:0]

root         6  0.0  0.0      0     0 ?        S    03:51   0:00 [migration/0]

root         7  0.0  0.0      0     0 ?        S    03:51   0:00 [migration/1]

root         8  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/1:0]

root         9  0.0  0.0      0     0 ?        S    03:51   0:00 [ksoftirqd/1]

root        10  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/0:1]

root        11  0.0  0.0      0     0 ?        S<   03:51   0:00 [khelper]

root        12  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:1]

root        15  0.0  0.0      0     0 ?        S<   03:51   0:00 [netns]

root       182  0.0  0.0      0     0 ?        S    03:51   0:00 [sync_supers]

root       184  0.0  0.0      0     0 ?        S    03:51   0:00 [bdi-default]

root       186  0.0  0.0      0     0 ?        S<   03:51   0:00 [kblockd]

root       320  0.0  0.0      0     0 ?        S<   03:51   0:00 [ata_sff]

root       327  0.0  0.0      0     0 ?        S    03:51   0:00 [khubd]

root       334  0.0  0.0      0     0 ?        S<   03:51   0:00 [md]

root       339  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/1:1]

root       440  0.0  0.0      0     0 ?        S<   03:51   0:00 [rpciod]

root       470  0.0  0.0      0     0 ?        S    03:51   0:00 [kswapd0]

root       471  0.0  0.0      0     0 ?        SN   03:51   0:00 [ksmd]

root       537  0.0  0.0      0     0 ?        SN   03:51   0:00 [khugepaged]

root       538  0.0  0.0      0     0 ?        S    03:51   0:00 [fsnotify_mark]

root       558  0.0  0.0      0     0 ?        S<   03:51   0:00 [crypto]

root       568  0.0  0.0      0     0 ?        S<   03:51   0:00 [kthrotld]

root      1132  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:2]

root      1171  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_0]

root      1174  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_1]

root      1177  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_2]

root      1180  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_3]

root      1183  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_4]

root      1186  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_5]

root      1189  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:3]

root      1190  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:4]

root      1191  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:5]

root      1192  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:6]

root      1193  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:7]

root      1203  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_6]

root      1206  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_7]

root      1209  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_8]

root      1212  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:8]

root      1213  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:9]

root      1214  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:10]

root      1228  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_9]

root      1231  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_10]

root      1234  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_11]

root      1237  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_12]

root      1240  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:11]

root      1241  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:12]

root      1242  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:13]

root      1243  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:14]

root      1256  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_13]

root      1259  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_14]

root      1262  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_15]

root      1265  0.0  0.0      0     0 ?        S    03:51   0:00 [scsi_eh_16]

root      1268  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:15]

root      1269  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:16]

root      1270  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:17]

root      1271  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:18]

root      1377  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/0:2]

root      1384  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/u:19]

root      1388  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/1:2]

root      1572  0.0  0.0      0     0 ?        S    03:51   0:00 [md1_raid1]

root      1576  0.0  0.0      0     0 ?        S    03:51   0:00 [md0_raid1]

root      1578  0.0  0.0      0     0 ?        S    03:51   0:00 [jbd2/md1-8]

root      1579  0.0  0.0      0     0 ?        S<   03:51   0:00 [ext4-dio-unwrit]

root      1668  0.0  0.0  13020  1164 ?        S<s  03:51   0:00 /sbin/udevd --daemon

root      1782  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/0:3]

root      1784  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/0:4]

root      2072  0.0  0.0      0     0 ?        S    03:51   0:00 [md3_raid5]

root      2073  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/0:5]

root      2074  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/0:6]

root      2079  0.0  0.0      0     0 ?        S    03:51   0:00 [md4_raid5]

root      2080  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/1:3]

root      2081  0.0  0.0      0     0 ?        S    03:51   0:00 [kworker/1:4]

root      2087  0.0  0.0      0     0 ?        S    03:51   0:00 [md2_raid5]

root      2288  0.0  0.0      0     0 ?        S    03:52   0:00 [kworker/1:5]

root      2289  0.0  0.0      0     0 ?        S    03:52   0:00 [kworker/1:6]

root      2294  0.0  0.0      0     0 ?        S    03:52   0:00 [kworker/0:7]

root      2338  0.0  0.0      0     0 ?        S<   03:52   0:00 [reiserfs]

root      2339  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdc1-8]

root      2340  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2341  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdd1-8]

root      2342  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2343  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sde1-8]

root      2344  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2345  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/md3-8]

root      2346  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2347  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/md2-8]

root      2348  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2349  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/md4-8]

root      2350  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2351  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdm4-8]

root      2352  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2353  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdj6-8]

root      2354  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2355  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdk3-8]

root      2356  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2357  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdn5-8]

root      2358  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2359  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdo5-8]

root      2360  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2361  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdm6-8]

root      2362  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2363  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdo4-8]

root      2364  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2365  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdm3-8]

root      2366  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2367  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdp4-8]

root      2368  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2369  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdl3-8]

root      2370  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2371  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdc3-8]

root      2372  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2373  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdd3-8]

root      2374  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2375  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdn7-8]

root      2376  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2377  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdn4-8]

root      2378  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2379  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdp2-8]

root      2380  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2381  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdj3-8]

root      2382  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2383  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdm5-8]

root      2384  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2385  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdj5-8]

root      2386  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2387  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdl5-8]

root      2388  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2389  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdl4-8]

root      2390  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2391  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdk4-8]

root      2392  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2393  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdn6-8]

root      2394  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2395  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdj4-8]

root      2396  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2397  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sde3-8]

root      2398  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2399  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdp3-8]

root      2400  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2401  0.0  0.0      0     0 ?        S    03:52   0:00 [jbd2/sdo3-8]

root      2402  0.0  0.0      0     0 ?        S<   03:52   0:00 [ext4-dio-unwrit]

root      2477  0.0  0.0  13016  1116 ?        S<   03:52   0:00 /sbin/udevd --daemon

root      2478  0.0  0.0  13016  1116 ?        S<   03:52   0:00 /sbin/udevd --daemon

root      2577  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:32]

root      2578  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:48]

root      2579  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:64]

root      2580  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:144]

root      2581  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:160]

root      2582  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:176]

root      2583  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:192]

root      2584  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:208]

root      2585  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:224]

root      2586  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-8:240]

root      2587  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-9:1]

root      2588  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-9:4]

root      2589  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-9:3]

root      2590  0.0  0.0      0     0 ?        S    03:52   0:00 [flush-9:2]

root      3472  0.0  0.0  22456   532 ?        S    03:52   0:00 supervising syslog-ng

root      3473  0.0  0.0  56416  3424 ?        Ss   03:52   0:00 /usr/sbin/syslog-ng

root      3501  0.0  0.0  25080   880 ?        Ssl  03:52   0:00 /sbin/apcupsd -f /etc/apcupsd/apcupsd.conf -P /var/run/apcupsd.pid

at        3514  0.0  0.0  16652   460 ?        Ss   03:52   0:00 /usr/sbin/atd

named     3544  0.0  0.2 102244 22472 ?        Ssl  03:52   0:00 /usr/sbin/named -u named -t /var/chroot/bind

dhcp      3571  0.0  0.0  19024  5812 ?        Ss   03:52   0:00 /usr/sbin/dhcpd -cf /etc/dhcp/dhcpd.conf -q -pf /var/run/dhcp/dhcpd.pid -lf /var/lib/dhcp/dhcpd.leases -user dhcp -group dhcp eth0

root      3607  0.0  0.0   9528  1524 ?        Ss   03:52   0:00 /bin/bash /usr/sbin/fancontrol /etc/fancontrol

root      3748  0.0  0.0   4592   632 ?        Ss   03:52   0:00 mdadm --monitor --scan --daemonise --pid-file /var/run/mdadm.pid --syslog

root      3838  0.0  0.0  52872  3140 ?        Ss   03:52   0:00 /usr/sbin/smbd -D

root      3843  0.0  0.0  29304  1628 ?        Ss   03:52   0:00 /usr/sbin/nmbd -D

root      3857  0.0  0.0  52952  1380 ?        S    03:52   0:00 /usr/sbin/smbd -D

root      3859  0.0  0.0  12592  1124 ?        S    03:52   0:00 /usr/sbin/smartd -p /var/run/smartd.pid

root      3878  0.0  0.0  31672  1180 ?        Ss   03:52   0:00 /usr/sbin/sshd

root      3905  0.0  0.0  16672   868 ?        Ss   03:52   0:00 /usr/sbin/cron

root      3936  0.0  0.0  69628  3168 ?        Ss   03:52   0:00 sshd: root@pts/1 

root      3940  0.0  0.0  17948  1956 pts/1    Ss   03:52   0:00 -bash

root      3956  0.0  0.0  10404   960 tty1     Ss+  03:52   0:00 /sbin/agetty 38400 tty1 linux

root      3957  0.0  0.0  10404   960 tty2     Ss+  03:52   0:00 /sbin/agetty 38400 tty2 linux

root      3958  0.0  0.0  10404   960 tty3     Ss+  03:52   0:00 /sbin/agetty 38400 tty3 linux

root      3959  0.0  0.0  10404   960 tty4     Ss+  03:52   0:00 /sbin/agetty 38400 tty4 linux

root      3960  0.0  0.0  10404   960 tty5     Ss+  03:52   0:00 /sbin/agetty 38400 tty5 linux

root      3961  0.0  0.0  10404   960 tty6     Ss+  03:52   0:00 /sbin/agetty 38400 tty6 linux

root      3970  0.0  0.0  69628  3172 ?        Ss   03:53   0:00 sshd: root@pts/0 

root      3974  0.0  0.0  17948  1936 pts/0    Ss+  03:53   0:00 -bash

root      3981  0.0  0.0  69628  3172 ?        Ss   03:53   0:00 sshd: root@pts/2 

root      3985  0.0  0.0  17948  1932 pts/2    Ss+  03:53   0:00 -bash

root      4885  0.0  0.0   4060   536 ?        S    03:55   0:00 sleep 10

root      4886  1.0  0.0  15008  1100 pts/1    R+   03:55   0:00 ps axu
```

right after the reboot, free -m gives 134 MB used:

```
             total       used       free     shared    buffers     cached

Mem:          7994        199       7794          0         31         33

-/+ buffers/cache:        134       7860

Swap:        12299          0      12299
```

after a minute or two it is 1099 MB used:

```
             total       used       free     shared    buffers     cached

Mem:          7994       1464       6529          0        321         43

-/+ buffers/cache:       1099       6894

Swap:        12299          0      12299
```

and after a couple of minutes more - 2694 MB used:

```
             total       used       free     shared    buffers     cached

Mem:          7994       3474       4519          0        734         45

-/+ buffers/cache:       2694       5299

Swap:        12299          0      12299
```

in the meantime, all I did with that box was executing "free -m". no new services were started.

----------

## Hypnos

Does dmesg report anything while memory is getting eaten up?

Are you using a non-standard kernel sources (e.g., other than tuxonice-, vanilla- or gentoo-sources ?)

----------

## tnt

dmesg reports nothing strange:

some info about fs mounts, enabling eth ifaces, adding swaps and after that only some iptables messages I've defined to be logged.

I use

```
Linux titan 3.0.4-gentoo #1 SMP Tue Aug 30 17:47:33 CEST 2011 x86_64 Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz GenuineIntel GNU/Linux
```

with only one patch: patch-imqmq-3.0.diff from Linux IMQ project.

----------

## Hypnos

Is the machine disabled after the memory gets eaten up, or can you do things normally?  For example, can you create a tmpfs and fill it up without issue?

If the machine behaves normally, then it sounds like some kernel function is using the memory for cache -- the game would then be to figure out what.  Usually dmesg would be the place to look.

You can try backing out the kernel patch and see if anything changes.

----------

## Hypnos

Here's a script to compare the system and process-by-process memory totals:

```
#!/bin/sh

cd /proc

#

# System info

#

getmem() {

   echo "$(grep ^$1 $2 | sed -r 's/^([a-z:]+?)\W+?([0-9].+?)\WkB$/\2/')"

}

memtotal=$(getmem MemTotal meminfo)

memfree=$(getmem MemFree meminfo)

memswap=$(getmem SwapCached meminfo)

let memused=memtotal-memfree

#

# Process total

#

plist="$(ls | grep -v '[a-z]')"

psum() {

   ptotal=0

   for pnum in $plist; do

      if [ -f $pnum/status ]; then

         thisval=$(getmem $1 $pnum/status)

         let ptotal+=thisval

      fi

   done

   echo $ptotal

}

#procmem=$(($(psum VmHWM)+$(psum VmPTE)+$(psum VmLck)))

procmem=$(psum VmHWM)

procswap=$(psum VmSwap)

echo

pad="%8d  %8d  %8d\n"

printf "               SYSTEM   PROCESS       -/+\n\n"

printf "Mem in use : $pad" $memused $procmem $((memused-$procmem))

echo

printf "Swap in use: $pad" $memswap $procswap $(($memswap-$procswap))
```

Example output on my Thinkpad X301, running tuxonice-sources:

```
               SYSTEM   PROCESS       -/+

Mem in use :  1236672   1166540     70132

Swap in use:        0         0         0
```

The difference of 70M is on the same order as the 50MB usage reported by slabtop.

----------

## s4e8

use "slabtop -s c" find out which one using the slab memory.

 *tnt wrote:*   

> 
> 
> Slab:            3391152 kB
> 
> SReclaimable:    3223888 kB
> ...

 

----------

## tnt

thank you everybody and sorry for late reply. I was quite busy last few days.

I've tracked down the problem to the script I use to fill some RRDs for Squid.

I knew that that script is putting big load on three filesystems, but I had no idea it will eat so much RAM.

kernel eats RAM (slab), not the script itself, to be precise.

I have three Squid cache partitions: sdc1, sdd1 and sde1.

they have 500 thousands to 1 million of files each, as they have different replacing algorithms.

every 5 minutes I run scripts to collect all kinds of statistics. one of them collects Squid partitions usage and number of objects to later calculate average object size per partition. it looks like:

```
ionice -c2 -n7 find /var/cache/squid/sdc1/ -type f | wc -l

ionice -c2 -n7 du --apparent-size -s /var/cache/squid/sdc1 | cut -f1
```

for each partition.

since all three partitions are examined in parallel by different threads, everything is done in ~18 seconds.

during that 18 seconds, memory usage of whole system grows as I've described.

slaptop gives the ext4_inode_cache as primary slab-eater.

initialy, I was confused how come 'find' (piped to 'wc') and 'du' could use so much memory, as they should just sum some simple numbers they're getting from filesystem. I guess they do not have to keep anything big in memory - just produce some text output (per file for 'find', or per filesystem for 'du'). later I've found it's kernel filling the inode cache.

that memory (slab memory) eaten during the script execution will remain used until next high-cache-pressure event kicks in.

it could be copying of come big (couple of GB) file, or something similar. 

at that moment, is seems like cache memory squeezes used slab memory and makes more space for itself.

anyways, disabling that one script solved the memory usage problem, but I would still like to collect these statistics.

is there any not so slab-(or any other)-memory-hungry way to get the number of files and the space they occupy on some ext4 filesystem?

----------

## Hypnos

Is it a problem if the kernel uses up some RAM for this script?  Like you said, when it's needed for something else big, it's freed.

----------

## tnt

 *Hypnos wrote:*   

> Is it a problem if the kernel uses up some RAM for this script?  Like you said, when it's needed for something else big, it's freed.

 

well, yes, you're right...

but then again, even using that amount of RAM for a very short time pushes a lot of other applications' pages into the swap (memory usage I've represented in this thread is with just a minimum set of services running).

as the last resort I could make the script run once daily and lose real-time changes during the day.

there will be no big performance hit for applications to get their pages from the swap once a day, but getting them out of swap every 5 minutes sounds very bad.

----------

## Hypnos

Ah yes, disk swap, people still use that ...   :Razz: 

----------

## tnt

 *Hypnos wrote:*   

> Ah yes, disk swap, people still use that ...  

 

hehe, good one!  :Smile: 

well, I have opinion that there could be a lot of situations when kernel can decide that parts of RAM occupied by some idle applications are not so actively used and that they can be more efficiently used as caches/buffers. 

anyways, without this script my swap usage is <100MB.

with script it grows to ~1GB.

----------

## Akkara

 *tnt wrote:*   

> is there any not so slab-(or any other)-memory-hungry way to get the number of files and the space they occupy on some ext4 filesystem?

 

Perhaps try something using dd conv=direct ..., which I had read somewhere tries to do non-cached reads (I think... not a expert at this).

Also try echo 0 >/proc/sys/vm/swappiness.  That should reduce swapping to a absolute minimum.

----------

