软件性能测试理论手札(二)

本文详细介绍了操作系统性能分析,包括Windows的内存、处理器、磁盘I/O分析方法,以及UNIX/Linux的主要计数器。同时,深入探讨了Android系统的Linux内核、内存管理和性能分析,和iOS的CPU、内存调优。通过对这些系统性能计数器的分析,可以帮助优化系统性能,解决潜在瓶颈问题。
摘要由CSDN通过智能技术生成


第二章     操作系统性能计数器及分析方法

性能计数器通常被用来衡量被测系统当前的状况和进行性能测试结果分析。单一的新能计数器通常反映了系统性能的侧面,在进行性能测试结果分析时,一般要多个性能计数器进行分析。本章按照操作系统对性能测试过程中使用到的计数器进行说明。

2.1 Windows性能计数器及其分析

         操作系统计数器可用来监控操作系统级别上的系统性能表现。

2.1.1 Window操作系统的主要计数器

Windows操作系统的主要计数器如表2.1所示:

                                                 2-1 Windows操作系统的主要计数器


 

2.1.2 内存分析方法

         内存分析用于判断系统有无遇到内存瓶颈,是否通过增加内存来等手段来提高系统性能表现。

         内存分析需要使用表2-1中的MemoryPhysicalDisk类别的计数器。以下是内存分析的主要方法和步骤。

  1. 查看Memory\Available Mbytes指标

该指标是描述系统可用内存的直接指标。如果该指标的数据比较小,系统可能出现了内存方面的问题。

  1. 注意Pages/secPages Read/secPages Faults/sec的值

windowslinux操作系统提供这三个指标来支持磁盘交换次数的统计,这三个指标直接反映了操作系统进行交换的频度。如果Pages/secPages Faults/sec数值很大而且Pages Read/sec计数值超过5,则可以判断为内存方面的问题

  1. 根据Physical Disk计数器的值分析性能瓶颈

如果Pages Read/sec值很低,但%DiskTimeAverage Disk Queue Length的值很高,则可能是磁盘瓶颈;如果队列长度增加,但Pages Read/sec并未降低,则是由于内存不足。

 

2.1.3 处理器分析方法

处理器(CPU)也可能是系统的瓶颈,如下是针对处理器进行分析的步骤:

  1. 查看System\%TotalProcessor Time性能计数器的计数值

    该计数值用于体现服务器整体的处理器使用率,对多处理器系统来说,该值体现了所有CPU的平均使用率。该值的数值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,需要通过增加处理器来提高性能。

    PS:由于操作系统本身的特性,在某些多CPU系统中,该数据本身并不大,但若CPU之间的负载情况极为不均衡,也应该视作系统产生了处理器方面的瓶颈。

  2. 查看每个CPUProcessor\%ProcessorTimeProcessor\%UserTimesProcessor\%PrivilegedTime

    Processor\%User Time是指系统的非核心操作系统消耗的CPU时间,如果该值较大,可以考虑是否通过算法优化等方法来降低该值。如果该服务器是数据库服务器,Processor\%User Time值大的原因很可能是数据库的排序或函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。

  3. 研究系统处理器瓶颈

    查看System\Processor Queue Length计数器的值,当该计数器的值大于CPU数量的总数加1,说明处理器阻塞。处理器的%Process Time值很高时,一般都伴随着处理器阻塞,但产生处理器阻塞时,Processor\%Process Time计数器的值并不一定很大,此时就需要查看处理器阻塞的原因。

    %DPC Time该值越低越好,在多处理器系统中,如果该值大于50%并且Processor\%Process Time值非常高,则考虑加入一个网卡来提高性能

2.1.4 磁盘I|O分析方法

         磁盘I|O也是影响系统性能的一个关键因素。如果所分析的计数器指标来自于数据库服务器、文件服务器、流媒体服务器,磁盘I|O更容易成为瓶颈。磁盘I|O的分析方法如下:

  1. 计算每磁盘的I|O

    每磁盘的I|O数用来与磁盘的I|O能力进行对比,如果计算得到的每磁盘I|O数超过了磁盘标称的I|O能力,则说明确实存在磁盘的性能瓶颈。表2-3给出了每磁盘I|O的计算方法。

    2-3 每磁盘I|O的计算方法

  2. Processor\Privileged Time合并分析

    如果Physical Disk计数器中,只有%Disk Time值较大,其他值都比较合适,则硬盘可能会是瓶颈。若几个值都比较大,且数值持续超过80%,则可能是内存泄漏。

  3. 根据Disk Sec/Transfer进行分析

一般来说,定义Transfer数值小于15毫秒为优秀,介于15~30毫秒之间为良好,在30~60毫秒之间为可以接受,超过60毫秒则需要考虑更换硬盘或硬盘的RAID方式了

 

2.2 UNIX/LINUX性能计数器及其分析

2.2.1 UNIX/LINUX操作系统的主要计数器

         UNIX/LINUX操作系统的主要计数器表2-2所示。

