如果你现在真的想做任何数据驱动的事情,一台强大的个人电脑是必备的。数据科学往往需要RAM,强化学习很消耗CPU,深度学习很消耗GPU。
当你处理那些资源匮乏的应用程序时,重要的是要知道你的电脑是否在有效地被使用。
- 你的算法在CPU上是瓶颈吗?它能使用更多的内核吗?
- 你是否有足够的RAM,或者你的内存使用是否溢出到交换中(磁盘内存,非常慢)?
- 你的CPU或GPU运行过热了吗?Intel CPU和Nvidia GPU的运行温度达到一定温度后会受到速度限制。
所有这些问题以及更多的问题都是需要考虑的,因为它们会影响数据科学和人工智能项目上工作的速度。当你能够准确地看到程序使用了多少CPU、RAM和GPU时,使工作变得更高效会容易很多,因为我们清楚地知道瓶颈来自何处。
HTOP — CPU, RAM
下面是用于监视CPU、RAM和GPU使用情况的4个最佳命令行工具的列表和展示。你可以将它们与进程并行使用,以查看哪些资源正在消耗,或可以优化的(或者需要升级PC!)!
HTOP是一个交互式的、基于命令行的系统监视器,用于查看PC上正在运行的进程。可以将其视为系统监视器GUI!
在HTOP输出的最顶端,将看到每个CPU核心的使用率,以及RAM和交换内存的总使用率。这对于查看程序是否使用了所有内核以及使用了多少内核非常有用。你也可以看到是否达到了内存使用极限。
下面,HTOP展示每个运行进程的CPU、RAM和交换内存使用情况。它还显示用于启动进程的命令。如果一个进程有多个线程,那么这些线程的RAM使用率被分组在一起,而CPU使用率是基于每个线程计算的,就像上图中使用python3 main.py一样。
使用简单的apt命令即可安装htop
:
sudo apt install htop
使用时只需输入htop
。
Glances — CPU, RAM, Disk I/O
Glances是一个免费软件,用python开发,可以用来监视系统的总CPU、RAM和磁盘I/O。
和HTOP一样,将看到系统中每个进程的CPU和RAM总使用量。使用glances的好处是:
- 可以看到许多硬盘/磁盘信息:
- 每个进程运行在哪个磁盘上(最左边)
- 有关每个磁盘的总容量和使用情况的信息(最左边)
- 每秒读取和写入磁盘的次数(字节)。这非常适合检查磁盘速度是否是瓶颈,因为HDD和SSD具有最大的读/写速度。
- 更详细的RAM统计信息,包括缓冲区和缓存。
此外,统计信息可以自动写入磁盘或发送到远程服务器。
可以使用简单的apt命令安装glances
:
sudo apt install glances
并通过在命令行中输入glances
并enter来运行它!
Sensors — CPU (with temps)
到目前为止,HTOP和glances能够让我们深入了解CPU使用情况、RAM和磁盘I/O,这些对于发现任何瓶颈和提高代码效率都很重要。
但是硬件温度检测呢?
像英特尔这样的CPU制造商在其处理器中内置了一个安全功能。如果CPU温度超过某个限制,它的速度会受到限制,以避免过热。
这会扼杀程序的速度!我们可以看看HTOP,看到100%的CPU使用率,并且认为一切都很好。同时,我们的CPU速度正在被限制,更不用说组件本身的物理损坏了。
要监控CPU的温度,可以使用一个称为Sensors的工具。
在第一次安装时,传感器将检测每个相关设备(处理器、风扇等),并准备测量温度。一旦运行它,传感器应用程序就能够测量CPU的每个核心的温度以及所有风扇的速度。查看结果如下图。
可以使用简单的apt
命令安装传感器:
sudo apt-get install lm-sensors
然后像这样检测所有设备:
sudo sensors-detect
最后运行传感器来监视你的CPU温度!
watch sensors
Nvidia SMI — GPU
最后,我们监测GPU!
与CPU类似,在GPU上要测量的最重要的事情是使用和温度。幸运的是,我们可以使用一个工具来获取这两个测量值。
Nvidia有自己的工具来测量其GPU的使用和温度,称为Nvidia SMI;SMI代表系统管理接口。Nvidia SMI工具在Linux上附带Nvidia GPU显示驱动程序,因此一旦您正确安装了GPU,就可以开始使用它。
要运行它,只需输入watch nvidia-smi
或者watch -n 10 nvidia-smi
(-n 10表示查看间隔时间,可自定义)并Enter。输出示例如下图所示:
Nvidia SMI为我们提供了许多有用的信息:
- GPU内存使用量(MB)
- GPU用电量(瓦)
- GPU温度(摄氏度)
- GPU风扇转速百分比
除了这些硬件统计数据,我们还得到了使用GPU的每个进程的列表、它们各自的内存使用情况,以及类型:C表示计算,G表示图形(显示)。