当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    linux top命令详解

    栏目:win服务器问题汇总 时间:2019-12-13 14:36

    top 命令主要用于查看进程的相关信息,同时它也会提供系统平均负载,cpu 信息和内存信息。下面的截图展示了 top 命令默认提供的信息:

    系统平均负载

    top 命令输出中的第一行是系统的平均负载,这和 uptime 命令的输出是一样的:

    13:05:49 表示系统当前时间。
    up 7 days 表示系统最后一次启动后总的运行时间。
    1 user 表示当前系统中只有一个登录用户。
    load average: 0.01, 0.04, 0.00 表示系统的平均负载,最后的三个数字分别表示最后一分钟的系统平均负载,最后五分钟的系统平均负载,最后十五分钟的系统平均负载。

    小写字母 i 可以控制是否显示系统平均负载信息。

    任务信息汇总

    在 linux 系统中,一般把进程和线程统称为任务。第二行信息是对当前系统中所有任务的统计:

    Tasks:270 total 表示当前系统的进程总数。
    1 running 表示当前系统中有 1 个正在运行的进程。
    269 sleeping 表示当前系统中有 269 个休眠的进程。
    0 stopped 表示停止状态的进程数为 0。
    0 zombie 表示处于僵死状态的进程数为 0。

    CPU 信息

    第三行显示 CPU 的使用情况:

    这里一共有八个字段,是我们了解 CPU 负载的主要依据,下面我们逐一介绍。

    us

    进程在用户地址空间中消耗 CPU 时间的百分比。像 shell程序、各种语言的编译器、数据库应用、web 服务器和各种桌面应用都算是运行在用户地址空间的进程。这些程序如果不是处于 idle 状态,那么绝大多数的 CPU 时间都是运行在用户态。

    sy

    进程在内核地址空间中消耗 CPU 时间的百分比。所有进程要使用的系统资源都是由 Linux 内核处理的。当处于用户态(用户地址空间)的进程需要使用系统的资源时,比如需要分配一些内存、或是执行 IO 操作、再或者是去创建一个子进程,此时就会进入内核态(内核地址空间)运行。事实上,决定进程在下一时刻是否会被运行的进程调度程序就运行在内核态。对于操作系统的设计来说,消耗在内核态的时间应该是越少越好。在实践中有一类典型的情况会使 sy 变大,那就是大量的 IO 操作,因此在调查 IO 相关的问题时需要着重关注它。

    ni

    ni 是 nice 的缩写,可以通过 nice 值调整进程用户态的优先级。这里显示的 ni 表示调整过 nice 值的进程消耗掉的 CPU 时间。如果系统中没有进程被调整过 nice 值,那么 ni 就显示为 0。

    id

    CPU 处于 idle 状态的百分比。一般情况下, us + ni + id 应该接近 100%。

    wa

    CPU 等待磁盘 IO 操作的时间。和 CPU 的处理速度相比,磁盘 IO 操作是非常慢的。有很多这样的操作,比如:CPU 在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过 wa 来判断系统的性能瓶颈是不是过多的 IO 操作造成的。

    hi & si

    这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi 表示处理硬中断消耗的时间,si 表示处理软中断消耗的时间。硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)。软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗 CPU 时间)。