一、CPU上下文切换测试场景

使用sysbench模拟多线程调度:

sysbench --threads=10 --time=300 threads run

使用vmstat查看CPU上下文切换:

cs列上下文切换次数超过150万次。

r列就绪队列长度最大达到8,超过系统CPU的个数4,存在大量的CPU竞争。

sy列超过70%,说明CPU主要是被内核占用。

in列中断次数上升到40000以上,说明中断处理也是个潜在的问题。

系统就绪队列过长,即正在运行和等待CPU的进程数过多,导致大量的上下文切换,而上下文切换又导致了系统 CPU 的占用率升高。

使用pidstat -wt 3查看具体线程:

sysbench线程的cswch超过40000,nvcswch超过100000。

观察CPU的中断使用情况:

watch -d cat /proc/interrupts

重调度中断(RES)超过400万次,用于唤醒空闲状态的CPU来调度新的任务运行。多处理器系统(SMP)中,处理器间中断(Inter-Processor Interrupts,IPI)用来分散任务到不同CPU的机制。

二、CPU平均负载测试场景

1、CPU密集型进程

第一个终端运行stress命令,模拟一个CPU使用率100%的场景。

stress --cpu 1 --timeout 600

在第二个终端运行uptime查看平均负载的变化情况。

watch -d uptime

在第三个终端运行mpstat查看CPU使用率的变化情况。

mpstat -P ALL 5

监控所有CPU,每隔5秒输出一次。

第二个终端uptime监控的1分钟的平均负载会缓慢增加到1.21。

第三个终端中CPU3的使用率为96%,但相应iowait只有0,平均负载的升高是由于CPU使用率为100%。

第四个终端运行pidstat查看进程的CPU使用率,发现stress进程的CPU使用率为100%。

pidstat -u 5 1

2、IO密集型进程

第一个终端运行stress命令,模拟一个IO密集型进程。

stress -i 1 --hdd 1 --timeout 600

第二个终端运行uptime查看平均负载的变化情况。

watch -d uptime

第三个终端运行mpstat查看CPU使用率的变化情况。

mpstat -P ALL 5

第四个终端运行pidstat查看进程的CPU使用率,发现stress进程的CPU使用率相对比较高。

pidstat -u 5 1

3、等待CPU进程

当系统中运行进程超出CPU运行能力时,就会出现等待CPU的进程。

第一个终端运行stress命令,模拟10个进程的场景。

stress -c 10 --timeout 600

由于系统只有4个逻辑CPU,比10个进程要少得多,因而,系统的CPU处于严重过载状态,平均负载高达9.96。

mpstat查看CPU使用率都接近100%。

10个进程争抢4个逻辑CPU,每个进程等待CPU时间(%wait 列)高达60%,严重超出CPU计算能力,最终导致CPU过载。

三、CPU使用率测试场景

1、开启多线程压力测试

sysbench --threads=8 --time=600 cpu run

使用sysbench开启8线程压力测试,持续时间600秒

2、实时分析

sudo perf top -g -p 30388

实时分析sysbench进程30388的性能

选择sysbench,按ENTER键。

选择CPU使用率最大的cpu_execute_eventh函数,按ENTER键进入查看。

选择Annotate cpu_execute_event按ENTER键进入,查看函数内部调用所占CPU。

从cpu_excute_event函数调用看,取模运算占用CPU使用率高达70%以上。

3、离线分析

perf record -g -p 28068

采样sysbench进程性能数据

perf report

解析性能数据

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux30403 人正在系统学习中
量化IT技术交流群


QQ群名片

