Làm cách nào để kiểm soát tốc độ quạt của nhiều GPU NVIDIA tiêu dùng như Titan và 1080 Ti trên một nút không đầu chạy Linux?
Làm cách nào để kiểm soát tốc độ quạt của nhiều GPU NVIDIA tiêu dùng như Titan và 1080 Ti trên một nút không đầu chạy Linux?
Câu trả lời:
Sau đây là một phương pháp đơn giản không yêu cầu kịch bản, kết nối màn hình giả hoặc nghịch ngợm và có thể được thực thi qua SSH để kiểm soát nhiều người hâm mộ GPU của NVIDIA. Nó đã được thử nghiệm trên Arch Linux.
Chỉnh sửa : Bây giờ tôi không chắc phương pháp tốt nhất là gì. Trước đây, tôi đề nghị lspci -k | grep -A 2 -E "(VGA|3D)"
. Tuy nhiên, điều này không cung cấp ID chính xác trên hệ thống Threadripper mới của tôi.
Những gì đã làm việc là sudo startx
, mở /var/log/Xorg.0.log
(hoặc bất kỳ vị trí startX nào liệt kê trong đầu ra của nó dưới dòng "Nhật ký tệp:") và tìm kiếm dòng NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>
.
/etc/X11/xorg.conf
Dưới đây là một ví dụ cho máy ba GPU:
Section "ServerLayout"
Identifier "dual"
Screen 0 "Screen0"
Screen 1 "Screen1" RightOf "Screen0"
Screen 1 "Screen2" RightOf "Screen1"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:5:0:0"
Option "Coolbits" "7"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:6:0:0"
Option "Coolbits" "7"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Device"
Identifier "Device2"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:9:0:0"
Option "Coolbits" "7"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
EndSection
Section "Screen"
Identifier "Screen2"
Device "Device2"
EndSection
Các BusID
phải khớp với ID PCI chúng tôi xác định trong bước trước. Tùy chọn AllowEmptyInitialConfiguration
cho phép X khởi động ngay cả khi không có màn hình nào được kết nối. Tùy chọn Coolbits
cho phép người hâm mộ được kiểm soát. Nó cũng có thể cho phép ép xung, nhưng điều này chưa được tôi kiểm tra.
/root/.xinitrc
nvidia-settings -q fans
nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:1]/GPUFanControlState=1 -a [fan:1]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:2]/GPUFanControlState=1 -a [fan:2]/GPUTargetFanSpeed=75
cat
Tôi sử dụng .xinitrc để thực thi cài đặt nvidia cho thuận tiện, mặc dù có thể có nhiều cách khác. Ở đây, tôi đặt người hâm mộ đến 75%. Tôi ngăn máy chủ X đóng với cat
lệnh trống . Điều này không thực sự cần thiết, nhưng tôi thấy đôi khi tôi gặp vấn đề với các thẻ từ chối rời khỏi trạng thái năng lượng thấp P8 nếu X đóng. Dòng đầu tiên sẽ in ra mọi quạt GPU trong hệ thống.
sudo startx -- :0
Bạn có thể thực thi lệnh này từ SSH. Đầu ra sẽ là:
Current version of pixman: 0.34.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat May 27 02:22:08 2017
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Attribute 'GPUFanControlState' (pushistik:0[gpu:0]) assigned value 1.
Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:0]) assigned value 75.
Attribute 'GPUFanControlState' (pushistik:0[gpu:1]) assigned value 1.
Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:1]) assigned value 75.
Attribute 'GPUFanControlState' (pushistik:0[gpu:2]) assigned value 1.
Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:2]) assigned value 75.
nvidia-smi
có thể được sử dụng để quan sát nhiệt độ và sức mạnh. Nhiệt độ thấp hơn sẽ cho phép thẻ đồng hồ cao hơn và tăng khả năng rút điện. Bạn có thể sử dụng sudo nvidia-smi -pl 150
để hạn chế rút điện và giữ cho thẻ mát, hoặc sử dụng sudo nvidia-smi -pl 300
để cho chúng ép xung. 1080 Ti của tôi chạy ở mức 1480 MHz nếu được cung cấp 150W và trên 1800 MHz nếu được cung cấp 300W, nhưng điều này phụ thuộc vào khối lượng công việc. Bạn có thể theo dõi tốc độ đồng hồ của họ bằng nvidia-smi -q
hoặc cụ thể hơn,watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'
Khởi động lại. Tôi đã không tìm thấy một cách khác để làm cho người hâm mộ tự động.
nvidia-settings -q fans
thể hiện điều gì? (Bạn có thể thực thi nó bên trong .xinitrc) Có thể bạn có thể điều chỉnh tất cả các quạt nếu bạn giải quyết chúng một cách chính xác.
AllowEmptyInitialConfiguration
đặt đúng cho ID PCI chính xác trong xorg.conf? Tập tin đó có thể là khó khăn.
nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
nvidia-smi -pl 120
. Điều này sẽ hạn chế mức tiêu thụ năng lượng của mỗi GPU xuống còn 120W. Bạn cũng có thể ép xung / ép xung lõi và mem bằng cách sử dụng nvidia-smi
hoặc nvidia-settings
. Có ví dụ về ép xung trong nvidia-smi
tài liệu ở đây: devbloss.nvidia.com/, Nếu bạn đã nvidia-settings
cài đặt, bạn có thể áp dụng bù đồng hồ mà không phải sử dụng đồng hồ cụ thể:nvidia-settings -a [gpu]/GPUGraphicsClockOffset[3]=100
Khi bạn chạy fans.py, nó sẽ thiết lập máy chủ X tạm thời cho mỗi GPU có màn hình giả được đính kèm. Sau đó, cứ sau vài giây, nó lại lặp lại các GPU và đặt tốc độ quạt theo nhiệt độ của chúng. Khi tập lệnh chết, nó trả lại quyền điều khiển của quạt cho trình điều khiển và dọn sạch các máy chủ X.
nvidia-settings