首页 > 编程知识 正文

性能测试 PTS,性能测试环境搭建

时间:2023-05-04 22:37:57 阅读:28034 作者:2586

第06课:系统性能检测: Unixbench,FIO性能测量本课推荐两种系统性能检测工具: Unixbench和FIO。 系统验收和性能测试是评估整个业务部署前是否经常使用和达到性能的重要因素。 因此,为了评估是否适合部署服务和相应的业务,必须了解服务的整体性能。

要了解这门课的内容,建议您在上课前了解Linux的使用基础和操作系统原理。

一.测试前的关注点

通常,在对一个系统进行基准测试之前,需要了解其用途和系统本身的情况。

关于操作系统,我们自己并不是很清楚。 在进行系统性能测试时,必须着重于是否需要优化引起性能变化的设置。 p-state和c-state的状态值是否已经进行了优化,就像服务器CPU的功耗性能管理设置一样? 尽可能优化系统性能、CPU计算性能。

此外,还需要关注是否优化了影响系统性能的参数,如系统内核的某些参数(包括文件打开句柄、网络队列大小等)。 当然,关于系统性能参数的具体内容,稍后将在另一堂课中详细说明。

另一方面,也必须了解系统本身的缺陷(驱动程序模块、开发库缺陷、修补程序等)。 举个例子吧。 以前,我在系统上熔断,打了幽灵安全补丁后,发现这增大了操作系统的性能损失。 了解这一点有助于我们分析结论,提高系统能力。

我认为这需要在你做系统性能测试之前,在系统本身累积沉淀。

除此之外,我们还需要了解业务需求的情况,为什么还要了解业务需求的情况呢? 因为系统最终需要运送业务。 因此,此时需要知道业务特性是什么样的。 特性主要体现在业务是否有高峰期和低高峰期,它需要何时搭载多大程度的QPS等。

而且,对于业务,必须结合其资源利用类型是执行存储型服务还是计算型服务来考虑。 我们需要知道服务体系结构大致是什么样的。 假设要部署Nginx,您是否需要知道要部署反向代理服务? 还是需要缓存服务? 还是用作静态元素的Web服务? 等等。

了解业务的整体情况后,我们心中会有秤,可以让测试结果更加明确。 我们不仅仅在执行,还在向更高的层次考虑问题。

二、篇章思维导图

运维相关性能测试在此主要分为四大类:业务压力测量、服务压力测量、网络压力测量、系统压力测量。

业务压力测试是指,例如像Web程序服务那样,想要针对某个接口模拟大量的请求压力测试时,可以使用aapchebench(ab )WebBench等工具模拟业务客户端的请求

也是服务的测量,如使用Sysbench测量MySQL服务指标。

网络压力测量在此分别列举,是因为需要挤压网络带宽和容错能力,例如使用Netperf工具进行网络压力测量。

最后,系统测试是本课重点介绍的知识点,完整的系统测试主要涵盖了这些组成部分。 一个是硬件,物理单元由几个核心组件组成,如CPU、内存、磁盘和网卡。

其中,带有红色字体的CPU、内存、磁盘是硬件系统压力测量的重点指标,这三者极大地决定了许多服务的承载能力,影响了整个业务的性能。

另外两种配置是操作系统本身和相关开发库,在系统测试时实际测试硬件、系统、开发库三个组成部分。

三. Unixbench的使用接下来介绍系统的压力测量。 本课重点介绍Unixbench。

Unixbench是一个基于系统(Linux、Unix )的基准测试工具。 什么是基准呢? 基准测试是给与共同基准的分数,并在此基础上给其他操作系统打分,测定该操作系统应该给多少分数,与基础有多少差异。

那么你怎么知道这个分数高还是低呢? 就像老师给很多学生进行考试,给试卷评分一样,考试是有标准的。 60分以上为及格分数,80分以上或90分以上为优异,所以这里也有测定标准。 这个测量标准是一个标准。

Unixbench基准测试基于1995年一个名为zxdyf的基准测试了操作系统。 虽然有工作站,但它拥有128 MB的内存,使用Solaris系统进行测试,测试结果为10分,这是基准测试的分数。

