wa
, 这个很好解释 , 等待IO的时间 。hi
, 处理硬件中断所消耗的时间 。si
, 处理软件中断所消耗的时间st
, 这个时间稍微有点复杂 , IBM解释原文为:Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.这个主要是虚拟机的虚拟CPU等待真实物理CPU的时间 , 可以大致认为是
Ready
状态到Running
状态的等待时间 , 如果这个值越大说明虚拟机运行状态越不好 , 因为它等待真实CPU的时间很长 。第四行这一行表示的是物理内存的信息 , 单位是KiB 。
- total, 表示一共有多少内存 , 也就是物理内存大小 。
- free, 表示还有多少物理内存没有使用 。
- used, 表示使用了多少物理内存 。
- buff/cache, 表示用于用于缓存的物理内存的大小 。
- total, 表示对换区的总大小 。
- free, 表示对换区当中还有多少空间没有使用 。
- used, 表示对换区当中有多少空间被使用了 。
- 最后一项 avail Mem 是一个可用于启动新程序的内存大小的估计值 。
- PID , 表示进程号 , 就是每个进程的ID 。
- USER , 就是用户的名称 。
- PR , 优先级值 。
- NI , nice值 , 通过程序给进程设置的 。
- VIRT , 进程使用的虚拟内存的大小 , 单位是KiB 。
- RES , 常驻内存的内存大小 , 单位是KiB 。
- SHR , 共享内存的大小 , 单位是KiB 。
- S , 表示进程的状态 , 有一下几个状态 。
- D , 不能够中断的睡眠状态 。
- R , 表示程序正在CPU上执行 。
- S , 表示进程正在睡眠 。
- T , 进程被信号停止执行 。
- t , 表示进程正在被调试器追踪 , 调试器将这个进程停了下来 。
- Z , zombie表示是一个僵尸进程 。
- %CPU , 上次一刷新之前对应的进程对CPU的占有率 , 这个值是可以突破100%的 , 因为一个进程可以有多个进程 , 比如下面这样 , 我们开启10个线程进行死循环:
#include <pthread.h>void* func(void * args) {while (1){/* code */}}int main() {#define num_threads 10pthread_t t[num_threads];for(int i = 0; i < num_threads; i++) {pthread_create(&t[i], NULL, func, NULL);}for (size_t i = 0; i < num_threads; i++){pthread_join(t[i], NULL);}return 0;}
执行上面的程序之后 , top的输出结果如下所示:
文章插图
从上面的这个结果我们可以知道CPU的占有率是可以超过%100的 , 这个值的计算主要是在刷新之间内一个进程消耗的CPU时间和在这段时间内一个CPU能够产生的CPU时间的比值 。
- %MEM , 这个主要是进程使用的内存占用实际的可用的物理内存的比例 。
- TIME+ , 这个表示自从进程启动以来累计消耗的CPU时间 。
- COMMAND , 这个表示启动进程的时候执行的命令 。
经验总结扩展阅读
- Linux命令全解
- 小米MIX4最新消息_小米MIX4配置曝光
- centos7系统资源限制整理
- 如何评价香港的麦兜系列动画
- 大数据常用的Linux命令
- 整理一些Windows桌面运维常用的命令,并且整合成脚本
- csv2ECharts,**一行命令查看数据趋势图 工具分享**
- 工作7年收集到的git命令
- cmd常用命令介绍
- 学习ASP.NET Core Blazor编程系列五——列表页面