如何确定缓冲区内存使用量过大的原因?

如何确定缓冲区内存使用量过大的原因?

我有一台运行 2.6 内核(Centos 6.7)的生产机器,具有 64 GB RAM,其中 18 GB 显然用于缓冲存储器。

我有兴趣具体确定 18 GB 的用途,以便我可以判断它是否是病态的。

这台机器是一个繁忙的前端负载均衡器 + Web 服务器,因此它有大量传入和内部 TCP 连接。它在一个大的(数十百万个文件)目录树中随机执行相当多的小型磁盘 I/O。它还将大量数据写入 Web 服务器日志文件,可能每天写入几十 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

答案1

free 的 Buffers 字段代表直接到主机上的块设备的所有 I/O,可以通过直接 IO 或通过文件系统元数据块,例如:查找等。您可以在我的博客页面上找到有关使用这些页面的设备的更多信息这里

labtop 代表内核使用的单独缓存区域,它被分配给经常使用的内核对象。查看你的slabinfo输出,有大约7GB的ext4 inode和dentry缓存。我怀疑它们相应的磁盘块一定是“缓冲区”字段中显示的磁盘块

相关内容