2020-12 CPU占用率分析

用户态和内核态

内核态(Kernel Mode):运行操作系统程序,操作硬件 用户态(User Mode):运行用户程序

  • 内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态。因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;

  • 当程序运行在0级特权级上时,就可以称之为运行在内核态。

  • 运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态(比如操作硬件)。

往往我们的系统的资源是固定的,例如内存2G,CPU固定,磁盘2TB,网络接口固定。所以就需要操作系统对资源进行有效的利用。假设某个应用程序过分的访问这些资源,就会导致整个系统的资源被占用,如果不对这种行为进行限制和区分,就会导致资源访问的冲突。所以,Linux的设计的初衷:给不同的操作给与不同的“权限”。Linux操作系统就将权限等级分为了2个等级,分别就是内核态和用户态。

各位有没有发现,前面讲了这么多内核态和用户态什么不同,其实用一句话就能概括:它们权限不同。用户态的进程能够访问的资源受到了极大的控制,而运行在内核态的进程可以“为所欲为”。

从用户态到内核态切换可以通过三种方式:

    1. 系统调用,这个上面已经讲解过了,在我公众号之前的文章也有讲解过。其实系统调用本身就是中断,但是软件中断,跟硬中断不同。
    1. 异常:如果当前进程运行在用户态,如果这个时候发生了异常事件,就会触发切换。例如:缺页异常。
    1. 外设中断:当外设完成用户的请求时,会向CPU发送中断信号。
    image-20200812202318020

cpu占用率

user(通常缩写为us),代表用户态CPU时间。注意,它包括下面的nice时间,但包括了guest时间。

nice(通常缩写为ni),代表低优先级用户态CPU时间,也就是进程的nice值被调整为1-19之间是的CPU时间。

system(通常缩写为sys),代表内核态CPU时间

idle(通常缩写为id),代表空闲时间。注意,它不包括I/O等待时间(iowait

iowait(通常缩写为wa),代表等待I/O的CPU时间,cpu出于空闲且有未完成的I/O请求

irq(通常缩写为hi),代表处理硬中断的CPU时间

softirq(通常缩写为si),代表处理软中断的CPU时间,系统调用时发生软中断

steal(通常缩写为st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间

guest(通常缩写为guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的CPU时间

理解:

sleep() wait()

Thread.sleep()或object.wait()后,都会释放cpu资源

Thread.sleep()不会释放占用的锁

object.wait()会释放占用的锁

top使用

在top命令运行过程中可以通过top的内部命令做显示方式的控制。

1- 开启或关闭显示所有cpu使用详细情况

l - 关闭或开启第一部分第一行 top 信息的表示

t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示

m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

N - 以 PID 的大小的顺序排列表示进程列表(第三部分后述)

P - 以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)

M - 以内存占用率大小的顺序排列进程列表 (第三部分后述)

h - 显示帮助

n - 设置在进程列表所显示进程的数量

q - 退出 top

s - 改变画面更新频率(输入数字)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,...
    kar_joe阅读 266评论 0 0
  • 通过/proc/stat计算CPU使用率介绍 linux通过/proc虚拟文件系统,想用户提供了系统内部状态信息,...
    崔天浩阅读 1,165评论 0 0
  • Linux 作为一个多任务操作系统,将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,...
    taj3991阅读 421评论 0 0
  • 测试工具 ab(apache bench)是一个常用的 HTTP 服务性能测试工具安装:sudo apt inst...
    张广旭阅读 1,880评论 0 0
  • 1.CPU各项指标 可以从 /proc/stat中查看CPU的各项指标 /proc/stat提供的就是系统的 CP...
    白名琰阅读 419评论 0 0