💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
本人主要分享计算机核心技术:系统维护、数据库、网络安全、自动化运维、容器技术、云计算、人工智能、运维开发、算法结构、物联网、JAVA 、Python、PHP、C、C++等。
不同类型针对性训练,提升逻辑思维,剑指大厂,非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。
Linux之cpu性能分析
CPU性能
Linux系统是一个多任务操作系统,CPU需要管理多个任务的执行。当CPU性能不足时,系统处理请求的速度会变慢,会导致资源竞争更加激烈,从而使上下文切换更加频繁,浪费CPU时间。
关注要素
01
1、核心数:
了解服务器的CPU时钟频率和核心数,以便编写能够充分利用多核心并行处理能力的代码。
2、CPU使用率:
使用工具(如top、vmstat等)监控CPU使用率和负载均衡情况,以便及时发现并优化性能瓶颈。
3、缓存大小:
关注缓存大小,并尝试优化数据访问模式以提高缓存命中率,从而减少内存访问延迟。
4、指令集:
了解并利用CPU支持的指令集优化代码,例如使用SIMD(单指令多数据)指令集进行向量计算。
常用的CPU性能分析工具
02
top
top是一个用于监视Linux系统进程和整体性能的工具,即时显示进程的动态信息,详见之前的文章介绍。vmstat
vmstat是一个用于显示关于系统虚拟内存、进程、CPU活动等的统计信息工具。
# 每2秒刷新一次信息vmstat 2
us(user time):用户进程(用户态)占用的CPU时间百分比。
sy(system time):系统进程(内核态)占用的CPU时间百分比。
id(idle time):CPU的空闲时间百分比。
wa(I/O wait time):CPU等待I/O操作的时间百分比。
st(stolen time):被虚拟机偷走的CPU时间百分比。
gu:标准输出中不常见(略)
pidstat
pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、设备IO等系统资源的占用情况。
# 以1秒为周期,获取进程的cpu统计信息
pidstat -u 1
strace、perf
strace命令主要用于跟踪用户态、内核态的系统调用。
pref命令主要用于系统性能数据的收集和分析,可以帮助我们找出程序的性能瓶颈,提高代码运行效率(不写后台代码,略过该处分析)。
总结
03
cpu性能问题体现在us、sy、wa、si(softirq)等数据中,一般us>70%,sy>30%,wa>5%就比较高了。出现CPU问题时,需逐步分析造成该参数升高的原因。比如,sy过高时是否存在频繁分配内存、I/O操作、创建进程的行为等。