過剰なバッファメモリ使用量の原因を特定する方法は?

過剰なバッファメモリ使用量の原因を特定する方法は?

私は64GBのRAMを備えた2.6カーネル(Centos 6.7)を実行する本番システムを持っていますが、そのうち18GBは明らかにバッファメモリとして使用されています。

18GBがどのような用途に使われるのかを具体的に把握して、それが病理的かどうかを知ることができるかどうか疑問に思います。

このマシンは、忙しいフロントエンドロードバランサー+ Webサーバーであるため、受信および内部TCP接続がたくさんあります。大規模(数千万のファイル)ディレクトリツリーでかなりの数の小規模ディスクI / Oをランダムに実行します。また、Webサーバーのログファイルには、1日に数十ギガバイトに達する大量のデータが記録されます。

試してみましたが、slabtopボードサイズはこの使用量のごく一部にすぎません(作成時は約8GBまたは9GB)。

これが合理的であるかどうかを知るために、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

答え1

freeのBuffersフィールドは、直接IOやルックアップなどのファイルシステムメタデータブロックを介してホストのブロックデバイスへのすべてのI / Oを直接表します。私のブログでは、このページで使用されている機器に関する詳細情報を見つけることができます。ここ

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

関連情報