`
linkyou66
  • 浏览: 235180 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

性能测试之:操作系统性能指标观测及分析

 
阅读更多
<p class="MsoNormal" style=""><span style="" lang="EN-US"><span style=""><span style="font-family: Times New Roman;"><span style="font-size: small;">1.</span><span style='font: 7pt "Times New Roman";'> </span></span></span></span><span style="font-size: small;"><span style="">对于</span><span lang="EN-US"><span style="font-family: Times New Roman;">Linux</span></span><span style="">系统来说,</span><span lang="EN-US"><span style="font-family: Times New Roman;">Free Mem</span></span><span style="">很少并不一定代表内存不足,成为瓶颈。实际上这是由于</span><span lang="EN-US"><span style="font-family: Times New Roman;">LINUX</span></span><span style="">的内存管理机制造成的,</span><span lang="EN-US"><span style="font-family: Times New Roman;">LINUX</span></span><span style="">会把</span><span lang="EN-US"><span style="font-family: Times New Roman;">Free</span></span><span style="">的内存(完全没使用过的内存)尽可能的利用起来,作为</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers/cached</span></span><span style="">(当有进程申请内存时,如果没有</span><span lang="EN-US"><span style="font-family: Times New Roman;">Free</span></span><span style="">,会把</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers/cached</span></span><span style="">分配给进程),以提高系统的性能,尤其是在有大量</span><span lang="EN-US"><span style="font-family: Times New Roman;">I/O</span></span><span style="">的情况下,增大</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers/cached</span></span><span style="">会很大地提高</span><span lang="EN-US"><span style="font-family: Times New Roman;">I/O</span></span><span style="">,可以提高多达</span><span lang="EN-US"><span style="font-family: Times New Roman;">20%</span></span><span style="">的</span><span lang="EN-US"><span style="font-family: Times New Roman;">I/O</span></span><span style="">性能,因此实际是</span><span lang="EN-US"><span style="font-family: Times New Roman;">LINUX</span></span><span style="">的这一特性造成</span><span lang="EN-US"><span style="font-family: Times New Roman;">Free Mem</span></span><span style="">几乎没有。当服务器存在大量</span><span lang="EN-US"><span style="font-family: Times New Roman;">I/O</span></span><span style="">时,比较容易出现</span><span lang="EN-US"><span style="font-family: Times New Roman;">Free Mem</span></span><span style="">几乎没有这样的情况。</span><span lang="EN-US"><span style="font-family: Times New Roman;">used-buffers-cached</span></span><span style="">得到的结果才是应用程序用掉的内存,如果这个数字已经接近或超过总的内存数,那么内存成为瓶颈。如下图所示:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 15.75pt; text-align: center;" align="center"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 15.75pt;"><span style="font-size: small;"><span style="">第二行(</span><span lang="EN-US"><span style="font-family: Times New Roman;">-/+ buffers/cache</span></span><span style="">)的</span><span lang="EN-US"><span style="font-family: Times New Roman;">used</span></span><span style="">是扣除了</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers/cache</span></span><span style="">后的</span><span lang="EN-US"><span style="font-family: Times New Roman;">used</span></span><span style="">内存,这才是真正的被应用程序使用掉的内存(包括内核级进程和用户级进程)。也可以通过</span><span lang="EN-US"><span style="font-family: Times New Roman;">swap</span></span><span style="">来判断内存是否是瓶颈,如果</span><span lang="EN-US"><span style="font-family: Times New Roman;">swap</span></span><span style="">大量</span><span lang="EN-US"><span style="font-family: Times New Roman;">used</span></span><span style="">,并且频繁的发生</span><span lang="EN-US"><span style="font-family: Times New Roman;">swap in</span></span><span style="">和</span><span lang="EN-US"><span style="font-family: Times New Roman;">swap out</span></span><span style="">,那么内存一定是瓶颈;有时用</span><span lang="EN-US"><span style="font-family: Times New Roman;">free</span></span><span style="">会看到少量的</span><span lang="EN-US"><span style="font-family: Times New Roman;">swap used</span></span><span style="">,这并不影响性能,内存不是瓶颈。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 15.75pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">PS</span></span><span style="">:</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers</span></span><span style="">和</span><span lang="EN-US"><span style="font-family: Times New Roman;">cached</span></span><span style="">的区别。两者都是缓存,都是为了提高</span><span lang="EN-US"><span style="font-family: Times New Roman;">I/O</span></span><span style="">的性能,不同的是</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers</span></span><span style="">是块设备的缓存,而</span><span lang="EN-US"><span style="font-family: Times New Roman;">cached</span></span><span style="">是字符设备的缓存,简单地说,</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers</span></span><span style="">用来存储目录下面有什么内容、什么权限等等,</span><span lang="EN-US"><span style="font-family: Times New Roman;">cached</span></span><span style="">则存储文件的内容,例如,</span><span lang="EN-US"><span style="font-family: Times New Roman;">ls</span></span><span style="">一下,可以发现</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers</span></span><span style="">有明显增长(</span><span lang="EN-US"><span style="font-family: Times New Roman;">buffers</span></span><span style="">其实一直在缓慢增长),而打开一个文件后,可以发现</span><span lang="EN-US"><span style="font-family: Times New Roman;">cached</span></span><span style="">明显增长。</span></span></p>
<p class="MsoNormal" style=""><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">2. </span></span><span style="">现象:还没有开始性能测试,服务器的</span><span lang="EN-US"><span style="font-family: Times New Roman;">Load</span></span><span style="">达到</span><span lang="EN-US"><span style="font-family: Times New Roman;">1</span></span><span style="">以上,</span><span lang="EN-US"><span style="font-family: Times New Roman;">CPU </span></span><span style="">使用</span><span lang="EN-US"><span style="font-family: Times New Roman;"> user</span></span><span style="">接近</span><span lang="EN-US"><span style="font-family: Times New Roman;">0</span></span><span style="">,</span><span lang="EN-US"><span style="font-family: Times New Roman;">sys</span></span><span style="">有些情况下也接近</span><span lang="EN-US"><span style="font-family: Times New Roman;">0</span></span><span style="">,有些情况下会达到</span><span lang="EN-US"><span style="font-family: Times New Roman;">10%</span></span><span style="">以上,用</span><span lang="EN-US"><span style="font-family: Times New Roman;">vmstat</span></span><span style="">查看,</span><span lang="EN-US"><span style="font-family: Times New Roman;">r</span></span><span style="">(运行队列中的等待进程数)</span><span lang="EN-US"><span style="font-family: Times New Roman;">=0</span></span><span style="">,</span><span lang="EN-US"><span style="font-family: Times New Roman;">b</span></span><span style="">(等待</span><span lang="EN-US"><span style="font-family: Times New Roman;">I/O</span></span><span style="">的进程数)</span><span lang="EN-US"><span style="font-family: Times New Roman;">&gt;0</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt;"><span style="font-size: small;"><span style="">原因:产生这种现象的原因很多,比如,操作系统中存在状态为</span><span lang="EN-US"><span style="font-family: Times New Roman;">D</span></span><span style="">(</span><span style="" lang="EN-US"><span style="font-family: Times New Roman;">Uninterruptible sleep</span></span><span style="">)或状态为</span><span lang="EN-US"><span style="font-family: Times New Roman;">Z</span></span><span style="">(</span><span lang="EN-US"><span style="font-family: Times New Roman;">Zombie</span></span><span style="">)的进程,这两种进程会把系统</span><span lang="EN-US"><span style="font-family: Times New Roman;">Load</span></span><span style="">弄高(因为这两种状态的进程会滞留在</span><span lang="EN-US"><span style="font-family: Times New Roman;">CPU </span></span><span style="">运行队列中);或者系统对同一个目录</span><span lang="EN-US"><span style="font-family: Times New Roman;">mount</span></span><span style="">了多次,会导致</span><span lang="EN-US"><span style="font-family: Times New Roman;">load</span></span><span style="">升高,</span><span lang="EN-US"><span style="font-family: Times New Roman;">sys CPU&gt;10%</span></span><span style="">;一般都是跟</span><span lang="EN-US"><span style="font-family: Times New Roman;">I/O</span></span><span style="">相关。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt;"><span style="font-size: small;"><span style="">判断及解决方法:</span><span lang="EN-US"><span style="font-family: Times New Roman;">top</span></span><span style="">或者</span><span lang="EN-US"><span style="font-family: Times New Roman;">ps afux</span></span><span style="">一下,看看进程的状态;</span><span lang="EN-US"><span style="font-family: Times New Roman;">df</span></span><span style="">一下看看是否有重复的</span><span lang="EN-US"><span style="font-family: Times New Roman;">mount</span></span><span style="">;</span><span lang="EN-US"><span style="font-family: Times New Roman;">vmstat</span></span><span style="">查看一下;可以根据不同的情况采用不同的办法来解决,由于是测试环境,最简单有效的办法就是</span><span lang="EN-US"><span style="font-family: Times New Roman;">reboot</span></span><span style="">。不过有时</span><span lang="EN-US"><span style="font-family: Times New Roman;">reboot</span></span><span style="">前也要做一些工作,比如已经</span><span lang="EN-US"><span style="font-family: Times New Roman;">mount</span></span><span style="">了</span><span lang="EN-US"><span style="font-family: Times New Roman;">NFS</span></span><span style="">服务端上的一个目录,并写入了</span><span lang="EN-US"><span style="font-family: Times New Roman;">fstab</span></span><span style="">中,而</span><span lang="EN-US"><span style="font-family: Times New Roman;">NFS</span></span><span style="">服务端关闭了,那么需要把</span><span lang="EN-US"><span style="font-family: Times New Roman;">fstab</span></span><span style="">中的相应内容删除后再</span><span lang="EN-US"><span style="font-family: Times New Roman;">reboot</span></span><span style="">,否则</span><span lang="EN-US"><span style="font-family: Times New Roman;">reboot</span></span><span style="">后仍然会自动</span><span lang="EN-US"><span style="font-family: Times New Roman;">mount</span></span><span style="">。</span></span></p>
分享到:
评论

相关推荐

    存储测试方案.docx

    (1)性能分析:分析存储系统的性能指标,包括IO率、传输率、响应时间等。 (2)可靠性分析:分析存储系统的可靠性,包括错误处理力量和恢复力量等。 (3)可扩展性分析:分析存储系统的可扩展性,包括存储容量、...

    大型3D云端设计软件前端性能测试体系构建.pdf

    综上所述,构建大型3D云端设计软件前端性能测试体系是一个系统性的工作,涵盖了从性能指标定义、测试工具选择、流程构建、监控策略制定到性能优化的全过程。这一过程需要持续关注用户体验,不断迭代优化,确保软件在...

    高压线路对GPS接收机性能及观测数据质量影响的测试与分析.pdf

    本文将针对“高压线路对GPS接收机性能及观测数据质量影响的测试与分析”进行深入探讨,以期为工程师和技术人员在面对类似问题时提供专业指导。 一、高压电力线路对GPS接收机性能的影响 高压电力线路在运行过程中会...

    系统集成测试PPT学习教案.pptx

    - **LTT (Linux Trace Toolkit)**:通过内核模块进行监控,提供对主要内核子系统的详细跟踪,可用于系统性能分析和事件观测。 12.3 系统性能测量工具: - **gprof**:用于测量程序运行时间和函数执行效率,有助于...

    【学习笔记】Iperf3网络性能测试工具详解教程.pdf

    iperf是一款开源的网络性能测试工具,由美国伊利诺斯大学开发。它可以用来测试网络节点间(包括回环)TCP或UDP连接的性能,具体指标包括带宽、抖动以及丢包率。iperf支持TCP和UDP两种传输协议,其中抖动和丢包率主要...

    GPS接收机性能之分析

    - **测试方法**:通过在一个小型GPS测试网络上连续观测10天,每天观测1小时,来评估相位观测值的稳定性。 - **标准**:观测值的变化及其与精确值之间的差异应当小于仪器标称精度的固定误差。 ##### 5. 周跳 - **...

    分布式数据库可观测性与监控.pptx

    - **监控I/O操作**:记录和分析输入输出操作的性能,确保I/O操作不会成为系统的瓶颈。 - **存储优化**:根据存储使用情况,采取相应的优化措施,如增加存储容量、调整存储策略等。 综上所述,分布式数据库的可...

    软件测试工具简介

    在负载测试的任何阶段,用户都能即时观测到应用系统的运行状态和性能指标,如响应时间、吞吐量等,及时发现潜在的性能瓶颈和硬件限制。这种实时反馈机制有助于快速定位问题,避免产品上线后的性能下滑和用户流失。 ...

    电子功用-基于步进电机的双光谱观测仪视场同步控制系统及方法

    6. **系统实现与测试**:实际的系统搭建、调试过程,以及性能测试结果,可能包括系统的稳定性、响应速度、同步误差等指标。 7. **应用案例**:文档可能会提供实际应用场景的例子,展示这种同步控制系统在实际操作中...

    华为硬件信号质量与时序测试指导书

    - **测试标准**:提供了部分信号质量的测试标准,用于指导实际测试操作。 **5.3 时钟信号要求** - **要求**:列出了时钟信号在不同应用场景下的具体要求。 **5.4 测试点的选择** - **选择**:指导如何合理选择测试...

    嵌入式系统复习题

    - **系统描述**:整体描述系统功能和性能指标。 - **软硬件划分**:根据成本函数等标准划分软硬件功能。 - **协同综合**:综合考虑软硬件的设计和优化。 - **协同仿真与验证**:通过仿真测试软硬件协同工作的效果。 ...

    自动控制原理:第四章 线性控制系统的时域分析.ppt

    时域分析的另一个重点是对系统性能指标的计算,这些指标包括延迟时间、上升时间、峰值时间以及调节时间等。这些指标为我们提供了一种量化的方式来评估系统对特定输入信号的反应能力,是判断系统是否满足特定设计要求...

    水下机器人反步滑模三维轨迹跟踪控制系统及有限时间扰动观测器的Python实现(复现论文,含详细可运行代码及解释)

    能够在特定条件下评估水下机器人的轨迹追踪表现,优化其性能指标,适用于科研实验及工程项目测试。 其他说明:本文提供了一个简化的实验案例,便于快速理解和验证BSMC+FTDO组合控制器的有效性和可行性。对于更深入的...

    自动控制原理实验报告实验一-一、二阶系统的电子模拟及时域响应的动态测试.pdf

    3. **学习阶跃响应测试**:学习如何测试和分析阶跃响应曲线,以评估系统性能指标。 **二、实验内容** 1. **一阶系统实验**:搭建电子模型,改变时间常数T,记录阶跃响应曲线,测量过渡时间Ts(Ts=3T),以便分析...

    无线通信系统实验实验报告.doc

    总结来说,这个实验不仅涵盖了无线通信的基础理论,还强调了实际操作和性能测试,对于提升学生的理论与实践结合能力有着重要作用。通过实验,学生能更好地理解和应用无线通信技术,特别是图像传输的相关知识。

Global site tag (gtag.js) - Google Analytics