案例:查看cpu
启动top
命令后,按数字1可以看到逻辑CPU的个数
参数说明
常用参数
参数 | 含义及实例 |
---|---|
-d delay | top -d 2 两秒刷新一次 默认5秒 |
-b | top -b | head -10 显示前10行数据 |
-p | top -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
测
再次测试一遍
暂无评论内容