软件性能测试(连载10)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 软件性能测试(连载10)
6cachebuffer

cachebuffer中文翻译都叫缓冲或缓存,但是他们是由区别的。

cache是缓存从文件读写的信息。

buffer是缓存从硬盘读写的信息。


可以通过cachestatcachetop来查看cache信息(这两个命令都需要先安装bcc包,由于每种Linux的安装方法都不同,这里不进行介绍,读者可到网上下载安装)。cachestat提供了整个操作系统缓存的读写命中情况,cachetop提供了每个进程的缓存命中情况。缓存命中率是指直接通过缓存获取数据的请求次数与占所有数据请求次数的百分比。命中率越高,表示使用缓存带来的收益越高,应用程序的性能当然也越好。


# cachestat 1 3
  TOTAL   MISSES     HITS DIRTIES   BUFFERS_MB  CACHED_MB
   2        0         2      1         17          279
   2        0         2      1         17          279
   2        0         2      1         17          279


参数请查看表3-10所示。


3-10 cachestat参数

标记

解释

TOTAL

总的 I/O 次数

MISSES

缓存未命中的次数

HITS

缓存命中的次数

DIRTIES

新增到缓存中的脏页数

BUFFERS_MB

Buffers 的大小,以 MB 为单位

CACHED_MB

Cache 的大小,以 MB 为单位


# cachetop
11:58:50 Buffers MB: 258 / Cached MB: 347 / Sort:HITS / Order: ascending
PID     UID      CMD              HITS     MISSES  DIRTIES  READ_HIT%  WRITE_HIT%
13029     root     python         1        0         0         100.0%      0.0%


其中READ_HITWRITE_HIT,分别表示读和写的缓存命中率。


7SWAP机制

SWAP是把系统硬盘作为内存使用的一种机制。Linux上可以使用swapon -s命令查看当前系统中正在使用的交换空间和相关信息。


# swapon -s
FilenameTypeSize      Used Priority
/swapfile    file    9699604620  -2


系统通过参数swappiness来控制SWAP积极程度,可以通过。


# cat /proc/sys/vm/swappiness
60


来查看,这个值在0100之间,默认为60。数值越大,说明越积极使用 SWAP;数值越小,说明越消极使用 SWAP注意:但是并不是说swappiness=0,就不进行SWAP,而是使用SWAP的积极性。可以通过vmstat命令来查看系统的SWAP情况。


# vmstat
procs-----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b  swpd   free        buff   cache       si   so   bi     bo    in    cs    us   sy id wa st
0  0 10336  287032      16856  266904      0    9     556    278   155   452   15    4  79 2  0


其参数请查看表3-11所示。


3-11 vmstat参数

标记

解释

swpd

已经使用的交换内存(kb

free

空闲的物理内存(kb

buff

用作缓冲区的内存数(kb),暂存的数据

cache

用作高速缓存的内存数(kb),将最近使用过的文件放在内存中

si

自上次取样以来从磁盘交换出来的比特数

so

自上次取样以来交换到磁盘的比特数


在这里siso即为SWAP的数据。如图3-27所示,站在内存的角度来看si指的是从磁盘分配给内存的比特数,so表示内存还给硬盘的比特数。


image.png

3-27  虚拟内存空间分配


扩展阅读:SAWP内存回收机制

直接内存回收(静态回收)。当有大内存提出申请,直接回收内存。

kswap0内存回收(动态回收)。pages_min 存储在/proc/sys/vm/min_free_kbytes中。

# cat /proc/sys/vm/min_free_kbytes

38488

pages_low = pages_min × 5/4pages_high  = pages_min × 3/2。参见图3-28所示。

微信图片_20230213114633.png

3-28  swap0内存回收

纵坐标为有一个进程pages_free,表示内存使用情况。每隔一段时间进行扫描,当发现当前pages_free<pages_low,就发起内存回收。


8)系统内存摘要信息

仍旧可以使用vmstat来查看系统内存摘要信息。

# vmstat -s
     4312648 K total memory
     1589480 K used memory
     1764644 K active memory
     1107684 K inactive memory
      625492 K free memory
       22880 K buffer memory
     2074796 K swap cache
      969960 K total swap
        4620 K used swap
      965340 K free swap
       81312 non-nice user cpu ticks
       27207 nice user cpu ticks
       56108 system cpu ticks
     4871600 idle cpu ticks
        7258 io-wait cpu ticks
           0 IRQ cpu ticks
        3317 softirq cpu ticks
           0 stolen cpu ticks
     2337551 pages paged in
     8028020 pages paged out
          16 pages swapped in
        1001 pages swapped out
     3218309 interrupts
      4614976 CPU context switches
  1575877682 boot time
       49574 forks


9)显示某个进程所用的内存情况