目前,操作系统和硬件发展迅速。 用Unixbench测量的话,会得到更高的分数。 比较这个分数及其基准分数,可以非常形象地进行比较分析。 也可以进行横向比较,例如与其他服务的结果进行比较。 也可以参考这个基准分数。

必须手动下载Unixbench工具。 下载到GitHub,安装成功后,请使用run命令启动基准。 可以在run命令后面添加几个参数:-q、-v、-i count和-c n。

-q不显示测试过程。 显示-v测试过程。 也就是说,控制是否显示测试过程。 -控制-icount的执行次数、最少3次、默认10次,即最多每1次基准项目执行几次。 Unixbench可以对很多操作系统能力进行基准测试。 总分值由多个测试项目的综合得分构成,每个测试项目都测试了很多测试项目

少次,就是由 -i 加数字的方式去控制的。-c 是在多核 CPU 场景测试指标,可以了解到操作系统上多核 CPU 的性能程度。比如一台机器是四核 CPU,这个时候设置为 -c 4,也就是运行 4 个 Unixbench 任务同时去执行基准测试打分,这样我们就能更加客观的得出,在 4 个 CPU 同时被使用的时候,大概的一个分数会是什么样子的。

以上就是安装完 Unixbench 以后,run 命令后面所默认可以加的参数。

这是一个执行示例,我们可以用 ./Run 直接来运行,等待结果需要一段时间,如果你不能等待那么久可以选择后台运行,后台的运行方式我们可以选择使用 nohup 直接运行。这种方式在前面直接加个 nohup,后面加一个 & 符号,就可以直接把 run 方式放到后台中运行了。

对于刚讲到的,Unixbench 有很多个测试项,那么分别都有哪一些测试项呢?

这里我列出了它的相关测试项,你可以看到它所测试每一个基准测试项,比如,它可以测试浮点的超时效率;还会测试 Excel 每秒可以执行的系统调用,也会测试管道的直接吞吐能力,等等。

对于 Unixbench,在使用完以后大概的执行结果会是这样子的,分别是:

第一是展示测试进度;第二是系统信息的汇总,也就是它会摘取并展示操作系统当前 CPU 的一些基础的操作系统信息;最后一个当然是我们更关注的测试结果。

测试结果会分为两部分:

如果你只启用了一个单副本的测试,也就是我们在刚刚讲到的,比如 -c=1 就是一个单核 CPU 的测试;如果你是对多副本进行测试,也就是 -c>1 时,它会分别列出单副本测试和多副本测试是什么样的测试结果。

这里再举一个案例,假设我们现在要去对一台 AMD 主机和一个英特尔处理器来做一个性能上的差异对比。那我选择了两台机器,前提是同样的配置,磁盘类型保持一致,操作系统也保持一致,只是 CPU 类型不一致。这种情况下,我们来对比最新一代的 AMD,也就是 Rome 这一代的 CPU 和 Intel 的 CPU 的性能差异。

在第一项中,如果没有加指定 -i 的话,最多测试 10 次。如果我们给 -i 指定的更多则可以测试更多次数。

这里记录了分别在 AMD 机型上测试的结论和结果、数据,及在 Inter 机型上测试的数值。我们看到首先列出每一项的数值是测试内容,以及所花费的时间。那么在后面的这一段里面会看到每一项的基线分数。

以上这些列出两个 CPU 在跑一个副本的时候的测试结果。

下面就是两个 CPU 的系统上启用两个副本的(-c 2)测试结果。同样是先测出每一项的数值、单位、所花时间。同样看到每一项测试结论、当前对系统测试打分的情况。那么我们同样来对比一下 AMD 机型和英特尔机型的差异。

我们就可以用 vim -d 把两个记录 Unixbench 测试结论的文件都打开,分析数值跑分结果并作对比。AMD 的跑分数值会比英特尔的 CPU 的分数更高一些,所以会发现最新一代的 Rome AMD CPU 的性能优于另外一款英特尔 CPU 。

