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

一、索引节点和目录

1、索引节点

2、目录项

3、关系

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

 

4、Slabs

5、系统格式化

二、虚拟文件系统

1、Linux文件系统的架构图

 

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

2、基于磁盘的文件系统

2、基于内存的文件系统

3、网络文件系统

三、文件系统I/O

1、cat过程解析

2、标准库缓存

3、操作系统页缓存

4、是否阻塞自身运行

5、等待响应结果

四、性能观测

1、容量

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

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

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

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

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

1
2
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缓存的和

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

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

1
2
3
4
5
6
7
8
9
10
11
[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、找到内存占用最多的缓存类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[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、小结

 

posted @   活的潇洒80  阅读(1422)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示