关于linux中的top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

top命令运行结果图

第一行基本信息

 

load average:

load average 表示系统负载均值,使用 top 或 uptime 可以查看到负载均值的信息,三个数值分表表示 1分钟内 、5分钟内 、 15分钟内的系统负载均值,要理解这三个数值的含义,首先要了解系统的“核数”

系统的核数 = CPU1 x CPU1的核数 + CPU2 x CPU2的核数 + CPUn x CPUn的核数 + ……更清楚的讲,在Linux系统中输入命令grep -c 'model name' /proc/cpuinfo,即可得到核数。

回到负载均值,负载均值的饱和值等于系统的核数, 所以,根据load average观察系统负载首先要看系统中共有多少"核",单处理器单核的饱和值为 1,单处理器双核的饱和值为2,双处理器单核的饱和值也为2.

理解负载均值的最经典的例子是把一个CPU的核当做一座单行单向桥,多核即为多行路单向桥.如图:

假定,目前系统是单核系统,根据上面的描述,它的负载饱和值为1.这种条件下,各种数值的含义如下:

  • 0.00 表示桥上没有任何车流,非常畅通
  • 0.50 表示桥上有最高承载量一半的车流,也比较流畅.
  • 1.00 表示桥上已经达到了最大承载量,如果再有车来,可能就要稍等才能上桥了,这种情况下,车速都会很慢,往往都会造成负载均值继续上升.
  • 1.70 表示桥已经达到最大负载,且还有相对于桥最大负载70%的车辆等待上桥,这个时候的系统,已经要不堪重负了.

在实际应用中,重点关注5分钟,15分钟的负载均值,当达到0.7时,就需要调查原因了。

第二行,任务信息

 

僵尸进程:表示已经终止,但仍然保留一些信息的进程。其等待父进程调用wait(),就可以从内存中完全移除。 将是进程无法使用 kill 清理。如果要手动清理僵尸进程,需要找到其父进程,kill掉父进程后,LInux的 init 进程将接管该僵尸进程(linux中所有的子进程都需要有父进程,当父进程被kill后,其所有子进程将过继给init进程),init进程隔一段时间去调用wait(),来清除僵尸进程。

问题:为什么running进程只有一个,sleeping进程有很多?

现代计算机是多任务处理架构,就是说,可以同时运行多个进程。但是,这只是对用户来说。其实,在同一时间,只有一个进程可以占用CPU,其他进程都是处于sleep,CPU会根据一定策略去选择运行某个进程而挂起其他进程。但由于CPU主频太快,用户是无法察觉到的,就好比你一边上网,一边听歌,觉得CPU在同时跑两个进程,其实只有其中一个,只不过CPU在不同的进程之间切换处理。

第三行,CPU使用情况

 第四行,物理内存使用情况

 

buff/cache:

buffers 和 cache 都是内存中存放的数据,不同的是,buffers 存放的是准备写入磁盘的数据,而 cache 存放的是从磁盘中读取的数据

在Linux系统中,有一个守护进程(daemon)会定期把buffers中的数据写入的磁盘,也可以使用 sync 命令手动把buffers中的数据写入磁盘。使用buffers可以把分散的 I/O 操作集中起来,减少了磁盘寻道的时间和磁盘碎片。

cache是Linux把读取频率高的数据,放到内存中,减少I/O。Linux中cache没有固定大小,根据使用情况自动增加或删除。

第五行, 交换区使用情况

Swap(内存交换区):

是硬盘上的一块空间。在内存不足的情况下,操作系统把内存中不用的数据存到硬盘的交换区,腾出内存来让别的程序运行。因此,开启swap会一定程度的引起 I/O 性能下降(阿里服务器默认不开)。

第六行,进程详细信息

 PRI :进程优先权,代表这个进程可被执行的优先级,其值越小,优先级就越高,越早被执行;

 NI :进程Nice值,代表这个进程的优先值;

 %nice :改变过优先级的进程的占用CPU的百分比。

  PRI是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。由此看出,PR是根据NICE排序的,规则是NICE越小PR越前(小,优先权更大),即其优先级会变高,则其越快被执行。如果NICE相同则进程uid是root的优先权更大。

  在LINUX系统中,Nice值的范围从-20到+19(不同系统的值范围是不一样的),正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。具有最高优先级的程序,其nice值最低,所以在LINUX系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的CPU时间的更大使用份额,这也就是nice的名称的来意。

  进程在创建时被赋予不同的优先级值,而如前面所说,nice的值是表示进程优先级值可被修正数据值,因此,每个进程都在其计划执行时被赋予一个nice值,这样系统就可以根据系统的资源以及具体进程的各类资源消耗情况,主动干预进程的优先级值。在通常情况下,子进程会继承父进程的nice值,比如在系统启动的过程中,init进程会被赋予0,其他所有进程继承了这个nice值(因为其他进程都是init的子进程)。

  对nice值一个形象比喻,假设在一个CPU轮转中,有2个runnable的进程A和B,如果他们的nice值都为0,假设内核会给他们每人分配1k个cpu时间片。但是假设进程A的为0,但是B的值为-10,那么此时CPU可能分别给A和B分配1k和1.5k的时间片。故可以形象的理解为,nice的值影响了内核分配给进程的cpu时间片的多少,时间片越多的进程,其优先级越高,其优先级值(PRI)越低。%nice,就是改变过优先级的进程的占用CPU的百分比,如上例中就是0.5k/2.5k=1/5=20%。

  由此可见,进程nice值和进程优先级不是一个概念,但是进程nice值会影响到进程的优先级变化。

top命令参数使用

-b:以批处理模式操作 这种方式可以把top输出的内容以可读的形式写入文件top -b >> top.txt

-c:显示完整的命令行(COMMAND),想查看进程执行的具体位置时,非常有用

-d:屏幕刷新间隔时间 top -d 1:表示每隔一秒刷新一次

-s:使用保密模式

-S:指定累积模式

-i:不显示任何闲置或者僵死进程

-u<用户名>:指定用户名

-p<进程号>:指定进程

-n<次数>:指定循环显示的次数,到了次数自己退出。

top命令交互式使用

top命令显示系统实时状态,支持交互操作。执行top命令,显示系统状态界面(同时也是交互界面),输入交互命令:

1:查看CPU每个核的使用情况

h:显示帮助画面,给出一些简短的命令总结说明

k:终止一个进程

i:忽略闲置和僵死进程,这是一个开关式命令

q:退出程序

r:重新安排一个进程的优先级别

S:切换到累计模式

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s

l:切换显示平均负载和启动时间信息

m:切换显示内存信息

t:切换显示进程和CPU状态信息

c:切换显示命令名称和完整命令行

M:根据驻留内存大小进行排序

P:根据CPU使用百分比大小进行排序

T:根据时间/累计时间进行排序

w:将当前设置写入~/.toprc文件中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值