性能测试之 cpu 篇

目录

1 前言:

2.1 cpu 介绍

2.1.1 上下文切换

2.1.2 运行队列

2.1.3 CPU 利用率

2.2 cpu 性能监控

2.2.1 vmstat 的使用

2.2.2 案例学习:持续的 CPU 利用率

2.2.3 案例学习:超负荷调度

2.2.4. mpstat 工具的使用

2.2.5. 案例学习: 未充分使用的处理量

2.3. 结论


1 前言:

性能测试是软件测试中的一种技术,它的目的是检查软件的性能和稳定性。CPU 是计算机中的一个重要组件,它负责处理计算机的指令,并执行计算机的任务。在性能测试中,CPU 的性能是一个重要的指标,因为它可以帮助我们更好地理解和分析性能测试的结果。

2.1 cpu 介绍

CPU 利用率主要依赖于是什么资源在试图存取.内核调度器将负责调度 2 种资源种类:线程 (单一或者多路) 和中断.调度器去定义不同资源的不同优先权.以下列表从优先级高到低排列:

  1. Interrupts(译注:中断) - 设备通知内核,他们完成一次数据处理的过程.例子,当一块网卡设备递送网络数据包或者一块硬件提供了一次 IO 请求.
  2. Kernel(System) Processes(译注:内核处理过程) - 所有内核处理过程就是控制优先级别.
  3. User Processes(译注:用户进程) - 这块涉及” userland”.所有软件程序都运行在这个 user space.这块在内核调度机制中处于低优先级.

从上面,我们可以看出内核是怎样管理不同资源的.还有几个关键内容需要介绍,以下部分就将介绍 context(译注:上下文切换),run queues(译注:运行队列) 以及 utilization(译注:利用率).

2.1.1 上下文切换

多数现代处理器都能够运行一个进程 (单一线程) 或者线程.多路超线程处理器有能力运行多个线程.然而,Linux 内核还是把每个处理器核心的双核心芯片作为独立的处理器.比如,以 Linux 内核的系统在一个双核心处理器上,是报告显示为两个独立的处理器.

一个标准的 Linux 内核可以运行 50 至 50,000 的处理线程.在只有一个 CPU 时,内核将调度并均衡每个进程线程.每个线程都分配一个在处理器中被开销的时间额度.一个线程要么就是获得时间额度或已抢先获得一些具有较高优先级 (比如硬件中断),其中较高优先级的线程将从区域重新放置回处理器的队列中.这种线程的转换关系就是我们提到的上下文切换.

每次内核的上下文切换,资源被用于关闭在 CPU 寄存器中的线程和放置在队列中.系统中越多的上下文切换,在处理器的调度管理下,内核将得到更多的工作.

2.1.2 运行队列

每个 CPU 都维护一个线程的运行队列.理论上,调度器应该不断的运行和执行线程.进程线程不是在 sleep 状态中 (译注:阻塞中和等待 IO 中) 或就是在可运行状态中.如果 CPU 子系统处于高负荷下,那就意味着内核调度将无法及时响应系统请求.导致结果,可运行状态进程拥塞在运行队列里.当运行队列越来越巨大,进程线程将花费更多的时间获取被执行.

比较流行的术语就是” load”,它提供当前运行队列的详细状态.系统 load 就是指在 CPU 队列中有多少数目的线程,以及其中当前有多少进程线程数目被执行的组合.如果一个双核系统执行了 2 个线程,还有 4 个在运行队列中,则 load 应该为 6. top 这个程序里显示的 load averages 是指 1,5,15 分钟以内的 load 情况.

2.1.3 CPU 利用率

CPU 利用率就是定义 CPU 使用的百分比.评估系统最重要的一个度量方式就是 CPU 的利用率.多数性能监控工具关于 CPU 利用率的分类有以下几种:

  • User Time(译注:用户进程时间) - 关于在 user space 中被执行进程在 CPU 开销时间百分比.
  • System Time(译注:内核线程以及中断时间) - 关于在 kernel space 中线程和中断在 CPU 开销时间百分比.
  • Wait IO(译注:IO 请求等待时间) - 所有进程线程被阻塞等待完成一次 IO 请求所占 CPU 开销 idle 的时间百分比.
  • Idle(译注:空闲) - 一个完整空闲状态的进程在 CPU 处理器中开销的时间百分比.

2.2 cpu 性能监控

理解运行队列,利用率,上下文切换对怎样 CPU 性能最优化之间的关系.早期提及到,性能是相对于基准线数据的.在一些系统中,通常预期所达到的性能包括:

  • Run Queues - 每个处理器应该运行队列不超过 1-3 个线程.例子,一个双核处理器应该运行队列不要超过 6 个线程。

  • CPU Utiliation - 如果一个 CPU 被充分使用,利用率分类之间均衡的比例应该是:

65% - 70% User Time
30% - 35% System Time
0% - 5%   Idle Time
  • Context Switches - 上下文切换的数目直接关系到 CPU 的使用率,如果 CPU 利用率保持在上述均衡状态时,大量的上下文切换是正常的.

很多 Linux

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值