NVIDIA 卡上的 X 服务器没有屏幕

NVIDIA 卡上的 X 服务器没有屏幕

我有一个相当独特的情况,我有一台安装了 NVIDIA 显卡的服务器,我们需要在其上运行 X 服务器,但该服务器位于没有显示器的机架上。运行 X 的原因是为了使用 Qt 程序进行渲染操作。使用 GPU 渲染而不是 CPU 可以带来巨大的效率优势。每当 i 时startx,X 都会因未连接屏幕而无法启动。使用假显示器启动 x 的最佳方法是什么?操作系统是 RHEL 6

答案1

我不知道这是否'最好的办法',但这就是我做事的方式。

使用 nvidia-settings GUI 为屏幕创建 edid 文件

然后在您选择的终端中粘贴或写入:

sudo nvidia-xconfig -a --allow-empty-initial-configuration \
--use-display-device="DFP-0" --connected-monitor="DFP-0" \
--custom-edid="DFP-0:/home/$USER/edid.txt" 

sudo reboot

将 GPU 和屏幕添加到 xorg.conf。

如果您希望能够超频并控制风扇,请将“--cool-bits = 12”(或 NVIDIA 文档中所述的适用于您的驱动程序的任何内容)添加到顶部的“nvidia-xconfig”行。

如果您没有办法创建 edid 文件,或者找不到,我使用的就是这个:

00 ff ff ff ff ff ff 00 1e 6d f5 56 71 ca 04 00 05 14 01 03 80 35 1e 78 0a ae c5 a2 57 4a 9c 25 12 50 54 21 08 00 b3 00 81 80 81 40 01 01 01 01 01 01 01 01 01 01 1a 36 80 a0 70 38 1f 40 30 20 35 00 13 2b 21 00 00 1a 02 3a 80 18 71 38 2d 40 58 2c 45 00 13 2b 21 00 00 1e 00 00 00 fd 00 38 3d 1e 53 0f 00 0a 20 20 20 20 20 20 00 00 00 fc 00 57 32 34 35 33 0a 20 20 20 20 20 20 20 01 3d 02 03 21 f1 4e 90 04 03 01 14 12 05 1f 10 13 00 00 00 00 23 09 07 07 83 01 00 00 65 03 0c 00 10 00 02 3a 80 18 71 38 2d 40 58 2c 45 00 13 2b 21 00 00 1e 01 1d 80 18 71 1c 16 20 58 2c 25 00 13 2b 21 00 00 9e 01 1d 00 72 51 d0 1e 20 6e 28 55 00 13 2b 21 00 00 1e 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00 13 2b 21 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 26

保存到用户主目录中的 edid.txt,或在配置行中更改位置。

如果您启用超频并希望在主 GPU 上使用屏幕:

sudo nano /etc/X11/xorg.conf

删除行:

Option         "UseDisplayDevice" "DFP-0"
Option         "CustomEDID" "DFP-0:/home/nv/edid.bin"
Option         "ConnectedMonitor" "DFP-0"

从具有您的 GPUID 以及附加并分配了屏幕的‘屏幕’部分。

超频!

功率限制:

sudo nvidia-smi -i GPUID -pl WATTLIMIT

核心时钟:

nvidia-settings -c :0 -a [gpu:GPUID]/GPUGraphicsClockOffset[3]=16

:0是分配给GPU的X屏幕,GPUID是猜测的GPU的编号(从0开始数)。

16 == 偏移量。

使用负数来降频。

内存时钟:

nvidia-settings -c :0 -a [gpu:GPUID]/GPUMemoryTransferRateOffset[3]=1200

如果您习惯使用 Afterburner 等,则必须将 Linux 中的偏移值加倍(大约)。

我在 Linux 系统上总是能从我的卡中获得更多电量(供我使用

手动启用并控制风扇:

nvidia-settings -c :0 -a [gpu:GPUID]/GPUFanControlState=1
nvidia-settings -c :0 -a [fan:GPUID]/GPUTargetFanSpeed=85

将 GPUFanControlState 设置回 0 以禁用手动控制。

GPUTargetFanSpeed 接受 0 到 100 之间的整数作为输入。

检查温度、电量使用情况等:

nvidia-smi

如果进程被 GPU 锁定在低功耗状态,我发现的唯一解决方法是创建应用程序配置文件,没有办法控制 P 状态。至少在消费卡上是这样。

具体过程如下:

cd ~/.nv
cat > nvidia-application-profiles-rc

粘贴此模板:

{
"rules": [
    {
        "pattern": {
            "feature": "procname",
            "matches": "NameOfRunningProcessThatWantsMorePriority"
        },
        "profile": "ProfileNameWhatever"
    }
],
"profiles": [
    {
        "name": "ProfileNameWhatever",
        "settings": []
    }
]
}

按 Enter 键,然后按 CTRL + C 键,然后根据自己的喜好进行编辑。

启动您的进程并输入 nvidia-smi 以获取在应用程序配置文件中使用的进程名称。

或者,如果您可以访问 GUI,则可以在那里创建应用程序配置文件。

为了在重启后保持自定义功率限制,必须启用“持久模式”。

要在所有 GPU 上启用它:

sudo nvidia-smi -pm 1

要在特定 GPU 上启用它:

sudo nvidia-smi -i GPUID -pm 1

如果无头运行并且连续运行几个小进程,持久模式将有助于提高速度,因为 GPU 在作业之间不会进入睡眠状态,这将大大减少处理许多小任务的时间!
激活后会增加闲置消耗!

使用 lightdm 时的附加信息!!
常规方法在较新的 Ubuntu 系统上会产生问题

像其他所有实际配置内容一样,使用 root 帐户或 sudo

风扇控制:

# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [gpu:GPUID]/GPUFanControlState=1
# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [fan:GPUID]/GPUTargetFanSpeed=70

超频/降频:

# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [gpu:GPUID]/GPUGraphicsClockOffset[3]=64
# DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -c :0 -a [gpu:GPUID]/GPUMemoryTransferRateOffset[3]=1100

# == root,或 sudo

如果在一切运行(或不运行)时出现问题,NVIDIA 发布了一些很好的故障排除查询:

有用的 nvidia-smi 查询

其他;

ArchLinux Wiki 关于 NVIDIA 的技巧和窍门

xconfig 附录 NVIDIA 驱动程序 384.98

只需将 URL 中的驱动程序版本更改为您的驱动程序版本,您就走上了正确的道路。

相关内容