top

案例:查看cpu

启动top命令后,按数字1可以看到逻辑CPU的个数


参数说明

常用参数

参数含义及实例
-d delaytop -d 2 两秒刷新一次 默认5秒
-btop -b | head -10 显示前10行数据
-ptop -p 1 实时查看pid为1的进程变化情况
-u-u username 仅显示指定用户名的进程信息
-S累计显示进程的 CPU 使用时间
-c显示完整的命令行而不截断
-i不显示闲置(idle)或无用的进程
-H在进程信息中显示线程的详细信息
-n-b配合使用,表示需要进行几次top命令的输出结果
-p指定特定的pid进程号进行观察

命令操作

参数含义
?显示在top页面中可以输入的命令
P(大写P)以 CPU 的使用资源排序显示
m(小写m)以内存的使用资源排序显示
N以 PID 排序显示
T由进程使用的时间累计排序显示
k给某一个 pid 一个信号,可以用来杀死进程(9)
r给某个 pid 重新定制一个 nice 值(即优先级)
q退出 top (用 ctrl + c 也可以退出 top)

详解

[root@wj ~]# top
top - 10:57:05 up  2:07,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1862996 total,  1380408 free,   312912 used,   169676 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1397596 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                
     1 root      20   0  125388   3872   2584 S   0.0  0.2   0:01.20 systemd                                                                                                                
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                               
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                           
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.00 ksoftirqd/0                                                                                                            
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/0
  • (第一行)标题行
top - 10:57:05  up  2:07,        1 user,     load average: 0.00, 0.01, 0.05
系统当前时间     系统已经运行了多久  登录用户数    系统的平均负载它给出了系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载

关于平均负载 (load average)
负载平均值是系统中正在运行和等待 CPU 时间的进程数的平均值。在单 CPU 系统中,负载平均值为 1.00 表示 CPU 在过去那个时间段内是完全忙碌的;如果负载平均值为 2.00,则表示 CPU 在那个时间段内几乎两倍于它的能力在工作(或者说有 50% 的时间是空闲的,但有两个进程在争用 CPU)。
在多核或多处理器系统中,这个数字需要乘以 CPU 的数量才能得到实际的负载情况。例如,在一个四核系统上,负载平均值为 4.00 实际上表示 CPU 正好完全忙碌。

  • (第二行)任务状态
Tasks: 112 total,   1 running,      111 sleeping,       0 stopped,   0 zombie
当前系统中的进程总数、  正在运行的进程数、休眠的进程数          停止的进程数  僵尸进程数。

睡眠状态:等待某个条件发生,如 I/O 操作完成
停止状态:通常是由于接收到 SIGSTOP 信号
僵尸进程:已经终止但父进程尚未读取其终止状态的进程

系统中进程的不同状态
Running: 进程正在使用 CPU
Sleeping: 进程在等待某个条件发送,如 I/O 操作完成或等待某个信号
Stopped: 进程接收到 SIGSTOP 信号并被停止。这通常是由于用户或管理员的干预,比如使用 Ctrl + Z 或 kill -STOP 命令
Zombie: 进程已经终止,但父进程尚未读取其终止状态。这通常是一个短暂的状态,因为父进程通常会很快读取其终止状态并释放僵尸进程占用的资源。如果系统中存在大量僵尸进程,可能是某个父进程有问题或父进程没有正确管理其子进程。

系统中有大量的进程处于睡眠状态,这是正常的,因为很多进程(如网络服务、数据库进程、守护进程等)在大部分时间都是等待状态,等待用户请求或系统事件。

  • (第三行)CPU 使用情况
%Cpu(s):  0.2 us,            0.2 sy,        0.0 ni, 99.7 id,      0.0 wa,  0.0 hi,  0.0 si,  0.0 st
          用户空间CPU百分比  系统进程CPU百分比            空闲的百分比   

0.2 us:用户空间占用 CPU 的百分比,即运行在用户模式下的非内核代码所占用的 CPU 时间

0.2 sy: 系统(内核)空间占用 CPU 的百分比,即运行在系统模式(内核态)下的代码所占用的 CPU 时间

0.0 ni:用户进程空间内改变过优先级的进程占用 CPU 的百分比,即 nice 值为负的进程所占用的 CPU 时间(nice 值可以调整进程的优先级)

99.7 id:空闲 CPU 的百分比,即 CPU 在这段时间内没有执行任何指令的百分比

0.0 hi:硬中断(Hardware Interrupts)服务占用的 CPU 时间百分比

0.0 si:软中断(Software Interrupts)服务占用的 CPU 时间百分比

0.0 st:虚拟机(Virtualization Technology)偷走的 CPU 时间百分比,即在虚拟化环境中,虚拟机管理程序(如 KVM)使用的 CPU 时间。

在上面的举例中,可看到大部分时间(99.7%)CPU都是空闲的,只有很少的时间(0.2%)用于用户空间(user space)和系统空间(system space)的计算。这意味着系统当前的负载很低,CPU 有大量的空闲时间。其它的 CPU 实用率字段(如等待 I/O、硬中断、软中断和虚拟机偷走的时间)都非常低。

  • (第四行)内存使用情况
KiB Mem :  1862996 total,  1380408 free,   312912 used,   169676 buff/cache
            物理内存总量      空闲内存          使用的内存      有用的缓存内存

buff/cache:这部分内存被用作文件系统和内核缓冲区以及缓存。虽然这部分内存被标记为 “已使用”,但它实际上是可以在需要时快速释放给应用程序的,因为它主要存储的是可以重新从磁盘或其它来源获取的数据。因此,这部分内存实际上是 “可用” 的,只是在短期内被用来提高系统性能

为了更准确地了解系统上的内存使用情况,可以将 free 和 buff/cache 的值相加,者通常会给出一个更大的 “实际可用” 内存数,因为当应用程序需要更多内存时,系统通常会先尝试从缓冲区/缓存中释放内存,而不是立即使用交换空间(如果配置了的话)

  • (第五行)Swap交换空间使用情况
KiB Swap:  2097148 total,  2097148 free,        0 used.       1397596 avail Mem 
            交换内存大小      空闲内存              使用的内存      当前系统可用的内存总量

交换空间是当物理内存(RAM)不足时,系统用于扩展内存的一种方式。它将部分内存中的数据转移到磁盘上的交换空间中,从而释放物理内存供其他进程使用。

Avail Mem 通常表示在考虑了交换空间和其他因素后,系统可以立即分配给进程的内存总量。它包括了空闲的内存、缓冲和缓存中的部分内存(如果系统需要的话,可以从缓冲和缓存中回收内存供其他进程使用)。

  • (第六行)进程列表
   PID    USER        PR       NI    VIRT     RES     SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                
     1    root        20       0     125388   3872   2584 S   0.0  0.2   0:01.20 systemd 
 

PID: 进程 ID
USER: 进程所有者
PR: 优先级
NI: nice 值
VIRT: 虚拟内存大小
RES: 常驻集大小,即物理内存大小
SHR: 共享内存大小
S: 进程状态
%CPU: CPU 使用率
%MEM: 内存使用率
TIME+: CPU 时间累计
COMMAND: 命令名称或命令行

预留标题3

再次测试一遍

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容