과도한 버퍼 메모리 사용량의 원인을 확인하는 방법은 무엇입니까?

과도한 버퍼 메모리 사용량의 원인을 확인하는 방법은 무엇입니까?

저는 64GB RAM을 갖춘 2.6 커널(Centos 6.7)을 실행하는 프로덕션 시스템을 가지고 있는데, 그 중 18GB는 분명히 버퍼 메모리로 사용됩니다.

18GB가 어떤 용도로 사용되는지 구체적으로 파악하여 그것이 병리적인지 알 수 있는지 궁금합니다.

이 머신은 바쁜 프런트 엔드 로드 밸런서 + 웹 서버이므로 수신 및 내부 TCP 연결이 많습니다. 대규모(수천만 개의 파일) 디렉터리 트리에서 상당히 많은 소규모 디스크 I/O를 무작위로 수행합니다. 또한 웹 서버 로그 파일에 하루에 수십 기가바이트에 달하는 많은 양의 데이터를 기록합니다.

사용해 보았지만 slabtop보드 크기는 이 사용량의 극히 일부에 불과한 것 같습니다(작성 ​​당시 약 8GB 또는 9GB).

이것이 합리적인지 알 수 있도록 18GB가 무엇으로 구성되어 있는지 더 명확하게 파악할 수 있는 방법이 있습니까?

다음은 몇 가지 기본 진단입니다.

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 캐시가 있습니다. 해당 디스크 블록이 "버퍼" 필드에 표시된 블록이어야 한다고 생각합니다.

관련 정보