【转帖】Linux性能优化(十三)——CPU性能测试的更多相关文章

  1. Linux性能优化之CPU优化(一)

    前言 何为性能优化?个人认为,性能优化是为了提高应用程序或系统能力为目的.那么如何才能实现对应用程序的性能调优呢?这里很设计到很多的内容,包括Linux内核.CPU架构以及Linux内核对资源的分配以 ...

  2. Linux性能优化实战CPU篇之总结(四)

    一.分析CPU瓶颈 1,性能指标 a>CPU使用率 CPU使用率描述了非空闲时间占总CPU时间的百分比,根据CPU上运行任务的不同可以分为:用户CPU.系统CPU.等待I/O CPU.软中断和硬 ...

  3. Linux性能优化实战CPU篇之软中断(三)

    一.软中断 1,中断的定义 a>定义 举例:你点了一份外卖,在无法获知外卖进度的情况下,配送员送外卖是不等人的,到了发现没人取会直接走,所以你只能苦苦等着,时不时去门口看送到没有,无法干别的事情 ...

  4. Linux性能优化:CPU性能分析工具--vmstat

    Blog:博客园 个人 目录 参数说明 输出信息说明 procs memory swap io system cpu 示例 vmstat是Virtual Meomory Statistics(虚拟内存 ...

  5. 3 Linux性能优化之 CPU上下文

  6. linux性能优化cpu 磁盘IO MEM

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

  7. Linux性能优化 第二章 性能工具:系统CPU

    2.1 CPU性能统计信息 2.1.1运行队列统计 在Linux中,一个进程要么是可运行的,要么是阻塞的(正在等待一个事件的完成).阻塞进程可能在等待从I/O设备来的数据,或者是系统调用的结果如果一个 ...

  8. Linux 性能优化之 IO 子系统 系列 图

    http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...

  9. 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

  10. 性能优化中CPU、内存、磁盘IO、网络性能的依赖(转)

    关于系统性能优化,推荐一篇不错的博客! 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试 ...

随机推荐

  1. DevOps|我们需要什么样的产研项目管理工具

    上一篇文章<DevOps|产研运协作工具链上的皇冠-项目管理工具>主要讲了项目管理工具对软件研发的重要性,本篇文章主要想讲清楚我们需要什么样的项目管理工具,项目管理工具必须具备的功能有哪些 ...

  2. js文字转语音播放SpeechSynthesisUtterance

    文字转语音 SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音 function sayTTS(content) { const synth = ...

  3. LiteOS:盘点那些重要的数据结构

    摘要:本文会给读者介绍下LiteOS源码中常用的几个数据结构,包括: 双向循环链表LOS_DL_LIST,优先级队列Priority Queue,排序链表SortLinkList等. 在学习Huawe ...

  4. 当自动驾驶遇到5G,会擦出怎样的火花?这篇文章说明白了

    作者:华为云EI专家厉天一 摘要:无人驾驶是通过自动驾驶系统,部分或完全的代替人类驾驶员,安全地驾驶汽车.汽车自动驾驶系统是一个涵盖了多个功能模块和多种技术的复杂软硬件结合的系统.本文将基于5G技术来 ...

  5. 带你了解WDR-GaussDB(DWS) 的性能监测报告

    摘要:通过本文,读者可知晓什么是WDR,如何创建性能数据快照以及生成WDR报告. 本文分享自华为云社区<WDR-GaussDB(DWS) 的性能监测报告>,作者:Zhang Jingyao ...

  6. 一文讲述数仓组件SysCache

    摘要:SysCache是ThreadLocal结构,每个线程都具有各自的SysCache,其中存储的缓存信息由执行的业务决定. 本文分享自华为云社区<GaussDB(DWS)CBB组件之SysC ...

  7. 最后一天,CDMP数据治理认证高分训练营(9-10月)开放报名!

    大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人. 首先告诉大家一个好消息,在大家共同的努力下,我们的CDMP国际数据治理认证训练营(7-8月)基本收官, ...

  8. SocketChannel支持设定参数

    SocketChannel支持设定参数SO_SNDBUF 套接字发送缓冲区大小SO_RCVBUF 套接字接收缓冲区大小SO_KEEPALIVE 保护连接O_REUSEADDR 复用地址SO_LINGE ...

  9. Nginx--upstream健康检查

    nginx 判断节点失效状态: Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正 ...

  10. 10.4K Star!程序员为程序员针对性优化的开源免费笔记

    平时我一直用Notion来记录内容为主,但也一直关注着其他开源产品.上周正好看到一款非常受欢迎的开源免费笔记,今天就推荐给大家:VNote. VNote一个由程序员为程序员打造的开源笔记应用,基于Qt ...