zoukankan      html  css  js  c++  java
  • 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、小结

  • 相关阅读:
    C# 比较多个数组(lambda,匿名比较器)
    JPA javax.persistence.TransactionRequiredException
    JPA:identifier of an instance of was altered from
    JPA 连表查询
    java json转换(二)
    java querydsl使用
    SpringCloud 过滤器
    Android : Resource is not a Drawable (color or path)
    springcloud 新增微服务
    序列化二叉树
  • 原文地址:https://www.cnblogs.com/luoahong/p/10882536.html
Copyright © 2011-2022 走看看