it-swarm.cn

如何检查Linux中哪个GPU是活动的?

我的上网本中有2个GPU。我如何知道在给定时刻我实际上正在使用哪一个?

80
LanceBaynes

我刚刚经历了一次地狱,试图让我的离散图形在Ubuntu中工作,并且回答这个问题一直是一个挑战,因为前面提到的lspci方法有时可以说两者都是[VGA controller]

我认为以下命令应该给您指示您的活动芯片:

$ glxinfo|egrep "OpenGL vendor|OpenGL renderer"
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile

对我来说,这告诉我我的英特尔图形正在运行该节目。如果您使用的是nvidia芯片,并且使用的是bumblebee软件包,则可以在该行的前面放置optirun,它应该告诉您您正在运行NVidia芯片(optirun基本上是在告诉计算机使用分立芯片来运行以下命令,但其他所有操作仍在使用集成芯片)

$ optirun glxinfo|egrep "OpenGL vendor|OpenGL renderer"
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 555M/PCIe/SSE2

glxheads还会告诉您一些有关正在使用哪个图形卡的有用信息(通常以更紧凑和易于阅读的形式重复glxinfo),它为旋转三角形提供了不错的呈现方式。

51
Nickolai

要检查当前正在使用哪个GPU(即哪个是活动的VGA控制器),请输入

lspci -vnnn | Perl -lne 'print if /^\d+\:.+(\[\S+\:\S+\])/' | grep VGA

末尾带有[VGA controller]的任何控制器都是您当前活动的GPU。其他的则关闭。在以下示例中,在不使用nVidia one时,Intel卡处于活动状态:

00:02.0 VGA compatible controller [0300]: Intel Corporation Core Processor
Integrated Graphics Controller [8086:0046] (rev 02) (prog-if 00 [VGA 
controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce
GT 540M] [10de:0df4] (rev ff) (prog-if ff)
20
ubuntudroid
nvidia-smi -L

这给了我我想要的。此命令显示计算机上存在的GPU的列表。这可以帮助您确定哪些是活动的。

从这里的线程中获得了命令: 带有多个NVIDIA GPU卡的Ubuntu盒子| devtalk.nvidia.com

9
Hardhik

nvidia-settings GUI

在Ubuntu 15.10上,安装nvidia-352后,GPU似乎可以正常工作:

nvidia-settings

显示如下:

enter image description here

请注意其显示方式:

GPU 0 - (NVS 5400M)

NVS 5400M是我的GPU模型。

然后,如果我触发glxgears,GPU使用率将超过90%。

因此,我希望如果您有多个GPU,则可以看到每个GPU一次使用了多少。

您正在使用哪个操作系统?如果您在大多数linux机器上使用lspci,则会获得pci设备的列表,仅是grep图形设备,它会同时弹出两者。之后,只需检查每个配置,您应该会看到up/on/active或类似性质的详细信息。

1
baweaver

nvidia-smi非常有用,但有时我发现它并不总是包含所有内容。似乎当进程崩溃时,它们并不总是被列出。

Sudo lsof /dev/nvidia*一直为我工作。它也可以在不使用Sudo的情况下工作,但只会显示您拥有的进程。如果您正在使用多用户机器或使用docker,则使用Sudo可能会获得更好的结果。

如果发现这两个命令之间存在差异,则可能需要考虑killing与lsof找到的额外进程。

0
Rick Smith