玉琳 發表於 2025-7-4 00:00:00

Ubuntu下实时查看CPU、内存(Mem)和GPU的利用率的命令详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>一、实时查看CPU和内存(Mem)利用率<ul class="second_class_ul"><li>①. 顶部状态栏(System Metrics Overview)</li><li>②. 任务和负载信息(Load Average and Uptime)</li><li>③. 进程列表(Processes List)</li><li>④. 底部功能键(Interactive Commands)</li></ul></li><li>二、实时查看GPU的利用率<ul class="second_class_ul"><li>①. 顶部信息部分(General System Information)</li><li>②. GPU 信息表(GPU Information Table)</li><li>③.&nbsp;进程列表(Processes Section)</li></ul></li><li>ubuntu怎么添加环境变量<ul class="second_class_ul"></ul></li></ul></div><p class="maodian"></p><h2>一、实时查看CPU和内存(Mem)利用率</h2>
<p>http官网:https://htop.dev/</p>
<div class="dxycode"><pre class="brush:bash;">sudo apt-get install htop
htop</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="580" src="https://zhuji.jb51.net/uploads/allimg/20250704/2-250F411440U40.png" width="910" /></p>
<p class="maodian"></p><h3>①. 顶部状态栏(System Metrics Overview)</h3>
<p>这个区域显示系统的全局资源使用情况,包括:</p>
<p><strong>CPU 使用率:</strong> 顶部会显示多条表示 CPU 使用情况的条形图,每条代表一个 CPU 核心。不同颜色表示不同类型的 CPU 负载:</p>
<ul><li>绿色:用户进程使用的 CPU(user)</li><li>红色:内核进程使用的 CPU(system)</li><li>蓝色:低优先级进程使用的 CPU(nice)</li><li>黄色:I/O 等待(iowait)</li><li>灰色:虚拟 CPU 使用(steal time)</li></ul>
<p><strong>内存(Mem):</strong> 显示当前的物理内存使用情况,条形图及具体的数值会告诉你内存的已使用、缓存和可用内存数量。</p>
<p><strong>交换区(Swap):</strong> 显示系统交换区的使用情况(如果物理内存不足时,系统会将部分数据放入交换区)。条形图和数值显示交换空间的已用和剩余量。</p>
<p class="maodian"></p><h3>②. 任务和负载信息(Load Average and Uptime)</h3>
<p>这个区域紧接着 CPU、内存和交换区的显示之后,主要展示以下内容:</p>
<ul><li><strong>任务(Tasks):</strong>&nbsp;显示系统上正在运行的任务(进程)数量和状态信息,包括正在运行、睡眠、停止等进程数目。</li><li><strong>负载平均值(Load Average):</strong>&nbsp;显示系统的负载平均值,分别为最近1分钟、5分钟和15分钟的平均负载。</li><li><strong>系统运行时间(Uptime):</strong>&nbsp;显示系统已运行的总时间。</li></ul>
<p class="maodian"></p><h3>③. 进程列表(Processes List)</h3>
<p>这是 <code>htop</code> 窗口中最核心的部分,显示系统中所有运行中的进程,每一行代表一个进程。每个进程行通常包含以下信息:</p>
<ul><li><strong>PID:</strong>&nbsp;进程的唯一标识符(进程 ID)。</li><li><strong>User:</strong>&nbsp;运行该进程的用户。</li><li><strong>Priority(PRI):</strong>&nbsp;进程的优先级,数值越小,优先级越高。</li><li><strong>Nice(NI):</strong>&nbsp;进程的 nice 值,调整进程的调度优先级。</li><li><strong>VIRT:</strong>&nbsp;进程虚拟内存的总量。</li><li><strong>RES:</strong>&nbsp;进程实际使用的物理内存量。</li><li><strong>SHR:</strong>&nbsp;进程共享内存的大小。</li><li><strong>S:</strong>&nbsp;进程的状态,常见的状态有:<ul><li><code>R</code>:Running,进程正在运行。</li><li><code>S</code>:Sleeping,进程在休眠状态。</li><li><code>D</code>:Uninterruptible sleep,无法中断的睡眠状态(通常是 I/O 操作)。</li><li><code>Z</code>:Zombie,僵尸进程,已终止但未清理。</li><li><code>T</code>:Stopped,进程已停止。</li></ul></li><li><strong>%CPU:</strong>&nbsp;进程当前占用的 CPU 百分比。</li><li><strong>%MEM:</strong>&nbsp;进程当前占用的物理内存百分比。</li><li><strong>TIME+:</strong>&nbsp;进程消耗的 CPU 总时间(格式为时:分:秒)。</li><li><strong>Command:</strong>&nbsp;进程执行的命令名称或路径。</li></ul>
<p class="maodian"></p><h3>④. 底部功能键(Interactive Commands)</h3>
<p><code>htop</code> 提供了许多快捷键,底部通常会显示一些常用的快捷键提示:</p>
<ul><li><strong>F1(Help):</strong>&nbsp;显示帮助菜单,解释所有可用的键盘快捷键。</li><li><strong>F2(Setup):</strong>&nbsp;进入设置界面,可以调整显示颜色、排序方式等。</li><li><strong>F3(Search):</strong>&nbsp;搜索进程,可以按名称、PID 等。</li><li><strong>F4(Filter):</strong>&nbsp;过滤进程,显示符合过滤条件的进程。</li><li><strong>F5(Tree):</strong>&nbsp;以树形结构显示进程,展示进程之间的父子关系。</li><li><strong>F6(Sort by):</strong>&nbsp;选择排序方式(区域③中会以蓝色显示),比如按 CPU、内存使用量等排序。</li><li><strong>F7(Nice-):</strong>&nbsp;降低进程的优先级(增加 nice 值)。</li><li><strong>F8(Nice+):</strong>&nbsp;提高进程的优先级(减少 nice 值)。</li><li><strong>F9(Kill):</strong>&nbsp;终止选中的进程。</li><li><strong>F10(Quit):</strong>&nbsp;退出&nbsp;<code>htop</code>。</li></ul>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="487" src="https://zhuji.jb51.net/uploads/allimg/20250704/2-250F411440V91.png" width="1000" /></p>
<p>注意:经研究发现,htop 会把一个进程里的线程当做一个进程来显示出来,上图中的 google chrome 一共有 n 个线程,所以 htop 显示了多个进程。这个特性对于分析进程性能很不有利, 所以我们要关掉它。</p>
<ul><li>F2 打开设置</li><li>用鼠标选择 Display options -&gt;&nbsp;Hide userland threads ,当看到该选项前面的 [ ] 中有一个 x 号时,按 F10 确认。</li></ul>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="486" src="https://zhuji.jb51.net/uploads/allimg/20250704/2-250F4114409430.png" width="1008" /></p>
<p>确认后,在 htop 的进程列表里就看不见一堆重复的进程了。</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="480" src="https://zhuji.jb51.net/uploads/allimg/20250704/2-250F4114409319.png" width="1020" /></p>
<p class="maodian"></p><h2>二、实时查看GPU的利用率</h2>
<p>使用&nbsp;nvidia-smi 命令查看 GPU 利用率,但是这个命令只能显示一帧,如果要实时显示,需要配合watch命令, 一秒钟刷新一次&nbsp;nvidia-smi 命令 &nbsp;&nbsp;</p>
<div class="dxycode"><pre class="brush:bash;">watch -n 1 nvidia-smi</pre></div>
<ul><li><strong><code>watch</code></strong>:这是一个 Linux 命令,用于周期性地执行指定的命令,并将其输出显示在终端上。默认情况下,它会每两秒刷新一次输出。</li><li><strong><code>-n 1</code></strong>:这是 <code>watch</code> 命令的一个选项,表示设置刷新间隔为1秒。换句话说,<code>watch</code> 每隔1秒钟重新运行一次指定的命令,并更新显示的结果。</li><li><strong><code>nvidia-smi</code></strong>:这是 NVIDIA 提供的一个命令,用于显示 GPU 的实时信息,包括显卡的温度、功耗、显存使用率、GPU 负载等。它常用于监控 NVIDIA GPU 的运行状态。</li></ul>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="476" src="https://zhuji.jb51.net/uploads/allimg/20250704/2-250F4114409400.png" width="851" /></p>
<p class="maodian"></p><h3>①. 顶部信息部分(General System Information)</h3>
<p>在输出的顶部,展示系统和驱动程序的全局信息,包括:</p>
<ul><li><strong>NVIDIA-SMI Version</strong>:<code>nvidia-smi</code>&nbsp;工具的版本号。</li><li><strong>Driver Version</strong>:当前安装的 NVIDIA 驱动程序版本。确保驱动程序版本与 CUDA 工具包兼容是非常重要的。</li><li><strong>CUDA Version</strong>:显示当前支持的 CUDA 版本,这是 NVIDIA 的并行计算平台和 API,用于加速深度学习等任务。</li></ul>
<p class="maodian"></p><h3>②. GPU 信息表(GPU Information Table)</h3>
<p>在这一部分,列出了每个已安装的 GPU 及其状态。表格的每一行代表一张 GPU,包含以下字段:</p>
<p><strong>GPU:</strong>每个 GPU 在系统中的编号,通常从 <code>0</code> 开始,表示 GPU 在系统中的索引号。</p>
<p><strong>Name</strong>:显卡的型号名称,例如 <code>Tesla V100</code>、<code>RTX 3090</code> 等,表示具体的显卡型号。</p>
<p><strong>Persistence-M (持久性模式)</strong></p>
<ul><li><strong>On</strong>:GPU 即使没有任务时也保持初始化状态,减少任务启动延迟。</li><li><strong>Off</strong>:GPU 在没有任务时进入未初始化状态,节省功耗。</li></ul>
<p><strong>Bus-Id:</strong>GPU 连接到主板的 PCI 总线 ID,格式为 <code>Domain:Bus:Device.Function</code>,如 <code>00000000:00:1C.0</code>。这个字段在多 GPU 系统中很有用。</p>
<p><strong>Disp.A (Display Active)</strong>:显示该 GPU 是否用于驱动显示器:</p>
<ul><li><strong>On</strong>:GPU 正用于驱动显示器。</li><li><strong>Off</strong>:GPU 未连接到显示器,通常在服务器或计算节点上为 Off。</li></ul>
<p><strong>Volatile Uncorr. ECC (Volatile Uncorrectable ECC Errors)</strong>:GPU 的内存中不可修正的 ECC 错误计数:</p>
<ul><li><strong>0</strong>:没有检测到不可修正的 ECC 错误,这是理想状态。</li><li><strong>&gt;0</strong>:有不可修正的 ECC 错误,可能导致数据计算错误。ECC 是 Error-Correcting Code,用于保证 GPU 计算的准确性。</li><li><strong>N/A</strong>:该 GPU 不支持 ECC(Error-Correcting Code)功能</li></ul>
<p><strong>Fan (风扇速度)</strong>:当前 GPU 风扇的运行速度,单位为百分比(%)。这个值会根据 GPU 温度和负载动态调整,<code>N/A</code> 表示没有独立风扇或者风扇信息不可用。</p>
<p><strong>Temp (温度)</strong>:GPU 当前温度,单位为摄氏度(&deg;C)。理想温度通常在 30&deg;C 到 85&deg;C 之间,过高温度可能导致性能下降或硬件损坏。</p>
<p><strong>Perf (性能状态)</strong>:GPU 的性能状态(P-State),范围从 <code>P0</code> 到 <code>P12</code>:</p>
<ul><li><strong>P0</strong>:最高性能状态,表示 GPU 正在满负荷运转。</li><li><strong>P12</strong>:最低性能状态,表示 GPU 几乎处于闲置状态。</li></ul>
<p><strong>Pwr: Usage/Cap(功耗 / 最大功耗)</strong></p>
<ul><li><strong>Usage</strong>:GPU 当前的功耗,单位为瓦特(W)。</li><li><strong>Cap</strong>:该 GPU 允许的最大功耗。实际功耗在任务执行过程中会动态变化,最大功耗由硬件或 BIOS 设定。</li></ul>
<p><strong>Memory-Usage(显存使用情况)</strong></p>
<ul><li><strong>Used</strong>:当前 GPU 正在使用的显存量。</li><li><strong>Total</strong>:GPU 的总显存量。</li><li>显存使用率反映了计算任务对显存的需求,高密集型任务(如深度学习模型训练)会占用大量显存。</li></ul>
<p><strong>GPU-Util(GPU 利用率 %)</strong>:GPU 的当前利用率,以百分比显示。这个值越高,表示 GPU 的负载越重:</p>
<ul><li><strong>0-10%</strong>:空闲或负载极低。</li><li><strong>100%</strong>:GPU 处于满负荷运转状态。</li></ul>
<p><strong>Compute M. (</strong>计算模式<strong>):</strong>定义了 GPU 如何与多个应用程序共享计算资源</p>
<ul><li><strong>Default</strong>:默认计算模式,多个进程可以同时访问 GPU 的计算资源。这是大多数应用场景的默认模式,允许多个任务共享 GPU。</li><li><strong>Exclusive Process</strong>:在这个模式下,只有一个进程能够使用 GPU 的计算资源,但该进程可以有多个线程。这种模式通常用于防止不同进程之间的竞争,提高性能的一致性。</li><li><strong>Exclusive Thread</strong>:更严格的模式,只有一个线程能够访问 GPU。这种模式不常用。</li><li><strong>Prohibited</strong>:禁止使用 GPU 的计算资源。在这个模式下,GPU 不能执行任何计算任务。这种模式下,GPU 只能用于显示输出。</li></ul>
<p><strong>MIG M.(</strong>多实例 GPU 模式<strong>):</strong>NVIDIA A100 和其他 Ampere 架构 GPU 引入的一项新功能</p>
<ul><li><strong>Enabled</strong>:表示 MIG 模式已启用。在启用 MIG 的情况下,一张 GPU 可以分割为多个逻辑 GPU,每个逻辑 GPU 分配固定的计算和显存资源。这允许多个用户或应用程序独立使用 GPU,避免资源竞争。</li><li><strong>Disabled</strong>:表示 MIG 模式未启用。GPU 以传统方式运作,作为单一计算单元使用。</li><li><strong>N/A</strong>:该 GPU 不支持 MIG 模式。例如,只有支持 MIG 的 NVIDIA GPU(如 A100 或 H100)才会显示 MIG 相关的信息,而其他不支持的 GPU 显示&nbsp;<code>N/A</code>。</li></ul>
<p class="maodian"></p><h3>③.&nbsp;进程列表(Processes Section)</h3>
<p>在 GPU 信息表的下方,显示当前使用 GPU 资源的进程信息。包括:</p>
<p><strong>GPU&nbsp;</strong>:显示每个 GPU 的编号,表示进程在哪个 GPU 上运行。</p>
<p><strong>PID (进程 ID)</strong>:进程的唯一标识符,可以用来进一步排查系统中运行的进程或调试特定任务。</p>
<p><strong>Type (进程类型)</strong>:进程的类型:</p>
<ul><li><strong>C</strong>(Compute):表示计算任务,通常是深度学习或并行计算任务。</li><li><strong>G</strong>(Graphics):表示图形任务。</li><li><strong>V</strong>(Video):表示视频任务,例如视频编码或解码。</li></ul>
<p><strong>Process Name (进程名称)</strong>:显示正在运行的进程名称或路径,如&nbsp;<code>/usr/bin/python</code>,用于识别具体的应用程序或任务。</p>
<p><strong>GPU Memory Usage(显存使用量)</strong>:该进程使用的显存量,单位为 MiB(Mebibytes)。如果多个进程同时运行,显存可能被多个进程共享。</p>
<p class="maodian"></p><h2>ubuntu怎么添加环境变量</h2>
<p>在Ubuntu上添加环境变量通常有几种方法,你可以选择其中一种适合你的方式:</p>
<p>**1. 在`.bashrc`文件中设置环境变量:**</p>
<p>这是一种常见的方式,特别是对于Bash shell用户。你可以编辑`~/.bashrc`文件,并在其中添加你的环境变量。首先,打开终端,然后执行以下步骤:</p>
<p>a. 打开`~/.bashrc`文件:</p>
<div class="dxycode"><pre class="brush:bash;">   ```bash
   nano ~/.bashrc
   ```</pre></div>
