聊聊Linux中CPU上下文切换( 五 )


  • si:从磁盘交换的内存量(换入,从 swap 移到实际内存的内存) 。
  • so:交换到磁盘的内存量(换出,从实际内存移动到 swap 的内存) 。
I/O:I/O 有 bi 和 bo 列,它以“块读取”和“块写入”的单位来报告每秒磁盘读取和写入的块的统计信息 。如果你发现有巨大的 I/O 读写,最好使用 iotop 和 iostat 命令来查看 。
  • bi:从块设备接收的块数 。
  • bo:发送到块设备的块数 。
system:system 有 in 和 cs 列,它报告每秒的系统操作 。
  • in:每秒的系统中断数,包括时钟中断 。
  • cs:系统为了处理所以任务而上下文切换的数量 。
CPU:CPU 有 us、sy、id 和 wa 列,报告(所用的) CPU 资源占总 CPU 时间的百分比 。如果你发现异常,最好使用 top 和 free 命令 。
  • us:处理器在非内核程序消耗的时间 。
  • sy:处理器在内核相关任务上消耗的时间 。
  • id:处理器的空闲时间 。
  • wa:处理器在等待IO操作完成以继续处理任务上的时间 。
补充:pidstat命令查看进程的CPU上下文切换情况
笔者的环境是:Centos7
执行如下的命令:pidstat,查看进程的CPU上下文切换情况如果没有安装,yum install sysstat安装即可
聊聊Linux中CPU上下文切换

文章插图
在结果中你能看到如下内容:
  • PID - 被监控的任务的进程号
  • %usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关 。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间 。
  • %system - 这个任务在系统层使用时的cpu使用率 。
  • %guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器) 。
  • %CPU - 任务总的cpu使用率 。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话,cpu使用率会除以你的cpu数量 。
  • CPU - 正在运行这个任务的处理器编号 。
  • Command - 这个任务的命令名称 。

经验总结扩展阅读