web-dev-qa-db-ja.com

大量のバッファメモリ使用の原因を特定する方法

私は2.6カーネル(Centos 6.7)を実行している実稼働マシンを持っています。64GBのRAMのうち、18GBがバッファメモリに使用されているようです。

その18GBが何に使用されているのかを具体的に特定して、それが病的であるかどうかを判断できるようにすることに興味があります。

このマシンは、ビジーなフロントエンドロードバランサー+ Webサーバーであるため、着信接続と内部TCP接続が大量にあります。かなりの量の小さなディスクI/Oをランダムに実行して、大きな(数千万のファイル)ディレクトリツリーにします。また、Webサーバーのログファイルに大量のデータを書き込みます。おそらく1日あたり数十GBです。

私はslabtopを使用してみましたが、スラブのサイズはこの使用量の一部しか考慮していないようです(この記事の執筆時点では約8または9 GB)。

18 GBの構成をより明確に把握して、これが妥当かどうかを判断する方法はありますか?

基本的な診断は次のとおりです。

uname -a

Linux [HOSTNAME REMOVED] 2.6.32-431.11.2.el6.x86_64 #1 SMP Tue Mar 25 19:59:55 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

free -m

             total       used       free     shared    buffers     cached
Mem:         64377      64099        278         49      17935      34717
-/+ buffers/cache:      11446      52931
Swap:        32767        980      31787

/proc/meminfo

MemTotal:       65922808 kB
MemFree:          257868 kB
Buffers:        18353708 kB
Cached:         35536088 kB
SwapCached:        47708 kB
Active:         28975120 kB
Inactive:       27143572 kB
Active(anon):    1514004 kB
Inactive(anon):   765492 kB
Active(file):   27461116 kB
Inactive(file): 26378080 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      33554424 kB
SwapFree:       32550900 kB
Dirty:             15792 kB
Writeback:             0 kB
AnonPages:       2192080 kB
Mapped:            73996 kB
Shmem:             50516 kB
Slab:            8880128 kB
SReclaimable:    8392424 kB
SUnreclaim:       487704 kB
KernelStack:        8376 kB
PageTables:       139560 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    66515828 kB
Committed_AS:    6578468 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      393776 kB
VmallocChunk:   34325005944 kB
HardwareCorrupted:     0 kB
AnonHugePages:    167936 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        5056 kB
DirectMap2M:     2045952 kB
DirectMap1G:    65011712 kB

slabtop -sc

 Active / Total Objects (% used)    : 24709382 / 28507117 (86.7%)
 Active / Total Slabs (% used)      : 2211714 / 2211815 (100.0%)
 Active / Total Caches (% used)     : 107 / 183 (58.5%)
 Active / Total Size (% used)       : 8026764.94K / 8620046.54K (93.1%)
 Minimum / Average / Maximum Object : 0.02K / 0.30K / 4096.00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
5479168 5196414  94%    0.99K 1369792        4   5479168K ext4_inode_cache
6662980 6648409  99%    0.19K 333149       20   1332596K dentry
11147878 9956546  89%    0.10K 301294       37   1205176K buffer_head
626199 573720  91%    0.55K  89457        7    357828K radix_tree_node
3458639 1395404  40%    0.06K  58621       59    234484K size-64
309529 278095  89%    0.20K  16291       19     65164K vm_area_struct
 94365  83090  88%    0.25K   6291       15     25164K tw_sock_TCP
 74940  65974  88%    0.30K   6245       12     24980K nf_conntrack_ffffffff81b18540
  8668   8054  92%    1.69K   2167        4     17336K TCP
 98520  87434  88%    0.12K   3284       30     13136K size-128
   182    182 100%   32.12K    182        1     11648K kmem_cache
 10132   9261  91%    1.00K   2533        4     10132K size-1024
 49120  48320  98%    0.19K   2456       20      9824K size-192
