Bagaimana mungkin untuk mengontrol kecepatan kipas dari beberapa GPU NVIDIA konsumen seperti Titan dan 1080 Ti pada node tanpa kepala yang menjalankan Linux?
Bagaimana mungkin untuk mengontrol kecepatan kipas dari beberapa GPU NVIDIA konsumen seperti Titan dan 1080 Ti pada node tanpa kepala yang menjalankan Linux?
Jawaban:
Berikut ini adalah metode sederhana yang tidak memerlukan skrip, menghubungkan monitor palsu, atau mengutak-atik dan dapat dieksekusi melalui SSH untuk mengontrol beberapa penggemar GPU NVIDIA. Ini telah diuji di Arch Linux.
Sunting : Saya sekarang tidak yakin apa metode yang terbaik. Sebelumnya, saya menyarankan lspci -k | grep -A 2 -E "(VGA|3D)"
. Namun, ini tidak memberikan ID yang benar pada sistem Threadripper baru saya.
Apa yang berhasil adalah sudo startx
, buka /var/log/Xorg.0.log
(atau lokasi apa pun yang startX daftar dalam outputnya di bawah baris "Log file:"), dan cari baris NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>
.
/etc/X11/xorg.conf
Berikut adalah contoh untuk mesin tiga 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
The BusID
harus sesuai dengan ID PCI kami mengidentifikasi di langkah sebelumnya. Opsi ini AllowEmptyInitialConfiguration
memungkinkan X untuk memulai walaupun tidak ada monitor yang terhubung. Opsi ini Coolbits
memungkinkan penggemar dikendalikan. Itu juga dapat memungkinkan overclocking, tetapi ini belum diuji oleh saya.
/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
Saya menggunakan .xinitrc untuk menjalankan pengaturan nvidia untuk kenyamanan, meskipun mungkin ada cara lain. Di sini, saya mengatur penggemar ke 75%. Saya mencegah X server menutup dengan cat
perintah kosong . Ini tidak sepenuhnya diperlukan, tetapi saya kadang-kadang menemukan masalah dengan kartu yang menolak untuk meninggalkan status daya rendah P8 jika X ditutup. Baris pertama akan mencetak setiap kipas GPU di sistem.
sudo startx -- :0
Anda dapat menjalankan perintah ini dari SSH. Outputnya adalah:
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
dapat digunakan untuk mengamati suhu dan daya tarik. Temperatur yang lebih rendah akan memungkinkan kartu untuk clock lebih tinggi dan meningkatkan daya tariknya. Anda dapat menggunakan sudo nvidia-smi -pl 150
untuk membatasi penarikan daya dan menjaga kartu tetap dingin, atau menggunakannya sudo nvidia-smi -pl 300
untuk membuatnya overclock. 1080 Ti saya berjalan pada 1480 MHz jika diberikan 150W, dan lebih dari 1800 MHz jika diberikan 300W, tetapi ini tergantung pada beban kerja. Anda dapat memonitor kecepatan jam mereka dengan nvidia-smi -q
atau lebih khusus,watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'
Mulai ulang. Saya belum menemukan cara lain untuk membuat para penggemar otomatis.
nvidia-settings -q fans
ditunjukkan? (Anda dapat menjalankannya di dalam .xinitrc) Mungkin Anda dapat menyesuaikan semua penggemar jika Anda mengatasinya dengan benar.
AllowEmptyInitialConfiguration
diatur dengan benar untuk PCI ID yang benar di xorg.conf? File itu bisa rumit.
nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=28 --separate-x-screens
nvidia-smi -pl 120
. Ini akan membatasi konsumsi daya setiap GPU hingga 120W. Anda juga dapat melakukan overclock / underclock core dan mem menggunakan nvidia-smi
atau nvidia-settings
. Ada contoh overclocking dalam nvidia-smi
dokumen di sini: devblogs.nvidia.com/... Jika Anda telah nvidia-settings
menginstal Anda dapat menerapkan offset jam tanpa harus menggunakan jam tertentu:nvidia-settings -a [gpu]/GPUGraphicsClockOffset[3]=100
Ketika Anda menjalankan fans.py, itu menyiapkan server X sementara untuk setiap GPU dengan layar palsu terpasang. Kemudian, loop di atas GPU setiap beberapa detik dan mengatur kecepatan kipas sesuai suhu mereka. Ketika skrip mati, ia mengembalikan kontrol kipas ke driver dan membersihkan server X.
nvidia-settings