Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识( 二 )

Suspened状态 。
第三行这一行主要是各种时间所占的百分比的统计,这个数据的统计时间区间是,从本次刷新到上一次刷新之间,实在这个区间统计的数据

  • us,运行没有指定优先级的用户进程所消耗的CPU时间所占百分比,默认的终端执行的程序都是没有指定优先级的,我们可以使用nice这个命令来改变程序执行的优先级:sudo nice -n -10 ./time
  • sy,运行内核进程所消耗的CPU时间所占的百分比 。
  • ni,运行指定了修改过优先级之后的用户进程所占的CPU时间百分比 。这里可以结合PR和NI两个字段进行分析 , 我们现在执行sudo nice -n 10 ./a.out命令 , 在./a.out当中我启动了10个死循环的线程,我们来看一下它的top输出结果:
    Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识

    文章插图
从上面的结果来看我们通过nice命令修改来进程优先级,但是需要主要的是一个进程的PR值越大他的优先级越低,NI值越大优先级越低,也就是说我们上面实际上是降低了进程执行的优先级了,但是我们可以看到ni的值是发生变化了的,这也印证了上面我们所谈到的ni值发生变化的过程 。我们再来看一下没有设置优先级的结果 , 直接执行sudo ./a.out
Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识

文章插图
但是在实验测试的过程当中发现了一个奇怪的问题,但我们提升进程的优先级(提升优先级需要管理员权限)的时候ni的值没有发生变化,因此上面所谈到的ni的变化应该只适用于普通用户的进程(因为降低优先级不需要管理员权限) 。
Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识

文章插图
  • id,idle进程执行所占的CPU时间百分比,当系统当中没有足够的进程让CPU执行的时候,idle进程会被调度到CPU上进行执行,这个idle进程是为了让操作系统能够良好的执行起来所设置的 , idle进程主要执行HLT指令,这个指令主要是让CPU节能,不需要CPU满负荷运转,因为这个时候没有具体的进程需要执行,这个百分比越大说明系统负载越轻,CPU不繁忙 。
  • 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 是一个可用于启动新程序的内存大小的估计值 。
表头内容含义