Làm cách nào để điều chỉnh tốc độ quạt GPU NVIDIA trên một nút không đầu?


9

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:


5

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.

Xác định ID PCI của thẻ của bạn:

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>.

Biên tập /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 BusIDphải khớp với ID PCI chúng tôi xác định trong bước trước. Tùy chọn AllowEmptyInitialConfigurationcho 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 Coolbitscho 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.

Biên tập /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 catlệ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.

Ra mắt X

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.

Theo dõi nhiệt độ và tốc độ đồng hồ

nvidia-smicó 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 -qhoặc cụ thể hơn,watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'

Quay trở lại quản lý quạt tự động.

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.


Bạn có thể điều khiển quạt riêng lẻ trên mỗi GPU theo cách này không? Tôi đã thấy rằng thẻ EVGA 1080 Ti sử dụng phương pháp này chỉ thay đổi số 1 (trong số 3 quạt). Bạn có đề xuất nào cho các thương hiệu thân thiện với Linux không sử dụng Phương thức cấu hình không chuẩn (như EVGA không)?
ehiller

@ehiller Tôi chỉ có thẻ Phiên bản sáng lập có một quạt kiểu quạt đơn. Một bộ làm mát như vậy hoạt động tốt hơn khi nhiều thẻ trong một hệ thống. Không nvidia-settings -q fansthể 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.
Alexanderr Dubinsky

1
@Arin Không chắc chắn, nhưng được AllowEmptyInitialConfigurationđặt đúng cho ID PCI chính xác trong xorg.conf? Tập tin đó có thể là khó khăn.
Alexanderr Dubinsky

1
Có một công cụ do NVIDIA cung cấp để tự động tạo tệp xorg.conf và nó hoạt động khá tuyệt vời:nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
Hubert Perron

1
Afaik bạn không thể phục hồi GPU NVIDIA mà không gặp rắc rối với BIOS tùy chỉnh. Thay vào đó, tôi đang đặt giá trị giới hạn công suất phần mềm tính bằng watt : 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-smihoặc nvidia-settings. Có ví dụ về ép xung trong nvidia-smitài liệu ở đây: devbloss.nvidia.com/, Nếu bạn đã nvidia-settingscà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
Hubert Perron

2

Tôi đã viết một tập lệnh Python có thể cài đặt pip để làm một cái gì đó tương tự như đề xuất của @ AlexsandrDubinsky .

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.


Cảm ơn! Một cái gì đó tôi đã cố gắng tìm ra nhưng không thể là làm thế nào để thực hiện toàn bộ điều này trong Docker và tránh cài đặt máy chủ X. Bạn đã thử điều này?
Alexanderr Dubinsky

Tôi đã không thử nó, tôi sợ và tôi không thể nghĩ ra cách nào để làm điều đó mà không truy cập được máy chủ X. Sẽ phải đặt tốc độ quạt bằng một cách khác hơnnvidia-settings
Andy Jones

Chà, trình điều khiển nvidia có thể truy cập được trong các thùng chứa và có thể được sử dụng để chạy, ví dụ CUDA. Tôi nghĩ có thể khởi chạy máy chủ X và nói chuyện với trình điều khiển nvidia, nhưng cho đến nay tôi vẫn chưa gặp may.
Alexanderr Dubinsky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.