Linux性能优化实战学习笔记:第二十三讲

一、索引节点和目录

1、索引节点

2、目录项

3、关系

为了帮助你理解目录项、索引节点以及文件数据的关系,我画了一张示意图,你可以对照这张图,来回忆刚刚讲过的内容,把只知识和细节串联起来

4、Slabs

5、系统格式化

二、虚拟文件系统

1、Linux文件系统的架构图

这里、我画了一张Linux文件系统的架构图,帮你更好地理解系统调用、VFS、缓存、文件系统以及块存储之间的关系图

2、基于磁盘的文件系统

2、基于内存的文件系统

3、网络文件系统

三、文件系统I/O

1、cat过程解析

2、标准库缓存

3、操作系统页缓存

4、是否阻塞自身运行

5、等待响应结果

四、性能观测

1、容量

1、查看文件系统的磁盘空间使用情况

[root@luoahong ~]# df /dev/sda1
Filesystem     1K-blocks  Used Available Use% Mounted on
devtmpfs         4010852     0   4010852   0% /dev

2、df -h获得更好的可读性

[root@luoahong ~]# df -h /dev/sda1
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev

3、查看索引节点使用情况

[root@luoahong ~]# df -i /dev/sda1
Filesystem      Inodes IUsed   IFree IUse% Mounted on
devtmpfs       1002713   401 1002312    1% /dev

4、小结

2、缓存

1、free输出的Cache是页缓存和可回收Slab缓存的和

[root@luoahong ~]# cat /proc/meminfo | grep -E "SReclaimable|Cached" 
Cached:           314664 kB
SwapCached:            0 kB
SReclaimable:      37348 kB

2、所有目录项和各文件系统索引节点的缓存情况:

[root@luoahong ~]# cat /proc/slabinfo | grep -E '^#|dentry|inode' 
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
ovl_inode             98     98    664   49    8 : tunables    0    0    0 : slabdata      2      2      0
xfs_inode           7740   8424    896   36    8 : tunables    0    0    0 : slabdata    234    234      0
mqueue_inode_cache     36     36    896   36    8 : tunables    0    0    0 : slabdata      1      1      0
hugetlbfs_inode_cache     53     53    608   53    8 : tunables    0    0    0 : slabdata      1      1      0
sock_inode_cache    2550   2550    640   51    8 : tunables    0    0    0 : slabdata     50     50      0
shmem_inode_cache   1764   1833    696   47    8 : tunables    0    0    0 : slabdata     39     39      0
proc_inode_cache    2945   3038    656   49    8 : tunables    0    0    0 : slabdata     62     62      0
inode_cache        25746  25872    584   56    8 : tunables    0    0    0 : slabdata    462    462      0
dentry             39767  42966    192   42    2 : tunables    0    0    0 : slabdata   1023   1023      0

3、找到内存占用最多的缓存类型

[root@luoahong ~]# slabtop

 Active / Total Objects (% used)    : 384466 / 393627 (97.7%)
 Active / Total Slabs (% used)      : 7262 / 7262 (100.0%)
 Active / Total Caches (% used)     : 95 / 140 (67.9%)
 Active / Total Size (% used)       : 107507.27K / 111249.76K (96.6%)
 Minimum / Average / Maximum Object : 0.01K / 0.28K / 16.62K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
 48420  48420 100%    0.13K    807	 60	 6456K kernfs_node_cache
 43008  39809  92%    0.19K   1024	 42	 8192K dentry
 33799  33799 100%    0.05K    463	 73	 1852K Acpi-Parse
 25872  25746  99%    0.57K    462	 56     14784K inode_cache
 25536  23690  92%    0.50K    399	 64     12768K kmalloc-512
 21760  21760 100%    0.03K    170	128	  680K kmalloc-32
 18688  18688 100%    0.02K     73	256	  292K kmalloc-16
 12800  12764  99%    0.20K    320	 40	 2560K vm_area_struct
 12352  11907  96%    0.06K    193	 64	  772K anon_vma_chain
 10248  10248 100%    0.07K    183	 56	  732K Acpi-Operand
  9920   9211  92%    0.06K    155	 64	  620K kmalloc-64
  9786   9786 100%    0.09K    233	 42	  932K kmalloc-96
  9728   9728 100%    0.01K     19	512        76K kmalloc-8
  9024   8704  96%    0.25K    141	 64	 2256K filp
  8992   8844  98%    2.00K    562	 16     17984K kmalloc-2k
  8424   7740  91%    0.88K    234	 36	 7488K xfs_inode
  8262   8262 100%    0.04K     81	102	  324K Acpi-Namespace
  7590   7590 100%    0.09K    165	 46	  660K anon_vma
  5208   5208 100%    0.57K     93	 56	 2976K radix_tree_node
  4128   3841  93%    1.00K    129	 32	 4128K kmalloc-1k
  3904   3904 100%    0.12K     61	 64	  488K pid
  3776   3520  93%    0.25K     59	 64	  944K skbuff_head_cache
  3740   3740 100%    0.05K     44	 85	  176K ftrace_event_field
  3276   3276 100%    0.19K     78	 42	  624K cred_jar
  3038   2945  96%    0.64K     62	 49	 1984K proc_inode_cache
  2880   2288  79%    0.12K     45	 64	  360K kmalloc-128

4、小结

原文地址:https://www.cnblogs.com/luoahong/p/10882536.html