157003 116353  74%    0.05K   2039       77      8156K anon_vma_chain
 10170   9082  89%    0.69K   2034        5      8136K sock_inode_cache
 20090  13010  64%    0.38K   2009       10      8036K ip_dst_cache
 28620  18268  63%    0.19K   1431       20      5724K filp
  5856   5069  86%    0.64K    976        6      3904K proc_inode_cache
   918    911  99%    4.00K    918        1      3672K size-4096
 76176  45154  59%    0.04K    828       92      3312K anon_vma
  4055   3986  98%    0.77K    811        5      3244K shmem_inode_cache
  4686   4500  96%    0.58K    781        6      3124K inode_cache
 20979  20965  99%    0.14K    777       27      3108K sysfs_dir_cache
  1155   1053  91%    2.59K    385        3      3080K task_struct
  5082   4059  79%    0.50K    726        7      2904K skbuff_fclone_cache
  1396   1331  95%    2.00K    698        2      2792K size-2048
  1029    927  90%    2.06K    343        3      2744K sighand_cache
    35     35 100%   64.00K     35        1      2240K size-65536
   139    108  77%   16.00K    139        1      2224K size-16384
  3760   3566  94%    0.50K    470        8      1880K size-512
  8660   4042  46%    0.19K    433       20      1732K cred_jar
 24898  22924  92%    0.06K    422       59      1688K tcp_bind_bucket
 12030   9242  76%    0.12K    401       30      1604K eventpoll_epi
   166    143  86%    8.00K    166        1      1328K size-8192
  1162    927  79%    1.06K    166        7      1328K signal_cache
 32592  28332  86%    0.03K    291      112      1164K size-32
  3945   2357  59%    0.25K    263       15      1052K skbuff_head_cache
   640    465  72%    1.38K    128        5      1024K mm_struct
   254    254 100%    4.00K    254        1      1016K names_cache
 12243   9382  76%    0.07K    231       53       924K eventpoll_pwq
     7      7 100%  128.00K      7        1       896K size-131072
   990    563  56%    0.81K    110        9       880K task_xstate
  9858   9061  91%    0.07K    186       53       744K selinux_inode_security
   836    496  59%    0.69K     76       11       608K files_cache
   594    453  76%    0.81K     66        9       528K UDP
....

iostat -x -m 10

Linux 2.6.32-431.11.2.el6.x86_64 ([HOSTNAME REMOVED])  11/25/2015      _x86_64_        (32 CPU)

avg-cpu:  %user   %Nice %system %iowait  %steal   %idle
          29.29    0.04    5.51    1.52    0.00   63.64

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00    43.76     0.00    5.52   5.05   0.00
sdb              57.38   377.29  113.86   91.39     2.82     1.83    46.36     0.04    0.19   0.10   1.99

avg-cpu:  %user   %Nice %system %iowait  %steal   %idle
          44.62    0.00    8.82    0.59    0.00   45.98

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               3.50   664.60    8.10  174.90     0.14     3.28    38.28     2.70   14.78   1.37  25.09

avg-cpu:  %user   %Nice %system %iowait  %steal   %idle
          34.30    0.00    8.37    0.14    0.00   57.19

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.10   377.70    8.90   48.60     0.21     1.67    66.71     0.24    4.21   2.19  12.62
3
mutron

FreeのBuffersフィールドは、ダイレクトIOまたはファイルシステムメタデータブロック(例:findなど)を介して、ホスト上のデバイスを直接ブロックするすべてのI/Oを表します。これらのページを使用しているデバイスの詳細については、私のブログページをご覧ください。 ここ

slabtopは、カーネルが使用する個別のキャッシュ領域を表しており、頻繁に使用されるカーネルオブジェクトに割り当てられます。 slabinfoの出力を見ると、約7GBのext4 inodeとdentryキャッシュがあります。対応するディスクブロックが[バッファ]フィールドに表示されているはずだと思います

2
VenkatC