软件性能测试(连载13)

简介: 软件性能测试(连载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的执行情况。


image.png

3-31  iotop命令



扩展阅读:磁盘分类

按照存储介质来分,磁盘可以分为机械磁盘与固态磁盘。

机械磁盘(Hard Disk  DriverHDD):机械磁盘是根据磁头寻道和盘片旋转而获取数据的,最小读写单位是扇区,每个扇区为512B

固态磁盘(Solid State  DiskSSD):固态磁盘采取“先擦除再写入”的原则,速度比机械抽盘快,但是会产生大量的垃圾。最小读写单位是页,通常大小是4KB8KB等。

不管是机械磁盘还是固态磁盘,离散的数据读写比性能连续的要低。

按照接口来分类,可以把硬盘分为。

IDEIntegrated  Drive Electronics):前缀为hd

SCSISmall Computer  System Interface):前缀为sd

SASSerial Attached  SCSI)。

SATASerial ATA):前缀为sd

FCFibre Channel)。

多块同类型的磁盘,可以按照 abc…的字母顺序来编号/dev/sda/dev/sdb。还可以划分为不同的逻辑分区,每个分区再用数字进行编号。比如/dev/sda,可以分成/dev/sda1/dev/sda2 2个分区。

另外也可以把多块磁盘组合成一个逻辑磁盘,构成冗余独立磁盘阵列,也就是 RAIDRedundant Array  of Independent Disks),从而可以提高数据访问的性能,并且增强数据存储的可靠性。具体细节可以参考3.2.1-3里面的介绍。


顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!


投票已过期

1.以下你用过哪些集中配置管理系统?(多选)

  • puppet
  • Chef
  • ansible
  • saltstack
  • Cfengine
  • Capistrano
  • Resque
  • Rundeck
  • Rundeck
  • 其他

2.以下你用哪些过虚拟机或容器?(多选)

  • VMware
  • Vagrant
  • Amazon EC2
  • AMI(亚马逊云机器镜像)
  • Vagrant
  • Docker
  • Rkt
  • 裸金属服务器
  • 其他

3.以下你用哪些操作系统自动化配置工具?(多选)

  • Solaris10 JumpStart
  • Kickstart
  • Debian-Preseed
  • 其他

4.以下你用哪些云平台?(多选)

  • Amazon Web Services
  • Google App Engine
  • Windows Azure
  • OpenShift
  • Cloud Foundry
  • AWS CloudFormation
  • Microsoft Azure Stack
  • OpenStack Heat
  • 百度云
  • 阿里云
  • 腾讯云
  • 其他

5.以下你用哪些CI/CD工具?(多选)

  • Jenkins
  • ThoughtWorks GoCD
  • Atlassian Bamboo
  • Microsoft Team Foundation Server
  • TeamCity
  • GitLab CI
  • Travis CI
  • SNAP CI
  • Pivotal的Concourse
  • Etsy的Morgue
  • 其他

6.以下你用哪些管理工具?(多选)

  • JIRA
  • LeanKit
  • Mingle
  • 禅道
  • 其他

7.以下你用哪些安全工具?(多选)

  • Vault
  • Keywhiz
  • credstash
  • Red October
  • Metasploit
  • OSSEC
  • Tripwire
  • Unhide
  • OWASP ZAP Zed Attack Proxy Project
  • Lynis
  • The Browser Exploitation Framework
  • OWASP Xenotix XSS Exploit Framework
  • OWASP Offensive Testing Framework
  • Brakeman
  • WPScan
  • nmap
  • Burp Suite
  • AWVS
  • AppScan
  • CSRFTester
  • SQL Map
  • Pangolin
  • DirBuster
  • 其他

