GPU sunucuyla ilgili neredeyse her sorun, nvidia-smi komutuyla başlar. Komut kartınızı ve belleğini gösteriyorsa temel çalışıyordur; hata veriyorsa sürücü, çekirdek, güç ya da donanım tarafında bir şey ters gidiyordur. Sorun şu ki hata mesajları kısa ve nedenleri çok farklıdır: aynı cümle bazen sadece bir çekirdek güncellemesinin yan etkisidir, bazen de donanım arızasının ilk belirtisi. Bu rehberde GPU sunucularda en sık karşılaşılan altı sorunu (sürücü iletişim hatası, kartın görünmemesi, Xid hataları, ısıl kısıtlama, dolu VRAM ve Docker'da GPU) sırasıyla, hangi komutla neye bakacağınızı göstererek anlatıyoruz. Sonunda destek ekibine hangi bilgileri göndermeniz gerektiğini de bulacaksınız.
Hata ayıklamaya başlamadan önce sağlıklı bir çıktının neye benzediğini bilmek işi kolaylaştırır. Komutu çalıştırdığınızda üstte sürücü ve CUDA sürümünü, ardından her kart için bir satır görürsünüz. Bu satırdaki alanların anlamı şöyledir:
Sürekli izlemek için nvidia-smi -l 2 komutu çıktıyı iki saniyede bir yeniler. Daha okunaklı bir canlı görünüm için nvtop paketini kurabilirsiniz (sudo apt install nvtop).
Bu mesaj, nvidia-smi'nin sürücü modülüyle konuşamadığı anlamına gelir. En yaygın nedeni çekirdek güncellemesidir: Ubuntu yeni bir çekirdek kurduğunda NVIDIA modülünün bu çekirdek için yeniden derlenmesi gerekir; derleme başarısız olur ya da çekirdek başlıkları eksikse modül yüklenmez. İkinci yaygın neden Secure Boot'tur: açıksa imzasız modül yüklenmez. Üçüncüsü, açık kaynak nouveau sürücüsünün kartı sahiplenmiş olmasıdır. Sırayla şunlara bakın:
uname -r
lsmod | grep -i nvidia
dkms status
sudo dmesg -T | grep -i -E "nvrm|nvidia" | tail -20
mokutil --sb-state
uname -r çalışan çekirdeği, dkms status NVIDIA modülünün hangi çekirdek için derlendiğini gösterir. Çalışan çekirdek için "installed" satırı yoksa modülü yeniden derleyin:
sudo apt -y install linux-headers-$(uname -r)
sudo dkms autoinstall
sudo modprobe nvidia
nvidia-smi
Hâlâ olmuyorsa sürücü paketini yeniden kurun ve sunucuyu yeniden başlatın. mokutil --sb-state "SecureBoot enabled" diyorsa imzasız modül engellenmiş olabilir; bu durumda modülü imzalamanız ya da Secure Boot'u kapatmanız gerekir. Sunucunuzda bu ayarı değiştirmek için donanım yönetim konsoluna ihtiyaç duyabilirsiniz; bunun için HTML5 KVM konsolu rehberimize bakın.
Bu mesaj sürücünün çalıştığını ama hiçbir kart bulamadığını söyler. Burada işe, kartın sistemde hiç görünüp görünmediğini kontrol ederek başlayın:
lspci | grep -i nvidia
lspci -nn | grep -i -E "vga|3d"
Kart bu listede varsa ama nvidia-smi bulamıyorsa sürücü ile kartın uyumsuzluğu söz konusudur; sürücü sürümünü gözden geçirin ve ubuntu-drivers devices önerisini uygulayın. Kart lspci'de hiç görünmüyorsa sorun yazılımda değildir: PCIe bağlantısı, güç beslemesi ya da kartın kendisi olabilir. Bu durumda yeniden kurulumla vakit kaybetmeyin; çıktıyı toplayıp destek talebi açın.
Çalışan bir sunucunun bir gün birden GPU'yu kaybetmesi çoğunlukla gece çalışan otomatik güncellemelerden gelir. Çekirdek güncellenir, NVIDIA modülü yeni çekirdek için derlenemez ve sunucu yeniden başlayınca kart kaybolur. Önlemek için üretimdeki sunucuda çalışan sürücü ve çekirdek paketlerini sabitleyip güncellemeyi bilerek, bir bakım penceresinde yapın:
dpkg -l | grep -E "nvidia-driver|linux-image|linux-headers"
sudo apt-mark hold linux-image-generic linux-headers-generic
sudo apt-mark hold nvidia-driver-XXX
Buradaki nvidia-driver-XXX yerine kendi sürüm numaranızı yazın. Bir güncelleme yapmak istediğinizde sudo apt-mark unhold ile kilidi kaldırıp güncelleyin, yeniden başlatın ve nvidia-smi ile doğrulayın. Tesla P40 gibi eski nesil kartlarda bu alışkanlık daha da önemlidir; çünkü yeni sürücü dalları o nesli desteklemeyi bırakabilir.
Sürücü, karttaki sorunları çekirdek günlüğüne "Xid" kodlarıyla yazar. Bunları şu komutla arayın:
sudo dmesg -T | grep -i xid
Kodların anlamı sürücü sürümüne göre ayrıntılanır ve NVIDIA'nın Xid hata kataloğunda belgelenmiştir; yine de iki grup bilmek işinize yarar. Uygulama kaynaklı hatalar (örneğin bir programın geçersiz bellek erişimi) genellikle yalnızca o programı etkiler; programı güncellemek ya da farklı bir sürümle denemek yeterli olur. Donanım ya da veriyolu kaynaklı hatalar ise daha ciddidir. Bunların en bilineni Xid 79'dur: "GPU has fallen off the bus" yani kartın veriyolundan düştüğünü gösterir. Güç, ısı ya da PCIe bağlantısı nedeniyle kartla iletişim kesilmiştir ve çoğu zaman yeniden başlatmadan düzelmez. Xid 79 görürseniz yazılımı kurcalamayın; dmesg çıktısıyla birlikte hemen destek talebi açın.
Kartınız çalışıyor ama beklenenden yavaşsa kısıtlamaya girmiş olabilir. Kart çok ısındığında ya da güç sınırına dayandığında kendi hızını düşürür. Nedenini sürücüye sorabilirsiniz:
nvidia-smi -q -d PERFORMANCE
nvidia-smi -q -d TEMPERATURE,POWER
İlk komutun çıktısındaki "Clocks Event Reasons" (eski sürümlerde "Clocks Throttle Reasons") bölümü, hangi kısıtlamanın etkin olduğunu gösterir: "HW Thermal Slowdown" ve "SW Thermal Slowdown" ısı kaynaklıdır, "SW Power Cap" ise güç sınırıdır. Güç sınırı bazen bilinçli bir ayardır ve normaldir. Isıl yavaşlama sürekli görünüyorsa soğutma ya da hava akışında bir sorun olabilir; bu bir donanım konusudur ve destek ekibine bildirilmelidir. Yük altında sıcaklığı kaydedip zamana göre incelemek için aşağıdaki izleme bölümündeki yöntemi kullanın.
Bellek kullanımı yüksek görünüyor ve yeni iş "CUDA out of memory" hatası veriyorsa, belleği büyük olasılıkla arka planda kalmış bir süreç tutuyordur. Hangi sürecin ne kadar bellek kullandığını görmek için:
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv
ps -fp 12345
sudo fuser -v /dev/nvidia*
Birinci komut GPU belleğini kullanan süreçleri listeler. İkincisinde 12345 yerine listeden aldığınız süreç numarasını yazarak sürecin ne olduğunu görürsünüz. Gereksiz bir süreçse kill ile sonlandırın; yanıt vermiyorsa son çare olarak kill -9 kullanın. Bir Jupyter not defteri ya da yarım kalmış bir eğitim betiği tipik suçlulardır. Konteyner kullanıyorsanız süreç ana makinede başka bir adla görünebilir; docker ps ile ilgili konteyneri bulun.
GPU sunucunuzda donanıma uzaktan erişin
Fiziksel GPU sunucularda tam root erişimi ve tarayıcıdan açılan IPMI/KVM konsoluyla, SSH koptuğunda bile sunucunuza müdahale edebilirsiniz.
GPU sunucu paketlerini inceleyinKonteyner içinde GPU kullanmak istediğinizde docker run --gpus all komutu "could not select device driver with capabilities: [[gpu]]" hatası veriyorsa, Docker NVIDIA çalışma zamanını tanımıyor demektir. Çözüm, NVIDIA Container Toolkit'i kurup Docker'a tanıtmaktır. Paketi NVIDIA'nın resmi deposundan kurduktan sonra:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo docker run --rm --gpus all ubuntu nvidia-smi
Son komut bir konteyner başlatıp içinden nvidia-smi çalıştırır; kartı görüyorsanız yapı tamamdır. Yine hata alıyorsanız ana makinede nvidia-smi'nin çalıştığından emin olun; Docker, çalışmayan bir sürücüyü konteynere taşıyamaz. Docker ile çok kaplı yapılar kuruyorsanız Docker Compose rehberimiz işinize yarar.
En iyi sorun giderme, sorun çıkmadan önce veriyi toplamaktır. Basit bir yöntem, nvidia-smi'nin sorgu çıktısını düzenli aralıklarla bir dosyaya yazmaktır. Böylece "gece saat üçte ne oldu?" sorusuna cevap verebilirsiniz:
nvidia-smi --query-gpu=timestamp,name,temperature.gpu,utilization.gpu,memory.used,memory.total,power.draw --format=csv -l 30 >> ~/gpu-izleme.csv
Bu komutu tmux içinde çalıştırabilir ya da bir systemd servisine çevirebilirsiniz. Dosyayı bir tabloda açıp sıcaklık, kullanım ve güç değerlerinin zaman içindeki değişimine bakabilirsiniz. Daha gelişmiş bir izleme için bu verileri bir Prometheus ve Grafana düzenine aktarabilirsiniz; NVIDIA'nın DCGM tabanlı dışa aktarıcısı bu iş için yaygındır, ancak GeForce sınıfı kartlarda bazı metrikler kullanılamayabilir. Basit bir alarm için bir betik, sıcaklık eşiği aşıldığında sistem günlüğüne kayıt düşebilir.
Sorun anında sakin kalıp sıraya uymak vakit kazandırır. Önce nvidia-smi'yi çalıştırın. Çalışıyorsa ve kartı görüyorsanız sorun büyük olasılıkla uygulama ya da ayar kaynaklıdır: VRAM doluluğuna, süreçlere ve kısıtlamaya bakın. Hata veriyorsa lspci ile kartın veriyolunda görünüp görünmediğini kontrol edin. Kart görünüyorsa sorun sürücü ya da çekirdek tarafındadır: dkms status ve dmesg çıktısı yönünüzü gösterir. Kart hiç görünmüyorsa donanım ya da güçtür ve yazılımla uğraşmanın anlamı yoktur. Bu üç dallı mantık, sorunların büyük çoğunluğunu birkaç dakikada doğru kategoriye koyar. Hangi daldaysanız yalnızca o bölümü uygulayın; her şeyi aynı anda değiştirmek nedeni gizler.
Bazı sorunlar ekran kartından değil, çevresindeki kaynaklardan gelir. Disk dolduğunda sürücü ve uygulama günlükleri yazılamaz, paket güncellemeleri yarıda kalır ve sunucu tuhaf davranır; bu yüzden df -h çıktısına her zaman bakın. Sistem RAM'i tükendiğinde ise çekirdek, işlemleri öldürebilir ve bu, GPU işiniz sanki kendiliğinden çökmüş gibi görünür; free -h ve dmesg içindeki "Out of memory" kayıtları bunu gösterir. Büyük bir modelin yüklenmesi sırasında geçici olarak yüksek sistem belleği gerekebileceğini unutmayın. Bu durumda RAM'i artırmak ya da yükleme ayarlarını düşürmek, ekran kartını değiştirmekten daha etkilidir.
Sorunu kendiniz çözemediğinizde, destek ekibinin sorunu hızla anlayabilmesi için doğru bilgi gerekir. Aşağıdaki komutlar tek bir dosyada gereken her şeyi toplar:
{
date
uname -a
lspci -nn | grep -i -E "nvidia|vga|3d"
nvidia-smi
nvidia-smi -q
dkms status
sudo dmesg -T | grep -i -E "nvrm|xid|nvidia" | tail -100
sudo journalctl -b -p err --no-pager | tail -100
} > ~/gpu-rapor.txt 2>&1
Oluşan gpu-rapor.txt dosyasını talebinize ekleyin. Ayrıca sorunun ne zaman başladığını, öncesinde ne yaptığınızı (güncelleme, yeni yazılım, yeniden başlatma) ve hangi işin çalıştığını yazın. Bu bilgiler, yarım saatlik bir yazışmayı tek mesaja indirir. Sunucuya SSH ile erişemiyorsanız IPMI/KVM konsolundan bağlanıp aynı komutları orada çalıştırabilirsiniz.
nvidia-smi ile kartı doğrulamayı alışkanlık haline getirin.tmux içinde ya da servis olarak çalıştırın.Sorun çözülmedi mi? Uzman desteğe ulaşın
GPU sürücüsü, CUDA ve işletim sistemi konularında 7/24 ulaşabileceğiniz destek ekibine çıktılarınızla birlikte yazın.
Destek ekibiyle iletişime geçinnvidia-smi 'couldn't communicate with the NVIDIA driver' hatası neden çıkar?
Çoğunlukla çekirdek güncellemesinden sonra NVIDIA modülünün yeniden derlenmemesinden ya da Secure Boot'un imzasız modülü engellemesinden kaynaklanır. dkms status ve lsmod çıktısına bakıp modülü yeniden derlemek genellikle sorunu çözer.
nvidia-smi 'No devices were found' derse ne yapmalıyım?
Önce lspci | grep -i nvidia komutuyla kartın PCIe veriyolunda görünüp görünmediğine bakın. Kart hiç listelenmiyorsa sorun yazılımda değil donanım ya da güç tarafındadır; destek talebi açıp çıktıyı ekleyin.
Xid 79 hatası ne anlama gelir?
Xid 79 genellikle kartın veriyolundan düştüğünü, yani sistemin kartla iletişimi kaybettiğini gösterir. Güç, ısı ya da PCIe bağlantısı gibi donanım nedenleri olabilir; bu hatayı görürseniz dmesg çıktısıyla birlikte destek talebi açın.
GPU sıcaklığı kaç dereceye kadar normaldir?
Tam yükte sıcaklığın yüksek olması normaldir ama kart ısıl kısıtlamaya girerse performans düşer. nvidia-smi -q -d PERFORMANCE çıktısındaki kısıtlama nedenlerine bakın; sürekli sıcaklık kaynaklı kısıtlama görüyorsanız destek ekibine bildirin.
Docker'da 'could not select device driver' hatası nasıl çözülür?
NVIDIA Container Toolkit kurulu ve Docker'a tanıtılmış olmalıdır. nvidia-ctk runtime configure komutuyla Docker çalışma zamanını ayarlayıp Docker'ı yeniden başlatın, ardından docker run --gpus all ile test edin.
VRAM neden dolu görünüyor ama hiçbir şey çalışmıyor?
Çoğunlukla arka planda kalmış bir süreç belleği tutuyordur. nvidia-smi çıktısının alt bölümündeki süreç listesine ya da compute-apps sorgusuna bakın ve gereksiz süreci sonlandırın.
Çekirdek güncellemesi sürücüyü bozmasın diye ne yapabilirim?
Çalışan sürücü ve çekirdek paketlerini apt-mark hold ile sabitleyebilir, güncellemeyi bakım penceresinde bilerek yapabilirsiniz. Otomatik güncellemelerde çekirdek paketlerini hariç tutmak da yaygın bir yöntemdir.