1. CPU相关的性能指标是linux各种性能指标中最核心的指标之一。
条目 | 来源命令 | 标识名称 | 英文释义 | 中文翻译 | 用途 | 具体含义 |
---|---|---|---|---|---|---|
1 | top | %Cpu | CPU state percentages | CPU 状态百分比 | 整机级别 | us,sy,ni,id,wa,hi,si,st分别代表各状态的百分比。 |
2 | top | %CPU | CPU Usage | CPU使用率 | 进程级别 | 默认代表过去3秒内的进程CPU消耗时间片与自然时长比。 |
3 | ps | %CPU | cpu utilization | CPU使用率 | 进程级别 | 自进程启动CPU消耗时间片与自然时长比,与top值不同。 |
1.1 CPU指标含义解读。
- Linux ps命令计算%CPU的方法,是范围指标。
- 更改top命令的默认刷新时间: 按d健 输入0.1
- 8个CPU状态百分比之和永远等于100。
2. CPU状态指标详解
Top命令的CPU状态百分比指标一共8个,这8个指标都是缩写,对应的全称和含义如下:
缩写 | 全称 | 含义说明 |
---|---|---|
us | user | 消耗在用户态的CPU资源 |
guest | 宿主机环境中,通过虚拟化运行虚拟机的时间,包含在user内。 | |
guest_nice | 宿主机环境中,以低优先级运行虚拟机的时间,包含在user内。 | |
sy | system | 消耗在内核态的CPU资源 |
ni | nice | 低nice优先级的进程消耗在用户态的CPU资源 |
id | idle | 空闲状态的CPU资源 |
wa | iowait | 等待io完成时消耗的CPU资源 |
hi | irq | 完成硬中断消耗的CPU资源 |
si | softirq | 完成软中断消耗的CPU资源 |
st | steal | 虚拟机环境中,被其他虚拟机或宿主机占用的CPU资源 |
3. CPU状态百分比和CPU使用率的关系
- top命令的us值会平稳维持在75.2左右。tsar2的23:25时间的user值75.60,这说明23:24分到23:25分这60秒内的CPU状态百分比中user的平均值是75.60。这两个值75.2和75.60基本一致,都说明在4核中使用了3个核。
- ssar --cpu视图在23:25时间的user值是301.35。这说明23:24分到23:25分这60秒内的CPU状态绝对值中user的平均值是301.35。也说明4核中使用了3个核。
- ssar的procs子命令,在23:25时刻的3个stress进程pcpu分别是100.0。 这说明23:24分到23:25分这60秒内的每个stress进程的CPU使用率都是100。
- 因此,但我们发现整机CPU状态百分比是75%时,我们可以通过ssar procs子命令将整机CPU状态绝对值301.35拆分到进程级CPU使用率,即301.25 ≈ 100 + 100 + 100。从而可以在整机user类型的CPU状态异常偏高时,精准定位到进程级因素。
- 逻辑关系:CPU状态百分比 => CPU状态绝对值 => CPU使用率
4. linux系统的调度优先级
Linux的6种线程调度类型:
线程类型 | 类型值 | 类型常量 | 备注 |
---|---|---|---|
TS | 0 | SCHED_NORMAL | 分时调度线程 |
FF | 1 | SCHED_FIFO | FIFO先进先出实时调度线程 |
RR | 2 | SCHED_RR | 循环实时调度线程 |
B | 3 | SCHED_BATCH | 批处理线程 |
IDL | 5 | SCHED_IDLE | 惰性线程 |
DLN | 6 | SCHED_DEADLINE | 限期调度线程,自Linux 3.14起 |
Linux引入这么多线程类型的主要目的是区别各个类型获取CPU资源的能力。这6类线程调度类型中,DLN属于最高优先级调度类型。FF和RR属于实时线程,优先级次高,接受实时优先级控制,取值范围是1到99。B和TS类型居于中间,接受nice值控制,其中TS类型取值范围是-20到+19,默认值是0。IDL类型优先级最低。