可以使用pmap <pid>来查看某个进程所用的内存情况。

# pmap 3785
3785:  /usr/bin/python3 manage.py runserver 0.0.0.0:8000 --insecure
0000000000400000  3792K r-x-- python3.6
00000000009b3000      4K r---- python3.6
00000000009b4000   628K rw--- python3.6
0000000000a51000   204K rw---   [ anon ]
0000000000eba000  5236K rw---   [ anon ]
00007ff6e8000000   644K rw---   [ anon ]
00007ff6e80a1000 64892K -----   [ anon ]
00007ff6eca72000     44K r-x-- libnss_files-2.27.so
00007ff6eca7d000  2044K ----- libnss_files-2.27.so
00007ff6ecc7c000      4K r---- libnss_files-2.27.so
00007ff6ecc7d000      4K rw--- libnss_files-2.27.so
00007ff6ecc7e000  2588K rw---   [ anon ]
00007ff6ecf05000      4K -----  [ anon ]
00007ff6ecf06000  9984K rw---   [ anon ]


10)显示10个消耗内存最多的进程

CPU一样,也可以通过命令来显示10个消耗内存最多的进程。

# ps aux|sort -rnk +4|head -10
jerry    49301  0.3  4.2 921596 181256 tty2    SNl+ 02:25  0:13 /usr/bin/python3 /usr/bin/update-manager --no-update--no-focus-on-map
jerry     2264  0.1  3.7 1399412 160552 tty2   SLl+ Dec08  0:18 /usr/bin/gnome-software --gapplication-service
jerry     2044  0.8  3.7 3747824 162252 tty2   Sl+ Dec08   1:45 /usr/bin/gnome-shell
gdm       1024  0.1  2.1 3378676 91928 tty1    Sl+ Dec08   0:13 /usr/bin/gnome-shell
jerry     2260  0.0  2.0 1078900 90292 tty2    Sl+ Dec08   0:06 nautilus-desktop
jerry     1915  0.2  1.5 463272 64864 tty2     Sl+ Dec08   0:35 /usr/lib/xorg/Xorgvt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset-keeptty -verbose 3
jerry     2306  0.0  1.2 892092 53404 ?        Ssl Dec08   0:01 /usr/lib/evolution/evolution-calendar-factory
root      1324  0.2  1.1 522060 49556 ?        Ssl Dec08   0:29/usr/lib/packagekit/packagekitd
jerry     2335  0.0  1.1 1135836 50004 ?       Sl  Dec08   0:01 /usr/lib/evolution/evolution-calendar-factory-subprocess--factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.Calendarx2306x2--own-path /org/gnome/evolution/dataserver/Subprocess/Backend/Calendar/2306/2
jerry     3785  1.4  0.8 176328 36240 pts/1    Sl+ 00:14   2:46 /usr/bin/python3manage.py runserver 0.0.0.0:8000 –insecure


11)小结

本节所涉及的概念有内核空间和用户空间、内核映射、虚拟内存空间分布、内存的分配和释放、查看内存使用情况、cachebufferSWAP机制。涉及到的命令有echo -16 > /proc/$(pidofsshd)/oom_adjcat /proc/$(pidofsshd)/oom_adjfreetopcachestatcachetopswaponcat /proc/sys/vm/swappinesvmstatcat/proc/sys/vm/min_free_kbytespmap <Pid>ps aux|sort -rnk +4|head -10


顾翔老师与云测学院联合推出:软件测试分析与设计,请点击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进行规格选择与性能压测。
目录
相关文章
|
1月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
2月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
1月前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
63 3
|
2月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
38 5
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
79 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
本文是《软件质量保护与测试》(第2版)第十章的学习总结,介绍了黑盒测试的基本概念和方法,包括等价类划分、边界值分析和因果图法,并通过具体例子展示了如何设计测试用例来验证软件的功能性需求。
76 1
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
|
2月前
|
人工智能 人机交互 数据库
软件质量保护与测试(第2版)学习总结第一章
本文是《软件质量保护与测试》(第2版)第一章的学习总结,概述了软件的特征、分类、软件工程的层次化技术、现代软件开发的变化,以及软件质量的概念和评价体系,包括黑盒、白盒和灰盒测试方法。
41 1
软件质量保护与测试(第2版)学习总结第一章
|
2月前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
29 2
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十一章 白盒测试
本文是《软件质量保护与测试》(第2版)第十一章的学习总结,详细讲解了白盒测试中的控制流测试技术,包括语句覆盖、判断覆盖、条件覆盖、判定-条件覆盖和路径覆盖等方法,并通过具体代码示例展示了如何设计测试用例来验证程序中的不同执行路径。
72 2