一、实时查看CPU和内存(Mem)利用率
htop官网:htop - an interactive process viewer
sudo apt-get install htophtop
①. 顶部状态栏(System Metrics Overview)
这个区域显示系统的全局资源使用情况,包括:
CPU 使用率: 顶部会显示多条表示 CPU 使用情况的条形图,每条代表一个 CPU 核心。不同颜色表示不同类型的 CPU 负载:
绿色:用户进程使用的 CPU(user)红色:内核进程使用的 CPU(system)蓝色:低优先级进程使用的 CPU(nice)黄色:I/O 等待(iowait)灰色:虚拟 CPU 使用(steal time)内存(Mem): 显示当前的物理内存使用情况,条形图及具体的数值会告诉你内存的已使用、缓存和可用内存数量。
交换区(Swap): 显示系统交换区的使用情况(如果物理内存不足时,系统会将部分数据放入交换区)。条形图和数值显示交换空间的已用和剩余量。
②. 任务和负载信息(Load Average and Uptime)
这个区域紧接着 CPU、内存和交换区的显示之后,主要展示以下内容:
任务(Tasks): 显示系统上正在运行的任务(进程)数量和状态信息,包括正在运行、睡眠、停止等进程数目。负载平均值(Load Average): 显示系统的负载平均值,分别为最近1分钟、5分钟和15分钟的平均负载。系统运行时间(Uptime): 显示系统已运行的总时间。③. 进程列表(Processes List)
这是 htop
窗口中最核心的部分,显示系统中所有运行中的进程,每一行代表一个进程。每个进程行通常包含以下信息:
R
:Running,进程正在运行。S
:Sleeping,进程在休眠状态。D
:Uninterruptible sleep,无法中断的睡眠状态(通常是 I/O 操作)。Z
:Zombie,僵尸进程,已终止但未清理。T
:Stopped,进程已停止。%CPU: 进程当前占用的 CPU 百分比。%MEM: 进程当前占用的物理内存百分比。TIME+: 进程消耗的 CPU 总时间(格式为时:分:秒)。Command: 进程执行的命令名称或路径。 ④. 底部功能键(Interactive Commands)
htop
提供了许多快捷键,底部通常会显示一些常用的快捷键提示:
htop
。 注意:经研究发现,htop 会把一个进程里的线程当做一个进程来显示出来,上图中的 google chrome 一共有 n 个线程,所以 htop 显示了多个进程。这个特性对于分析进程性能很不有利, 所以我们要关掉它。
F2 打开设置用鼠标选择 Display options -> Hide userland threads ,当看到该选项前面的 [ ] 中有一个 x 号时,按 F10 确认。确认后,在 htop 的进程列表里就看不见一堆重复的进程了。
二、实时查看GPU的利用率
使用 nvidia-smi 命令查看 GPU 利用率,但是这个命令只能显示一帧,如果要实时显示,需要配合watch命令, 一秒钟刷新一次 nvidia-smi 命令
watch -n 1 nvidia-smi
watch
:这是一个 Linux 命令,用于周期性地执行指定的命令,并将其输出显示在终端上。默认情况下,它会每两秒刷新一次输出。
-n 1
:这是 watch
命令的一个选项,表示设置刷新间隔为1秒。换句话说,watch
每隔1秒钟重新运行一次指定的命令,并更新显示的结果。
nvidia-smi
:这是 NVIDIA 提供的一个命令,用于显示 GPU 的实时信息,包括显卡的温度、功耗、显存使用率、GPU 负载等。它常用于监控 NVIDIA GPU 的运行状态。
①. 顶部信息部分(General System Information)
在输出的顶部,展示系统和驱动程序的全局信息,包括:
NVIDIA-SMI Version:nvidia-smi
工具的版本号。Driver Version:当前安装的 NVIDIA 驱动程序版本。确保驱动程序版本与 CUDA 工具包兼容是非常重要的。CUDA Version:显示当前支持的 CUDA 版本,这是 NVIDIA 的并行计算平台和 API,用于加速深度学习等任务。 ②. GPU 信息表(GPU Information Table)
在这一部分,列出了每个已安装的 GPU 及其状态。表格的每一行代表一张 GPU,包含以下字段:
GPU:每个 GPU 在系统中的编号,通常从 0
开始,表示 GPU 在系统中的索引号。
Name:显卡的型号名称,例如 Tesla V100
、RTX 3090
等,表示具体的显卡型号。
Persistence-M (持久性模式)
On:GPU 即使没有任务时也保持初始化状态,减少任务启动延迟。Off:GPU 在没有任务时进入未初始化状态,节省功耗。Bus-Id:GPU 连接到主板的 PCI 总线 ID,格式为 Domain:Bus:Device.Function
,如 00000000:00:1C.0
。这个字段在多 GPU 系统中很有用。
Disp.A (Display Active):显示该 GPU 是否用于驱动显示器:
On:GPU 正用于驱动显示器。Off:GPU 未连接到显示器,通常在服务器或计算节点上为 Off。Volatile Uncorr. ECC (Volatile Uncorrectable ECC Errors):GPU 的内存中不可修正的 ECC 错误计数:
0:没有检测到不可修正的 ECC 错误,这是理想状态。>0:有不可修正的 ECC 错误,可能导致数据计算错误。ECC 是 Error-Correcting Code,用于保证 GPU 计算的准确性。N/A:该 GPU 不支持 ECC(Error-Correcting Code)功能Fan (风扇速度):当前 GPU 风扇的运行速度,单位为百分比(%)。这个值会根据 GPU 温度和负载动态调整,N/A
表示没有独立风扇或者风扇信息不可用。
Temp (温度):GPU 当前温度,单位为摄氏度(°C)。理想温度通常在 30°C 到 85°C 之间,过高温度可能导致性能下降或硬件损坏。
Perf (性能状态):GPU 的性能状态(P-State),范围从 P0
到 P12
:
Pwr: Usage/Cap(功耗 / 最大功耗)
Usage:GPU 当前的功耗,单位为瓦特(W)。Cap:该 GPU 允许的最大功耗。实际功耗在任务执行过程中会动态变化,最大功耗由硬件或 BIOS 设定。Memory-Usage(显存使用情况)
Used:当前 GPU 正在使用的显存量。Total:GPU 的总显存量。显存使用率反映了计算任务对显存的需求,高密集型任务(如深度学习模型训练)会占用大量显存。GPU-Util(GPU 利用率 %):GPU 的当前利用率,以百分比显示。这个值越高,表示 GPU 的负载越重:
0-10%:空闲或负载极低。100%:GPU 处于满负荷运转状态。Compute M. (计算模式):定义了 GPU 如何与多个应用程序共享计算资源
Default:默认计算模式,多个进程可以同时访问 GPU 的计算资源。这是大多数应用场景的默认模式,允许多个任务共享 GPU。
Exclusive Process:在这个模式下,只有一个进程能够使用 GPU 的计算资源,但该进程可以有多个线程。这种模式通常用于防止不同进程之间的竞争,提高性能的一致性。
Exclusive Thread:更严格的模式,只有一个线程能够访问 GPU。这种模式不常用。
Prohibited:禁止使用 GPU 的计算资源。在这个模式下,GPU 不能执行任何计算任务。这种模式下,GPU 只能用于显示输出。
MIG M.(多实例 GPU 模式):NVIDIA A100 和其他 Ampere 架构 GPU 引入的一项新功能
Enabled:表示 MIG 模式已启用。在启用 MIG 的情况下,一张 GPU 可以分割为多个逻辑 GPU,每个逻辑 GPU 分配固定的计算和显存资源。这允许多个用户或应用程序独立使用 GPU,避免资源竞争。
Disabled:表示 MIG 模式未启用。GPU 以传统方式运作,作为单一计算单元使用。
N/A:该 GPU 不支持 MIG 模式。例如,只有支持 MIG 的 NVIDIA GPU(如 A100 或 H100)才会显示 MIG 相关的信息,而其他不支持的 GPU 显示 N/A
。
③. 进程列表(Processes Section)
在 GPU 信息表的下方,显示当前使用 GPU 资源的进程信息。包括:
GPU :显示每个 GPU 的编号,表示进程在哪个 GPU 上运行。
PID (进程 ID):进程的唯一标识符,可以用来进一步排查系统中运行的进程或调试特定任务。
Type (进程类型):进程的类型:
C(Compute):表示计算任务,通常是深度学习或并行计算任务。G(Graphics):表示图形任务。V(Video):表示视频任务,例如视频编码或解码。Process Name (进程名称):显示正在运行的进程名称或路径,如 /usr/bin/python
,用于识别具体的应用程序或任务。
GPU Memory Usage(显存使用量):该进程使用的显存量,单位为 MiB(Mebibytes)。如果多个进程同时运行,显存可能被多个进程共享。
参考
Linux查看CPU状态:htop命令
为什么htop显示比ps更多的进程