🤖

メモリ使用量についてのメモ

2021/12/29に公開

最近、ちょっと調べてみたのでメモ。

全体のメモリ使用量

$ free
             total       used       free     shared    buffers     cached
Mem:       1697880     217852    1480028          0       9736      68932
-/+ buffers/cache:     139184    1558696
Swap:       917500         16     917484

こんな感じで表示される

-/+ buffers/cache

usedが実際に使用されているメモリ。

プロセス毎のメモリ使用量

  • RSSでソート
$ ps aux --sort -rss
  • VSZでソート
$ ps aux --sort -vsize

これでメモリを食ってるプロセスを特定できる。

  • RSSの合計
$ ps aux | tail -n +2 | awk -F' ' '{sum += $6} END {print sum}'

で計算できる。(共有メモリとかもあるだろうから実際よりも多めな数字)

それでもメモリが少ない?

Zabbixを見るとやたらUsedが少ないマシンがあった。

役割が同じ別のマシンをみるともっとUsedは少ない。

psでプロセス毎の使用量見てみると差がなかった。

  • meminfoを見てみる
$ cat /proc/meminfo
MemTotal:        1697880 kB
MemFree:         1476812 kB
Buffers:           11360 kB
Cached:            70192 kB
SwapCached:           12 kB
Active:           149724 kB
Inactive:          34712 kB
Active(anon):      89184 kB
Inactive(anon):    13996 kB
Active(file):      60540 kB
Inactive(file):    20716 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        917500 kB
SwapFree:         917484 kB
Dirty:             31400 kB
Writeback:             0 kB
AnonPages:        102900 kB
Mapped:            58332 kB
Shmem:               296 kB
Slab:              16120 kB
SReclaimable:       8636 kB
SUnreclaim:         7484 kB
KernelStack:         784 kB
PageTables:         7008 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1766440 kB
Committed_AS:     240912 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        9272 kB
VmallocChunk:   34359727456 kB

これをみた時にSlabの値が大きく違った。(Usedの差分とほぼ同じくらい)

これはカーネル内のメモリ領域らしい。

だから、別に異常な状態ではなかった。

キャッシュ周りを解放する

別に解放しなくてもいいのだけど一応手順を。

  • ページキャッシュのみ解放
# echo 1 > /proc/sys/vm/drop_caches
  • Slabキャッシュのみ解放
# echo 2 > /proc/sys/vm/drop_caches
  • ページキャッシュとSlabキャッシュを解放
# echo 3 > /proc/sys/vm/drop_caches

Discussion