软件性能测试(连载13)

② 查看inode和目录项缓存

[28]slabLinux操作系统的一种内存分配机制,slab分配算法采用cache存储内核对象
slab缓存、从缓存中分配和释放对象然后销毁缓存的过程必须要定义一个kmem_cache对象,然后对其进行初始化这个特定的缓存包含32字节的对象。
可以通过运行cat /proc/slabinfo |grep -E '^#|dentry|inode'命令来查看所有目录项和各种文件系统索引节点的缓存情况。

#  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>
btrfs_inode            0      0  1144   28    8 : tunables    0    0    0: slabdata      0      0     0
ufs_inode_cache        0     0    808   40   8 : tunables    0    0   0 : slabdata      0      0     0
qnx4_inode_cache       0     0    680   48   8 : tunables    0    0   0 : slabdata      0      0     0
hfs_inode_cache        0     0    832   39   8 : tunables    0    0   0 : slabdata      0      0     0
minix_inode_cache      0     0    672   48   8 : tunables    0    0   0 : slabdata      0      0     0
ntfs_big_inode_cache      0     0    960   34    8: tunables    0    0   0 : slabdata      0      0     0
ntfs_inode_cache       0     0    296   55   4 : tunables    0    0   0 : slabdata      0      0     0
xfs_inode              0      0   960   34    8 : tunables    0   0    0 : slabdata      0     0      0
mqueue_inode_cache     34    34    960   34   8 : tunables    0    0   0 : slabdata      1      1     0
fuse_inode           117    117   832   39    8 : tunables    0   0    0 : slabdata      3     3      0
ecryptfs_inode_cache      0     0   1024   32   8 : tunables    0    0   0 : slabdata      0      0     0
fat_inode_cache        0     0    744   44   8 : tunables    0    0   0 : slabdata      0      0     0
squashfs_inode_cache  22954 22954    704   46   8 : tunables    0    0   0 : slabdata    499    499     0
ext4_inode_cache 105930 105930   1088   30   8 : tunables    0    0   0 : slabdata   3531   3531     0
hugetlbfs_inode_cache    104   104    624   52   8 : tunables    0    0   0 : slabdata      2     2      0
sock_inode_cache   2313   2484    704  46    8 : tunables    0   0    0 : slabdata     54    54      0
shmem_inode_cache  1840   1840    712  46    8 : tunables    0   0    0 : slabdata     40    40      0
proc_inode_cache   7315  10944    680  48    8 : tunables    0   0    0 : slabdata    228   228      0
inode_cache       40236  40439    608  53    8 : tunables    0   0    0 : slabdata    763   763      0
dentry           214030 214242    192   42   2 : tunables    0    0    0: slabdata   5101   5101     0

其中dentry行表示目录项缓存,inode_cache行表示VFS索引节点缓存,而其他的是各种文件系统的索引节点缓存。
除了使用slabinfo命令查看slab信息,也可以使用slabtop命令来查看。

# slabtop
Active / Total Objects (% used)   : 539715 / 542626 (99.5%)
 Active /Total Slabs (% used)      : 11100 / 11100(100.0%)
 Active /Total Caches (% used)     : 81 / 109(74.3%)
 Active /Total Size (% used)       : 142659.64K /143801.37K (99.2%)
 Minimum /Average / Maximum Object : 0.01K / 0.26K / 8.00K
 
OBJS ACTIVE USE OBJ SIZE  SLABS OBJ/SLAB CACHESIZE NAME                   
444405 4422740%  0.10K  11395     39    45580K buffer_head
155820 1444690%  0.19K   3710      42     29680K dentry
 70230  691050%  1.06K   2341      30   74912K ext4_inode_cache
 60900  60900100% 0.13K   1015     60      8120K kernfs_node_cache
…
40439     40286    0%   0.59K    763        53        24416K         inode_cache
…

在这里,目录项(dentry)占用了29680KCacheinodeinode_cache)的Cache24416K

③ 查看进程的I/O

查看进程的I/O情况,使用pidstat -d参数。

#pidstat -d 1
Average:     UID       PID      kB_rd/s  kB_wr/s kB_ccwr/s iodelay  Command
Average:     0         331       0.00      0.57     0.00           2    jbd2/sda1-8
Average:     0         6353     0.00      3066.10   0.00         0      snapd

其中参数含义如下。

UID/PID

用户ID/进程ID

kB_rd/s

每秒读取的数据大小,单位是 KB

kB_wr/s

每秒写请求数据大小,单位是KB

kB_ccwr/s

每秒取消的写请求数据大小,单位是KB

•块 I/O延迟(iodelay)。

包括等待同步块 I/O 和换入块I/O 结束的时间,单位是时钟周期。

④ 磁盘top工具

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。使用iotop需要在unbutu下另行安装,命令为apt-get install iotop。图3-31iotop的执行情况。
在这里插入图片描述
3-31 iotop命令
扩展阅读:磁盘分类按照存储介质来分,磁盘可以分为机械磁盘与固态磁盘。•机械磁盘(Hard Disk Driver:HDD):机械磁盘是根据磁头寻道和盘片旋转而获取数据的,最小读写单位是扇区,每个扇区为512B。•固态磁盘(Solid State Disk:SSD):固态磁盘采取“先擦除再写入”的原则,速度比机械抽盘快,但是会产生大量的垃圾。最小读写单位是页,通常大小是4KB、8KB等。不管是机械磁盘还是固态磁盘,离散的数据读写比性能连续的要低。按照接口来分类,可以把硬盘分为。•IDE(Integrated Drive Electronics):前缀为hd。•SCSI(Small Computer System Interface):前缀为sd。•SAS(Serial Attached SCSI)。•SATA(Serial ATA):前缀为sd。•FC(Fibre Channel)。多块同类型的磁盘,可以按照 a、b、c…的字母顺序来编号/dev/sda、/dev/sdb。还可以划分为不同的逻辑分区,每个分区再用数字进行编号。比如/dev/sda,可以分成/dev/sda1和/dev/sda2 2个分区。另外也可以把多块磁盘组合成一个逻辑磁盘,构成冗余独立磁盘阵列,也就是 RAID(Redundant Array of Independent Disks),从而可以提高数据访问的性能,并且增强数据存储的可靠性。具体细节可以参考3.2.1-3里面的介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值