Unixbench 测试项里面更多关注的是计算性能和内存的 IO 等场景。而操作系统除了需要重点关注这两个性能指标外,我们还想知道磁盘 IO 处理能力是什么样子,这个时候就需要对磁盘的 IO 进行一个测试,磁盘的 IO 往往很大程度决定了在操作系统上服务的性能,比如说 MySQL 等数据库属于高 IO 型的服务,这些都是需要用到磁盘的 IO,所以我们需要对磁盘进行一个测试,接下来介绍的 FIO 工具就是做这个用的。

四、FIO 使用

FIO 是一个开源的主流的 Linux 磁盘 IO 测试工具。通常对于磁盘的测试主要会关注这几个测试项,分别是:Iops,也就是每秒进行读写(I/O)操作的次数,它评估的是,每秒对于磁盘的操作次数和能力,执行次数越多说明执行数据越快。

另外一个指标就是对磁盘的吞吐率,它表示每秒对于磁盘的读写数据量,单位为 MB/s,数值越高表示读写数据越多。

第三个指标就是读写延迟,表示单个 IO 去写磁盘,做一次 IO 操作的耗时是多少。

我们使用 FIO 这个工具可以针对这三项指标去进行测试,并分析结论,在使用 FIO 之前建议你尽量使用一台空闲的机器来运行,以免因为 FIO 对操作系统上的磁盘或者文件的读写而损坏文件系统,这个地方你需要注意一下。

关于 FIO 的使用,参数相比于 Unixbench 就更多了。我们会看到这里有很多的参数说明,值得重点注意的有:bs 这个参数表示块的大小, iodepth 表示队列的请求深度,我们可以理解为在请求 IO 时会有多少个并发,如果深度数值越大说明并发请求越多。

另外一个 rw,它可以控制磁盘的读写模式。我们知道磁盘分为顺序读、顺序写、随机读写、混合读写等相关的读写场景,如果你需要指定特定场景,那么可以通过 rw 的参数来设置。

这就是 FIO 的基础使用所涉及的一些参数,其他参数请你自己课后看一下。

我们接下来讲一下,对于 FIO 测试的时候,我们所需要进行的针对性的测试 IO 指标(吞吐率的测试结论,延迟的测试结论),那就需要我们控制好 FIO 测试的参数。

比如说我们想对延迟进行测试,这个时候我们会把它对应深度调为 1,也就是模拟一个队列对磁盘进行操作的时候,把块大小设置为 4k,这样的话就能够做到单个队列上读写的延迟测试。我们能够着重测出硬盘的延迟的指标。

rw 参数里可以指定磁盘读写类型,如果为 randrw 那就是作随机读写的延迟测试。

第二个就是做硬盘的吞吐测试。

硬盘的吞吐测试就是硬盘上最大的吞吐率带宽。需要尽可能的把总线带宽或者 IO 带宽跑满,那怎么做呢?

我们把队列调到更大(32),然后把 bs 也就是单个块的大小调到比较大的一个值(128k),这样的话就能够测试最大能力去跑满整个磁盘带宽,这样的设置更加能够反映出硬盘的吞吐能力。

最后一个就是 iops 指标测试。关注 iops 的话,做到的是要在单位时间内尽可能的多的读磁盘,所以我就会把 bs 这块的能力给它调小,但同时会把队列调到最大,这个时候才能够测试在单位时间一秒内能够读写操作磁盘数。

对于这三种性能指标测试,你都可以参考对应设置,来得出磁盘能力对应的结论。

最后再介绍 FIO 的案例。主要测的就是我本地盘的 SAS、SATA、SSD 在性能上的差异性。这里我会拿三台机器,这三台机器只是本地的磁盘类型不同,其他的配置保持一致。通过 FIO 测试后会看到一个测试数据,这里分别会展示出每一个磁盘的 iops 及吞吐能力的大概情况。我只是测试顺序读写模式下我们可以看到 SSD 盘整个的吞吐能力和 iops 会比我使用 SATA 或者 SAS 盘的能力会更加的高,约高出 4 倍以上。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。