Linux で「メモリが!」というときに叩きたいコマンド

`vmstat` とか `top` もあるけどね。

## free

free があると心が落ち着きますね。cached が大きいだけだと安心しますね。

```shell-session
$ free
             total       used       free     shared    buffers     cached
Mem:       3860692    1521364    2339328          0      85388    1049928
-/+ buffers/cache:     386048    3474644
Swap:            0          0          0
```

## ps auxwwO-r

プロセスごとのメモリはこれで見れるかな。まぁ O-r はソートなので好きなのに変えたら良い。

```shell-session
$ ps auxwwO-r | head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      6912  0.0  0.1 111688  4276 ?        Ss   Apr01   0:00 sshd: ec2-user [priv]
ec2-user  6914  0.0  0.0 111820  2540 ?        S    Apr01   0:02 sshd: ec2-user@pts/0,pts/1,pts/2
ec2-user  8151  0.4  0.0 121992  2420 pts/1    Ss+  Apr01   5:13 -bash
ec2-user  9257  0.0  0.0 117488  2188 pts/0    Ss+  Apr01   0:00 -bash
ec2-user 29292  0.0  0.0 117384  2132 pts/2    Ss   04:11   0:00 -bash
root      1593  0.0  0.0  89044  2116 ?        Ss   Mar13   0:27 sendmail: accepting connections
smmsp     1600  0.0  0.0  80500  1692 ?        Ss   Mar13   0:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root     23677  0.0  0.0 183768  1416 ?        Sl   Mar29   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root     23590  0.0  0.0  77936  1288 ?        Ss   Mar29   0:00 /usr/sbin/sshd
```

## cat /proc/meminfo

結果が長いし何だか良く分からないぜ! でも Active とか Inactive とか字面に騙されちゃいけないってじっちゃんが言ってました。きっと [/proc/meminfoを考える - めもめも](http://d.hatena.ne.jp/enakai00/20110906/1315315488) を通りすがると色々分かるようになるに違いありません。

```shell-session
$ cat /proc/meminfo | head -n 25
MemTotal:        3860692 kB
MemFree:         2339320 kB
Buffers:           85388 kB
Cached:          1049928 kB
SwapCached:            0 kB
Active:           443068 kB
Inactive:         704024 kB
Active(anon):      11788 kB
Inactive(anon):      392 kB
Active(file):     431280 kB
Inactive(file):   703632 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         11824 kB
Mapped:             7440 kB
Shmem:               404 kB
Slab:             329724 kB
SReclaimable:     318664 kB
SUnreclaim:        11060 kB
KernelStack:         544 kB
PageTables:         1976 kB
```

### dstat -tclmgdnpy --tcp 5

ぼーっと眺めていると、それだけで癒されますね。もぉ熱帯魚なんて飼わなくても大丈夫です。どんだけ増すかはターミナルの幅と相談しましょう

```shell-session
$ dstat -tclmgdnpy --tcp 5
----system---- ----total-cpu-usage---- ---load-avg--- ------memory-usage----- ---paging-- -dsk/total- -net/total- ---procs--- ---system-- ----tcp-sockets----
  date/time   |usr sys idl wai hiq siq| 1m   5m  15m | used  buff  cach  free|  in   out | read  writ| recv  send|run blk new| int   csw |lis act syn tim clo
02-04 04:42:15|  0   0 100   0   0   0|   0 0.01 0.05| 381M 83.5M 1026M 2279M|   0     0 |2750B 3152B|   0     0 |  0   0 1.3|  27    20 |  3   1   0   0   0
02-04 04:42:20|  0   0 100   0   0   0|   0 0.01 0.05| 381M 83.5M 1026M 2279M|   0     0 |   0     0 |  66B  133B|  0   0   0|  22    13 |  3   1   0   0   0
02-04 04:42:25|  0   0 100   0   0   0|   0 0.01 0.05| 381M 83.5M 1026M 2279M|   0     0 |   0     0 |  66B  120B|  0   0   0|  21    13 |  3   1   0   0   0
02-04 04:42:30|  0   0 100   0   0   0|   0 0.01 0.05| 381M 83.5M 1026M 2279M|   0     0 |   0     0 |  66B  120B|  0   0   0|  19    12 |  3   1   0   0   0
02-04 04:42:35|  0   0 100   0   0   0|   0 0.01 0.05| 381M 83.5M 1026M 2279M|   0     0 |   0     0 |  66B  117B|  0   0   0|  21    12 |  3   1   0   0   0
```

## sudo slabtop -o -s c

こっちはあんまり癒されませんね。dentry め!! という感じです。

```shell-session
$ sudo slabtop -o -s c | head -n 15
 Active / Total Objects (% used)    : 1695897 / 1700554 (99.7%)
 Active / Total Slabs (% used)      : 71781 / 71781 (100.0%)
 Active / Total Caches (% used)     : 67 / 96 (69.8%)
 Active / Total Size (% used)       : 323362.33K / 325133.74K (99.5%)
 Minimum / Average / Maximum Object : 0.01K / 0.19K / 8.00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
1297464 1297464 100%    0.19K  61784       21    247136K dentry
 37074  37074 100%    0.86K   1002       37     32064K ext4_inode_cache
263913 263913 100%    0.10K   6767       39     27068K buffer_head
 14287  14287 100%    0.55K    511       28      8176K radix_tree_node
  5336   4999  93%    0.55K    184       29      2944K inode_cache
 26860  25982  96%    0.05K    316       85      1264K shared_policy_node
  8604   8604 100%    0.11K    239       36       956K sysfs_dir_cache
  2912   1971  67%    0.25K     91       32       728K kmalloc-256
```

## while true; do date '+%H:%M:%S ' | tr -d '\n'; cat /proc/sys/fs/dentry-state; sleep 5; done

こんなもんそうそう叩く機会は無いか....

```shell-session
$ while true; do date '+%H:%M:%S ' | tr -d '\n'; cat /proc/sys/fs/dentry-state; sleep 5; done
05:01:00 1297322        1291697 45      0       0       0
05:01:05 1297322        1291697 45      0       0       0
05:01:10 1297322        1291697 45      0       0       0
05:01:15 1297322        1291697 45      0       0       0
```