我有一台运行 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缓存。我怀疑它们相应的磁盘块一定是“缓冲区”字段中显示的磁盘块