8.以下你用哪些静态扫描工具?(多选)

  • Sonar
  • Brakeman
  • Codeclimate
  • CheckStyle
  • 其他
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
3天前
|
XML 数据管理 测试技术
深入探索软件自动化测试框架的设计与实现
【4月更文挑战第26天】 随着软件开发周期不断缩短,传统的手动测试方法已难以满足快速迭代的需求。本文聚焦于自动化测试框架的构建与优化,旨在提供一种高效、可维护且可扩展的软件测试解决方案。文章从自动化测试的必要性出发,详细阐述了自动化测试框架设计的核心要素,包括模块化设计、数据驱动测试以及关键词驱动测试等概念。同时,结合实例分析了如何利用流行的测试工具进行框架搭建,并提出了针对常见问题的创新解决方法。最后,通过案例研究展示了该框架在实际项目中的应用效果和潜在改进空间。
|
3天前
|
设计模式 测试技术 持续交付
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第20天】 在软件开发的复杂世界中,确保产品的质量和性能始终是至关重要的任务。白盒测试,作为软件测试领域的重要分支,提供了对程序内部结构和逻辑的深入分析手段。本文将探讨如何通过有效的白盒测试策略来优化软件性能,减少缺陷,并最终提高用户满意度。通过剖析代码检查、单元测试、集成测试等白盒测试技术,我们将了解这些方法如何揭示潜在的问题点,并为改进提供方向。
|
3天前
|
设计模式 前端开发 测试技术
软件质量的守门人——接口测试
接口作为API,是后端预定义的函数,用于系统间通信和数据交换。接口测试验证不同组件间的交互,确保其准确、可靠。常见应用场景包括集成测试、版本迭代测试、性能测试、安全测试和错误场景测试。随着服务端复杂性的增加,传统测试方法面临挑战,因此引入分层测试(如马丁福勒的测试金字塔模型)和自动化测试,以降低成本并提高效率。接口测试成为确保后端服务质量的关键,学习接口测试可从理解其价值、协议、工具使用及Mock测试等方面逐步进阶。
4 1
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深入探索软件自动化测试的未来趋势
【5月更文挑战第12天】 随着软件开发周期的不断缩短和市场需求的快速变化,传统的手动测试方法已经难以满足现代软件质量保证的需求。自动化测试作为一种高效、可靠的解决方案,正逐渐成为行业标配。本文将深入探讨自动化测试的最新发展,分析其在持续集成/持续部署(CI/CD)环境中的作用,以及人工智能(AI)如何重塑测试实践。同时,我们还将展望自动化测试工具和技术的未来演进路径。
|
3天前
|
机器人 测试技术 语音技术
LabVIEW使用软件定义进行汽车电子测试
LabVIEW使用软件定义进行汽车电子测试
12 0
|
3天前
|
程序员 测试技术
程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。
【5月更文挑战第11天】程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。复杂的系统易产生意外问题,需求变化导致初始设计难完备,测试无法覆盖所有情况,而技术更新和个体能力差异也会引入错误。因此,持续调试和优化是保证软件质量的关键步骤。
16 0
|
3天前
|
人工智能 大数据 测试技术
深入探索软件自动化测试的未来
【5月更文挑战第8天】随着科技的不断发展,软件测试领域正经历着前所未有的变革。本文将深入探讨软件自动化测试的现状与未来,从人工智能、大数据和云计算等方面分析其对软件测试的影响,以及如何利用这些技术提高测试效率和质量。
|
3天前
|
机器学习/深度学习 人工智能 算法
深入探索软件自动化测试的优化策略
【5月更文挑战第4天】 随着软件开发周期的不断缩短和发布频率的增加,传统的手动测试方法已无法满足快速迭代的需求。因此,本文聚焦于自动化测试流程的优化,旨在提高测试效率和质量。文章首先回顾了自动化测试的基本概念与实施条件,随后分析了当前自动化测试面临的主要挑战,包括维护成本高、测试用例设计复杂等问题。在此基础上,提出了一系列优化策略:持续集成环境下的自动化测试、数据驱动测试、关键字驱动测试、以及基于人工智能的测试用例生成和维护等。通过案例分析和性能评估,验证了这些策略在提升测试覆盖率和减少人工干预方面的有效性。
|
3天前
|
机器学习/深度学习 敏捷开发 人工智能
探索软件自动化测试的未来趋势
【5月更文挑战第4天】 在快速发展的信息时代,软件已成为支撑现代社会运行的核心力量。随之而来的是软件测试领域面临的挑战和机遇,特别是自动化测试技术。本文将深入探讨自动化测试的最新发展,分析其对提高软件开发效率、降低维护成本的重要性,同时预测未来可能的技术趋势。通过实际案例分析和最新研究动态的梳理,旨在为读者呈现一个清晰的自动化测试技术蓝图。
|
3天前
|
测试技术 持续交付 数据安全/隐私保护
深入理解软件自动化测试中的数据驱动策略
【5月更文挑战第1天】 在软件测试领域,自动化测试已经成为提高测试效率和质量的重要手段。其中,数据驱动测试(DDT)作为一种高效实施自动化测试的策略,允许测试用例与测试数据分离,增强了测试脚本的可维护性和灵活性。本文将详细探讨数据驱动测试的核心概念、实现方式以及在实际中的应用案例,帮助读者更深入地理解如何利用数据驱动策略优化自动化测试流程。

热门文章

最新文章