Linux指令浅析:top指令

    xiaoxiao2021-03-25  101

    top指令是Linux系统中常用的监控当前系统资源利用情况的指令,使用该指令可以直观的动态显示CPU、内存等资源的占用情况。 在指令讲解之前我们先来介绍下关于CPU的三种常态: 空闲态: 这意味着CPU当前处于空闲状态; 用户态: CPU当前在处理用户空间程序,例如处理邮件服务或编译器等; 系统态: CPU当前在处理内核程序,例如处理中断或进行资源管理。 想要查看CPU各种统计信息的话有很多方法,其中top指令是最常见的一种,在Linux命令行中输入top指令后会有如下显示: 可以看到由top指令产生的输出大体可分为两大部分:最上面的五行为系统资源信息的总体统计,通过一个空行隔开的下半部分为进程信息区,即运行中的各个进程的实时状态;其中系统资源信息区有如下五行: 系统负载信息: 此行的信息等同于使用uptime命令产生的结果,其中包含有系统当前时间、系统运行时长、用户连接数、系统平均负载这几个信息。 其中load average中的三个数据4.91、 2.30 和 1.19分别表示上一分钟、上五分钟和上十五分钟的系统负载均值,对于该值的评判还和当前系统中逻辑CPU的数目有关。 任务进程信息: 此行的信息包括有当前总进程数,处于运行状态的、休眠状态的、暂停状态的进程数以及僵尸进程数。 CPU状态信息: Cpu(s):  0.3%us,  3.4%sy,  0.0%ni,  38.9%id,  56.7%wa,  0.0%hi,  0.7%si,  0.0%st 以上是对CPU运行状态的信息统计,其中各项指标的意义为: 0.3% us- (User Time)这表示处理器花费了它0.3%的时间去运行用户空间的程序。该程序可以是数据库服务、Web服务或其他桌面服务,正常情况下大部分非空闲状态的CPU都应该去处理用户程序。 3.4% sy - (System Time)系统时间代表CPU去运行内核程序所花费的时间。所有的进程和系统资源都是由内核所管理,当一个用户程序需要申请一些系统资源,例如申请一段内存或创建一个子进程时,此时内核便需要进行处理,实际上,决定CPU接下来处理哪些程序的调度器也属于内核的一部分。CPU用于处理内核程序的时间应该越短越好,但是当有很多I/O操作发生时该值会激增不少。 0.0% ni - (Nice Time)该值表示CPU花费在调整过优先级的用户程序上的时间。在Linux中,用户程序可以运行在默认的优先级上,也可以用更高的优先级运行。用户程序的优先级被分为40个级别,数值从-20到19,其中数值越低表示优先级越高,在Linux系统中用户的程序都是默认以0的优先级运行,而nice指令是改变进程优先级的常用命令之一。当一个系统没有被调整过优先级的程序时,该值便为0。 38.9% id - (Idle Time)这表示在上一个采样时期内,CPU有38.9%的时间都是处于空闲状态的。一般而言,CPU用于处理用户空间程序的时间 -us, 调整过优先级程序的时间 - ni 和空闲的时间 - id 相加总和应该接近100%。 56.7% wa - (Waiting Time)在计算机中,形如磁盘读写之类IO操作的速度会远低于CPU的处理速度。当一个程序准备进行读写操作并暂无其他任务而是等待结果时,这段时间便被记录进wa,换而言之,该值即为CPU等待IO操作完成前的空闲时间。 0.0% hi & 0.7% si - (Hard & Soft Irq Time)这两个值是表示CPU花费在中断处理上的时间。其中hi表示的是硬件中断而si表示的是软件中断。硬件中断是由形如磁盘或网络接口之类的外设产生并发往CPU的物理中断,它可以使CPU停止当前工作转而去处理中断; 软件中断则是由系统运行的程序所产生的,但软件中断不会发生在CPU层面上,而是在内核中。 0.0% st - (Steal Time) 这个值是针对于虚拟机而言的,当Linux作为运行在hypervisor上的虚拟机时,st这个值便是表示被强制等待(Involuntary wait)虚拟CPU的时间,即:一个hypervisor上的虚拟CPU花费在等待另一个运行在不同虚拟机上的虚拟CPU的时间。因为在实际中这些虚拟进程都是共享的同一些物理进程,所以当一个虚拟机想要运行而hypervisor调度器选择运行另外一个虚拟机时就会出现Steal Time。 内存状态信息 此行的信息表示比较直观,分别为:物理内存总量,使用中的内存总量、空闲的内存总量和缓存的内存总量。 其中值得注意的是,使用中的内存总量是指目前被内核所控制的内存数量,而空闲的内存总量则是还未被内核所管控的内存数量,同时被内核所控制不等同于都在使用中,还包括曾经被使用但目前被释放掉的内存,这些内存虽然可以再重复使用,但内核不会将其“归还”至空闲内存区了。 交换分区信息 交换分区是Linux系统在硬盘上为虚拟内存所预留存储空间,在系统运行时物理内存会与交换分区以页为单位进行数据交换,以此来扩大计算机的逻辑内存大小以及实现内存的重复利用。 在此行中的几项参数基本类似于内存状态信息的几项:交换分区总量、使用中的交换分区总量、空闲的交换分区总量和缓冲的交换分区总量。 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 在最上面的五行系统资源信息统计区下面是进程信息区,其中较为详细地显示了各个运行中进程的各项指数,从左到右依次为: PID            进程id USER         进程拥有者的用户名 PR              (priority)优先级,此优先级被称为动态优先级,是由内核层面的概念; NI               (nice)优先值,此优先级是用户层面的概念,用户可以通过调整nice值来改变进程的优先级(即进程占用CPU时间的长短); VIRT           (virtual memory usage)进程所占用的虚拟内存总量,其中包括进程分配的堆栈空间、从磁盘加载的库以及和其他进程所共享的内存; RES            (resident memory usage)常驻内存,即进程实际占用的物理内存的大小,其不包括交换内存; SHR            (shared memory)共享内存,即进程与其他进程所共享的内存部分,例如进程所加载的共享库。其中需要注意的是,即使一个进程仅使用共享库里的某些函数,整个库都会映射至进程所占用的虚拟内存和共享内存中,但只有被调用函数的部分会被加载进常驻内存中。 S                 (process state)进程状态:                          D : Uninterruptible sleep 不可中断的睡眠状态                          R : Running  处于运行状态或可运行状态                          S : Interruptible sleeping 睡眠状态                          T : Traced or stopped 跟踪/停止                          Z : Zombie 僵尸进程 %CPU          上次屏幕刷新到当前,该进程所占用的CPU百分比; %MEM         进程当前所占用的物理内存大小; TIME+          进程占用的CPU时间总计,单位为10ms; COMMAND 命令行或进程名称 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 额外的操作技巧: 1) 在top视图界面按下数字键“1”可切换至每个逻辑CPU的监控界面,再次按下“1”后可切换回来: 2)按下shift + F键后可以调整当前进程信息区的排序依据: 可以看到当前是以CPU占用率来进行排序的,我们可以输入代表对应字段的字符来完成排序操作:例如输入n后回车即可通过内存占用率高低来进行排序。 当然对于top指令还有很多操作设置可以按需执行,此处仅列举一二,不再赘述。
    转载请注明原文地址: https://ju.6miu.com/read-15900.html

    最新回复(0)