前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件性能测试(连载13)

软件性能测试(连载13)

作者头像
顾翔
发布2020-03-04 13:32:37
6230
发布2020-03-04 13:32:37
举报
文章被收录于专栏:啄木鸟软件测试

② 查看inode和目录项缓存

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

代码语言:javascript
复制
#  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命令来查看。

代码语言:javascript
复制
# 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)占用了29680K的Cache,inode(inode_cache)的Cache为24416K。

③ 查看进程的I/O

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

代码语言:javascript
复制
#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-31为iotop的执行情况。

图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里面的介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档