最近研究了一下linux系统cpu调优的方式,在此记录一下,以备参考。
linux系统是通过/proc虚拟文件系统,向用户空间提供了系统内部状态信息的。
man proc
cat /proc/stata | grep ^cpu
首先,先来认识一下几个常见的Linux常用的命令:
1. uptime 查看系统的平均负载
2. mpstat -p ALL 5 查看整个操作系统的cpu使用率
3. pidstat -u 5 1 查看进程的资源使用情况(包括-u cpu和 -d 内存)
4. vmstat 可以查看系统上下文切换的次数 和 中断次数
5. stress 可以用来做压测工作
6. sysstat 用来做性能监控
7. ps 和 top 都可以用来查看资源的使用情况,那么这两个命令有什么区别呢?
其中 ps 查看进程资源的具体情况
top 查看系统总体的cpu和内存资源使用情况
和 各个进程的资源使用信息
8. pidstat 中的%wait 和 top中的wa 有什么区别?
pidstat 中的wait%参数指的是进程等待cpu的时间百分比
top中的wait%指的是等待I/O的cpu时间百分比
区别在于等待cpu进程是可运行状态,而等待I/O进程是不可中断状态
9. perf top 实时显示占用cpu时钟最多的函数/指令
perf record perf report 可将资源信息 保存,用于离线或者事后分析
-g 可以开启调用 关系采样,调用链 分析问题
顺便记录下进程的几种状态 :
R :运行状态
I : 空闲状态
D : 不可中断睡眠 ===》 跟硬件交互,为了保证数据的一致性
S : 可中断状态睡眠
Z : 僵尸进程
T : 暂停状态
孤儿进程
其中
pstree -aps 可以查看 系统调用关系
strace 进程系统调用工具