<p>如果你想使用其他文本编辑器,可以将`nano`替换为你喜欢的编辑器的命令,比如`gedit`或`vim`。</p>
<p>b. 在文件末尾添加环境变量的行,格式如下:</p>
<div class="dxycode"><pre class="brush:bash;"> export VARIABLE_NAME="your_value"</pre></div>
<p>&nbsp; &nbsp;例如,如果要设置`MY_VARIABLE`为`/path/to/your/directory`,则可以这样做:</p>
<div class="dxycode"><pre class="brush:bash;">export MY_VARIABLE="/path/to/your/directory"</pre></div>
<p>c. 保存文件并退出编辑器。</p>
<p>d. 应用更改:</p>
<div class="dxycode"><pre class="brush:bash;">source ~/.bashrc</pre></div>
<p>**2. 在`.profile`文件中设置环境变量:**</p>
<p>类似于`.bashrc`,你也可以在`~/.profile`文件中设置环境变量。步骤与上述步骤类似,只需将文件名从`.bashrc`更改为`.profile`。</p>
<p>**3. 在`/etc/environment`中设置全局环境变量:**</p>
<p>如果你想设置全局环境变量,可将其添加到`/etc/environment`文件中。注意,这需要管理员权限。你可以使用`sudo`命令打开编辑器:</p>
<div class="dxycode"><pre class="brush:bash;">sudo nano /etc/environment</pre></div>
<p>然后,在文件中添加环境变量,格式为`VARIABLE_NAME=&quot;your_value&quot;`,保存文件并退出。</p>
<p>**4. 使用`export`命令暂时设置环境变量:**</p>
<p>你可以在终端中使用`export`命令来暂时设置环境变量,这些变量将在当前会话中有效,但在会话结束后将失效。例如:</p>
<div class="dxycode"><pre class="brush:bash;">export MY_VARIABLE="temporary_value"</pre></div>
<p>要使此更改在每个终端会话中持久化,你需要将其添加到`~/.bashrc`或`~/.profile`等配置文件中,如上述方法所示。</p>
<p>一旦你设置了环境变量,你可以使用`echo`命令来验证它们是否已正确设置:</p>
<div class="dxycode"><pre class="brush:bash;">echo $VARIABLE_NAME</pre></div>
<p>请将`VARIABLE_NAME`替换为你设置的环境变量的名称。如果它打印出预期的值,那么环境变量已成功设置。</p>
<p>以上就是ubuntu下实时查看CPU,内存(Mem)和GPU的利用率的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: Ubuntu下实时查看CPU、内存(Mem)和GPU的利用率的命令详解