2-2 UNIX/LINUX操作系统的主要计数器

       PS:LINUX操作系统的命令与UNIX稍有差别。UNIX系统的主要计数器监控命令是vmstatiostattopsar、和seg(图形方式,需要XServer支持);而在Linux中,没有iostat命令,iostat可以监控的计数器包含在vmstat命令中,可以通过参数控制。

 

2.3 Android 系统性能计数机器分析

2.3.1 Linux 内核

Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。内核组成如下图:

2.3.1.1系统调用接口

SCI 层提供了某些机制执行从用户空间到内核的函数调用。正如前面讨论的一样,这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。有关这个组件的更详细信息可以在 参考资料 一节中找到。

2.3.1.2进程管理

进程管理的重点是进程的执行。在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU 寄存器)。在用户空间,通常使用进程 这个术语,不过 Linux 实现并没有区分这两个概念(进程和线程)。内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(forkexec Portable Operating System Interface[POSIX] 函数),停止进程(killexit),并在它们之间进行通信和同步(signal 或者 POSIX 机制)。

进程管理还包括处理活动进程之间共享 CPU 的需求。内核实现了一种新型的调度算法,不管有多少个线程在竞争 CPU,这种算法都可以在固定时间内进行操作。这种算法就称为 O(1) 调度程序,这个名字就表示它调度多个线程所使用的时间和调度一个线程所使用的时间是相同的。 O(1) 调度程序也可以支持多处理器(称为对称多处理器或 SMP)。您可以在 ./linux/kernel 中找到进程管理的源代码,在 ./linux/arch 中可以找到依赖于体系结构的源代码。在 参考资料 一节中可以了解有关这个算法的更多内容。

2.3.1.3内存管理

内核所管理的另外一个重要资源是内存。为了提高效率,如果由硬件管理虚拟内存,内存是按照所谓的内存页 方式进行管理的(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。

不过内存管理要管理的可不止 4KB 缓冲区。Linux 提供了对 4KB 缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB 缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。

为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。内存管理的源代码可以在 ./linux/mm 中找到。

2.3.1.4虚拟文件系统

虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS SCI 和内核所支持的文件系统之间提供了一个交换层,如下图

         VFS 上面,是对诸如 opencloseread write 之类的函数的一个通用 API 抽象。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过 50 个)的插件。文件系统的源代码可以在 ./linux/fs 中找到。

文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。

2.3.1.5网络堆栈

网络堆栈在设计上遵循模拟协议本身的分层体系结构。回想一下,Internet Protocol (IP) 是传输协议(通常称为传输控制协议或 TCP)下面的核心网络层协议。TCP 上面是 socket 层,它是通过 SCI 进行调用的。

socket 层是网络子系统的标准 API,它为各种网络协议提供了一个用户接口。从原始帧访问到 IP 协议数据单元(PDU),再到 TCP User Datagram Protocol (UDP)socket 层提供了一种标准化的方法来管理连接,并在各个终点之间移动数据。内核中网络源代码可以在 ./linux/net 中找到。

2.3.1.6设备驱动程序

Linux 内核中有大量代码都在设备驱动程序中,它们能够运转特定的硬件设备。Linux 源码树提供了一个驱动程序子目录,这个目录又进一步划分为各种支持设备,例如 BluetoothI2Cserial 等。设备驱动程序的代码可以在 ./linux/drivers 中找到。

2.3.1.7 依赖体系结构的代码

尽管 Linux 很大程度上独立于所运行的体系结构,但是有些元素则必须考虑体系结构才能正常操作并实现更高效率。./linux/arch 子目录定义了内核源代码中依赖于体系结构的部分,其中包含了各种特定于体系结构的子目录(共同组成了 BSP)。对于一个典型的桌面系统来说,使用的是 i386 目录。每个体系结构子目录都包含了很多其他子目录,每个子目录都关注内核中的一个特定方面,例如引导、内核、内存管理等。这些依赖体系结构的代码可以在 ./linux/arch 中找到。

2.3.2 安卓系统性能分析
  • CPU

    CPU的快慢直接决定了手机的反应速度,但是速度越快的CPU耗电量就越大。目前主流的智能手机CPU有以下几种:

  1. 德州仪器

优点:低频高能且耗电量较少,高端智能机必备CPU

缺点:价格不菲,对应的手机价格也很高,OMAP3系列GPU性能不高,但OMAP4系列有了明显改善,数据处理能力较弱。

 

  1. Intel

优点:CPU主频高,速度快

缺点:耗电、每频率性能较低

 

  1. 高通

优点:主频高,数据处理性能表现出色,拥有最广泛的产品路线图,支持包括智能手机、平板电脑、智能电视等各类终端,可以支持所有主流移动操作系统,支持3G/4G网络制式

缺点:图形处理能力较弱,功能耗较大。

 

  1. 三星

优点:耗电量低、三星蜂鸟S5PC110单核最强,DSP搭配较好,GPU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WEL测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值