1.CPU统计信息
1.1 上下文切换
如果要制造出给定单处理器同时运行多个任务的假象,Linux内核就要不断地在不同的进程间切换。这种不同进程间的切换称为上下文切换。
上下文切换包括:进程正在执行的指令,分配给进程的内存,进程打开的文件等。因此上下文切换的开销是非常大的,需要尽量避免上下文的切换。
上下文切换是内核调度的结果,内核周期性的中断正在运行的进程,周期性或定时发生时,你的系统都可能进行上下文切换。
1.2 中断
处理器还周期性地从硬件设备接收中断。当设备有事件需要内核处理时,它通常就会触发这些中断
1.3 CPU使用率
cpu可以有七件事情,任何时间都是执行七件事情中的一个:
(1)CPU可以是空闲的,这意味着处理器实际上没有做任何工作,并且等待有任务可以执行。
(2)CPU可以运行用户代码,即指定的“用户”时间。(3)CPU可以执行Linux内核中的应用程序代码,这就是“系统”时间。
(4)CPU可以执行“比较友好”的或者优先级被设置为低于一般进程的用户代码。
(5)CPU可以处于iowait状态,即系统正在等待I/O(如磁盘或网络)完成。
(6)CPU可以处于irq状态,即它正在用高优先级代码处理硬件中断。
(7)CPU可以处于softirq模式,即系统正在执行同样由中断触发的内核代码,只不过其运行于较低优先级(下半部代码)。
2.Linux CPU性能工具
2.1 vmstat
vmstat是一个很有用的命令,它能获取整个系统性能的粗略信息
❑正在运行的进程个数。
❑CPU的使用情况。
❑CPU接收的中断个数。
❑调度器执行的上下文切换次数
调用命令行:
vmstat [-n] [-s] [delay count]
CPU相关的vmstat输出
2.2 top指令
top指令默认是将CPU最多的进程按照降序排列的列表。默认会3s更新这个列表
top实际上有两种模式的选项:命令行选项和运行时选项。命令行选项决定top如何显示其信息
2.3 mpstat 多处理器统计
展示的是CPU随时间变化的行为
mpstat [-P {cpu|ALL}] [delay|count]
delay 指定了采集间隔,count指定了采集次数
示例:查看处理器编号为0的CPU的统计信息
mpstat -P 0 1 10 //查看编号为0的处理器,1s一次,连续执行10次
2.4 sar指令
sar能有效地将收集到的系统性能数据记录到二进制文件,之后,可以重播这些文件。sar是一种低开销的、记录系统执行情况信息的方法。
sar [options] [delay | count]