Sanallaştırma & Bulut

    vGPU ile GPU Paylaşımı

    Bir GPU'yu birden fazla sanal makineye bölme yöntemleri ve hangisinin ne zaman uygun olduğu.

    10 dk okuma Güncellendi: 25 Ağustos 2026

    Elinizde pahalı bir ekran kartı var ve tek bir sanal makine onu kullanıyor. O makine günün büyük kısmında boşta duruyor, ama karta ikinci bir iş atayamıyorsunuz. Bu, GPU sanallaştırmasının çözmeye çalıştığı temel israftır. vGPU ile GPU paylaşımı, bir fiziksel kartı birden fazla sanal makineye ya da konteynere bölerek bu kaynağın gerçekten dolu çalışmasını sağlar — ama "bölmek" tek bir teknoloji değil, birbirinden çok farklı en az üç yöntemin ortak adıdır.

    Bu yazıda GPU'yu paylaştırmanın dört yolunu — tam kart aktarımı (passthrough), aracılı vGPU, donanımsal MIG bölümlemesi ve konteyner düzeyinde zaman paylaşımı — birbirinden ayıracağım. Her birinin izolasyon seviyesini, kurulum karmaşıklığını, lisans gereksinimini ve hangi senaryoya oturduğunu tek tek göreceğiz. Sonunda "bu kartı kaça bölebilirim ve hangi yöntemle" sorusunu doğru cevaplayabileceksiniz.

    Neden Bir GPU'yu Bölmek İstersiniz#

    Üç temel gerekçe vardır ve üçü de ekonomiktir. Birincisi doluluk: bir GPU çoğu iş yükünde sürekli %100 kullanılmaz. Bir geliştiricinin makinesindeki kart, kod yazarken tamamen boştadır ve yalnızca eğitim başlattığında çalışır. İkinci ve üçüncü geliştiriciye aynı kartı vermek, kartın gerçekten çalıştığı zaman oranını üçe katlar.

    İkincisi iş boyutu uyumsuzluğu. Modern bir veri merkezi kartının belleği ve hesap gücü, küçük bir çıkarım modeli için fazlasıyla büyüktür. Tek bir küçük modeli 80 GB'lık bir karta yerleştirmek, kartın onda dokuzunu boşa harcamak demektir. Kartı beş parçaya bölüp beş ayrı servisi barındırmak, birim maliyeti beşte bire indirir.

    Üçüncüsü çok kullanıcılı grafik ortamları. CAD, video kurgu, mimari görselleştirme gibi işleri uzaktan yapan bir ekibe kişi başına ayrı fiziksel iş istasyonu vermek yerine, tek bir sunucudaki kartı bölerek herkese hızlandırmalı bir sanal masaüstü sunabilirsiniz. GPU'nun hangi iş yüklerinde gerçekten gerekli olduğunu GPU sunucu ne işe yarar yazısında ayrıntılandırdım.

    Dört Paylaşım Yöntemi ve Farkları#

    Bu tabloyu yazının geri kalanının haritası olarak kullanın:

    YöntemBölme seviyesiİzolasyonLisansTipik kullanım
    Passthrough (VFIO)Bölme yok, tam kart tek VM'eÇok güçlüGerekmezTek yoğun iş yükü, en yüksek performans
    vGPU (aracılı)Yazılımsal, sabit VRAM dilimiGüçlüÜretici lisansı gerekirSanal masaüstü, çok kullanıcı
    MIGDonanımsal bölümlemeÇok güçlüKart desteği gerekirÇoklu çıkarım, öngörülebilir performans
    Konteyner zaman paylaşımıBölme yok, sıra paylaşımıZayıfGerekmezGeliştirme, güvenilen iş yükleri

    Dikkat edilecek asıl ayrım şudur: passthrough ve MIG donanım seviyesinde ayırır, vGPU aracılı bir yazılım katmanı kullanır, konteyner zaman paylaşımı ise hiç ayırmaz. Sonuncusunda iki süreç aynı belleği paylaşır; biri VRAM'i doldurursa diğeri hata alır. Güvenilmeyen kullanıcıları aynı karta koyacaksanız, zaman paylaşımı yeterli bir sınır değildir — izolasyon konusundaki genel çerçeveyi sanal makine güvenliği ve izolasyon yazısında ele aldım.

    GPU Passthrough Nasıl Çalışır#

    Passthrough, kartı hipervizörden alıp doğrudan bir sanal makineye vermektir. Konuk sistem kartı fiziksel olarak takılıymış gibi görür, üreticinin normal sürücüsünü kurar ve tam performans elde eder. Karşılığında kart artık başka hiçbir makine tarafından kullanılamaz.

    Çalışması için IOMMU (Intel tarafında VT-d, AMD tarafında AMD-Vi) donanım özelliği gerekir; bu, cihazın belleğe erişimini yalıtan birimdir. Önce BIOS'ta sanallaştırma ve IOMMU desteğini açın, sonra çekirdeğe parametreyi verin:

    # IOMMU çekirdek tarafında etkin mi?
    sudo dmesg | grep -i -e DMAR -e IOMMU | head
    
    # Değilse GRUB'a ekleyin (Intel için intel_iommu=on, AMD için amd_iommu=on)
    # /etc/default/grub içindeki satır:
    #   GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
    sudo update-grub && sudo reboot
    

    Yeniden başlattıktan sonra kartın hangi IOMMU grubunda olduğunu kontrol etmeniz gerekir. Bu adım kritiktir: bir IOMMU grubundaki tüm cihazlar birlikte aktarılmak zorundadır. Kartınız, aktaramayacağınız bir denetleyiciyle aynı gruptaysa passthrough yapamazsınız.

    # IOMMU gruplarını ve içindeki cihazları listele
    for g in /sys/kernel/iommu_groups/*; do
      echo "Grup ${g##*/}:"
      for d in "$g"/devices/*; do
        echo -n "  "; lspci -nns "${d##*/}"
      done
    done
    
    # Kartın PCI adresini ve satıcı:cihaz kimliğini not alın
    lspci -nnk | grep -i -A3 -E "vga|3d controller"
    

    Son adım, kartı ana makinenin sürücüsünden koparıp vfio-pci sürücüsüne bağlamaktır. Bunu yapmazsanız hipervizörün kendi sürücüsü kartı tutar ve sanal makine kartı alamaz:

    # Örnek: 10de:2204 kimlikli kartı vfio-pci'ye bağla
    echo "options vfio-pci ids=10de:2204" | sudo tee /etc/modprobe.d/vfio.conf
    # Ana makine sürücüsünü kara listeye al
    echo -e "blacklist nouveau\nblacklist nvidia" | sudo tee /etc/modprobe.d/blacklist-gpu.conf
    sudo update-initramfs -u && sudo reboot
    
    # Doğrulama: "Kernel driver in use: vfio-pci" görmelisiniz
    lspci -nnk -s 01:00.0
    

    Passthrough'un iki önemli kısıtı vardır. Birincisi, sanal makine artık canlı göç edemez (live migration); kart fiziksel olarak o makineye bağlıdır. İkincisi, kartın ses alt cihazı gibi aynı gruptaki tüm fonksiyonların birlikte aktarılması gerekir.

    vGPU: Aracılı Bölme#

    vGPU, hipervizöre kurulan özel bir ana makine sürücüsünün kartı yazılımsal olarak bölmesidir. Her sanal makineye bir profil atanır ve bu profil, o makinenin ne kadar VRAM alacağını sabitler. Hesap gücü ise zaman dilimleriyle paylaştırılır: kart, aktif makineler arasında hızla sıra değiştirir.

    Ayrımı net tutmak gerekirse: bellek katı biçimde bölünür, hesap gücü paylaşılır. 24 GB'lık bir kartı 4 GB'lık altı profile bölerseniz, her makine kesin olarak 4 GB'a sahiptir ve komşusunun belleğini asla göremez; ama altısı da aynı anda hesap yaparsa her biri kartın altıda birine yakın bir hızda çalışır.

    Profiller genelde kullanım amacına göre sınıflandırılır: sanal masaüstü için optimize edilmiş profiller, iş istasyonu grafiği için sertifikalı profiller ve hesaplama ağırlıklı profiller. Bir kart üzerinde aynı anda yalnızca tek tip profil çalıştırabilirsiniz; yani 4 GB'lık profillerle 8 GB'lık profilleri aynı fiziksel kartta karıştıramazsınız. Kapasite planlamasını buna göre yapın.

    vGPU'nun en büyük avantajı, passthrough'un kaybettiği yeteneği geri kazandırmasıdır: desteklenen hipervizör ve lisans seviyelerinde sanal makineler canlı göç edebilir. Bakım gününde makineleri başka bir ana makineye taşıyabilmek, sanal masaüstü ortamlarında pazarlık edilmez bir özelliktir.

    Kurulum üç parçalıdır ve üçü de sürüm uyumlu olmalıdır: ana makine sürücüsü, konuk sürücüsü ve lisans sunucusu. Ana makinede kurulum sonrası doğrulama şöyledir:

    # vGPU ana makine sürücüsü kurulu mu, hangi profiller destekleniyor?
    nvidia-smi vgpu -q | head -30
    # Aktif vGPU örneklerini ve hangi VM'e ait olduklarını gör
    nvidia-smi vgpu
    

    MIG: Donanımsal Bölümleme#

    MIG (Multi-Instance GPU), desteklenen veri merkezi kartlarında kartı fiziksel olarak bölen bir özelliktir. vGPU'dan farkı temeldir: yalnızca belleği değil, hesap birimlerini, önbelleği ve bellek denetleyicilerini de ayırır. Sonuç, her bölümün kendi kaynaklarına sahip, komşusundan performans olarak da etkilenmeyen bağımsız bir GPU gibi davranmasıdır.

    Bu, öngörülebilir performans demektir ve çıkarım servislerinde çok değerlidir. Zaman paylaşımlı bir bölmede komşunuz ağır bir iş başlattığında gecikmeniz artar; MIG'de artmaz, çünkü onun hesap birimleri sizinkinden ayrıdır.

    MIG'i etkinleştirmek ve bölmek nvidia-smi üzerinden yapılır:

    # MIG modunu aç (kart üzerinde çalışan iş olmamalı, sonrasında reset gerekebilir)
    sudo nvidia-smi -i 0 -mig 1
    
    # Desteklenen GPU örnek profillerini listele
    sudo nvidia-smi mig -lgip
    
    # Seçilen profilden örnek oluştur (-C hesaplama örneğini de birlikte kurar)
    sudo nvidia-smi mig -cgi 9,9,19 -C
    
    # Oluşan örnekleri gör
    sudo nvidia-smi mig -lgi
    nvidia-smi -L
    
    # Bölümleri kaldır
    sudo nvidia-smi mig -dci && sudo nvidia-smi mig -dgi
    

    Bölme sonrası her MIG örneği kendi UUID'siyle görünür ve konteynerlere ya da sanal makinelere ayrı ayrı atanabilir. Konteyner tarafında hedefi UUID ile belirtirsiniz:

    # Belirli bir MIG örneğini konteynere ver
    sudo docker run --rm --gpus '"device=MIG-<uuid>"' ubuntu nvidia-smi
    

    MIG'in kısıtları da net: yalnızca belirli veri merkezi kartlarında bulunur, bölme profilleri sabittir (istediğiniz herhangi bir oranda kesemezsiniz) ve grafik iş yükleri için tasarlanmamıştır — hesaplama odaklıdır. Sanal masaüstü dağıtacaksanız MIG değil vGPU tarafına bakmanız gerekir.

    Lisans, Sürücü ve Maliyet Tarafı#

    Bu bölüm, projelerin bütçesini en çok şaşırtan yerdir. Özetle:

    1. Passthrough lisans gerektirmez. Kartı olduğu gibi VM'e verirsiniz, konuk sistemde normal sürücü çalışır. Ek maliyet yoktur.
    2. vGPU ücretli bir yazılım lisansıdır. Kartın bedeli ayrı, vGPU yazılımının kullanıcı ya da soket başına yıllık aboneliği ayrıdır. Lisans sunucusu ya da bulut tabanlı lisanslama kurmanız ve konuk sistemlerin ona ulaşabilmesi gerekir. Lisans doğrulanamazsa performans kısıtlanır ya da özellik devre dışı kalır.
    3. MIG için ek lisans yoktur ama kart desteği şarttır; tüketici kartlarında ve eski nesil veri merkezi kartlarında bulunmaz.
    4. Tüketici kartlarıyla sanallaştırma sınırlıdır. Üreticilerin sürücü lisans şartları, tüketici kartlarının veri merkezinde bölünerek kullanılmasını kısıtlar. Ticari bir hizmet kuruyorsanız bu, teknik değil hukuki bir engeldir ve önceden netleştirilmesi gerekir.

    Maliyet karşılaştırması yaparken vGPU lisansını kart bedeline ekleyip toplam üzerinden kullanıcı başına maliyeti çıkarın. Küçük ekiplerde lisans bedeli, ikinci bir kart almanın maliyetine yaklaşabilir; bu durumda iki kartı passthrough ile iki makineye vermek daha basit ve ucuz olur. Karta güç ve soğutma tarafında yer açmayı da unutmayın; hesabı sunucu güç tüketimi ve maliyeti yazısındaki yöntemle yapabilirsiniz.

    Sık Karşılaşılan Sorunlar#

    IOMMU grubu kirli. Passthrough denemelerinin en sık takıldığı yer budur: kart, aktaramayacağınız başka bir cihazla aynı grupta çıkar. Anakart üzerinde kartı farklı bir PCIe yuvasına taşımak bazen grubu ayırır; kalıcı çözüm, IOMMU gruplarını düzgün ayıran bir platform kullanmaktır.

    Ana makine sürücüsü kartı bırakmıyor. lspci -nnk çıktısında hâlâ ana makinenin grafik sürücüsü görünüyorsa, kara listeye alma ya da initramfs güncellemesi eksik kalmıştır. vfio-pci bağlanmadan sanal makine kartı göremez.

    vGPU lisansı doğrulanamıyor. Konuk sistem lisans sunucusuna ulaşamadığında performans düşer ya da özellikler kapanır. Genelde sebep ağ erişimi ya da isim çözümlemesidir; konuk makineden lisans sunucusuna erişimi ayrı olarak test edin.

    MIG açılmıyor ya da değişiklik uygulanmıyor. MIG modunu değiştirmek için kart üzerinde çalışan hiçbir iş olmamalıdır. Süreçler devam ediyorsa komut sessizce başarısız olur; nvidia-smi ile kartı kullanan süreçleri kontrol edin ve gerekirse kartı sıfırlayın.

    Konteynerde kart görünmüyor. --gpus all parametresi verilmediğinde ya da konteyner çalışma zamanı eklentisi kurulu değilse konteyner içinden kart görünmez. Önce ana makinede nvidia-smi, sonra konteynerde aynı komutla doğrulayın. Sürüm uyumsuzluğu da yaygın bir sebeptir; imaj ile ana makine sürücüsü kuşaklarının uyumlu olması gerekir.

    Sanal makine canlı göç edemiyor. Bu, passthrough'un beklenen davranışıdır, hata değil. Canlı göç ihtiyacınız varsa yöntem olarak vGPU seçmeniz gerekir; bunu mimariye baştan yazın, sonradan geçiş yapmak makineleri yeniden kurmayı gerektirir.

    Sıkça Sorulan Sorular#

    vGPU ile passthrough arasındaki fark nedir#

    Passthrough, fiziksel kartı bütün olarak tek bir sanal makineye verir; performans kaybı yok denecek kadar azdır, lisans gerekmez ama kart başka hiçbir makine tarafından kullanılamaz. vGPU ise kartı yazılımsal olarak bölüp birden fazla makineye dağıtır: her makine sabit bir VRAM dilimi alır, hesap gücü zaman dilimleriyle paylaşılır ve üreticinin ücretli lisansı gerekir.

    Bir GPU kaç sanal makineye bölünebilir#

    Bölme sayısı yönteme ve kartın belleğine bağlıdır. vGPU'da kartın VRAM'ini seçtiğiniz profil boyutuna bölersiniz; örneğin 24 GB'lık bir kart 4 GB'lık profillerle altı makineye ayrılabilir. MIG'de bölüm sayısı kartın desteklediği sabit profillerle sınırlıdır ve genellikle yedi örneğe kadar çıkar. Passthrough'da bölme yoktur, kart tek makineye gider.

    Oyun ekran kartıyla vGPU yapılabilir mi#

    Teknik olarak bazı topluluk çözümleri bulunsa da tüketici kartlarında bu özellik üretici tarafından desteklenmez ve sürücü lisans şartları veri merkezinde bölerek kullanmayı kısıtlayabilir. Ticari bir hizmet kuruyorsanız bu yolu tercih etmeyin; kesintisiz destek ve hukuki güvenlik için sanallaştırmayı resmen destekleyen veri merkezi kartlarına yönelin.

    MIG mi vGPU mu tercih edilmeli#

    Hesaplama ve çıkarım iş yükleri için MIG genellikle daha iyidir: donanımsal ayırma sayesinde her bölümün performansı öngörülebilir kalır ve ek lisans gerektirmez. Sanal masaüstü, CAD ve grafik ağırlıklı senaryolarda ise vGPU gerekir, çünkü MIG grafik iş yükleri için tasarlanmamıştır ve vGPU canlı göç gibi işletme kolaylıkları sunar.

    GPU paylaşımı performansı ne kadar düşürür#

    Passthrough'da kayıp yok denecek kadar azdır. MIG'de her bölüm kartın kendisine ayrılan kısmı kadar performans verir ve komşusundan etkilenmez. vGPU ve konteyner zaman paylaşımında ise gerçek kayıp, aynı anda kaç makinenin çalıştığına bağlıdır: hepsi boştaysa fark hissedilmez, hepsi birden yüklendiğinde her biri kartın bölünmüş payı kadar hız görür.

    Sanal makineye GPU eklemek için hipervizörde neye ihtiyaç var#

    Öncelikle anakart ve işlemcinin IOMMU desteği (Intel VT-d ya da AMD-Vi) BIOS'ta açık olmalıdır. Ardından çekirdeğe uygun parametre verilir, kart ana makinenin grafik sürücüsünden kara listeyle koparılır ve vfio-pci sürücüsüne bağlanır. Kartın temiz bir IOMMU grubunda bulunması da şarttır; aynı gruptaki tüm cihazlar birlikte aktarılmak zorundadır.

    Kapanış#

    GPU paylaşımı, pahalı bir kaynağın boşta durmasını engelleyen doğru bir fikirdir; ama yöntemi seçmeden önce ihtiyacınızı netleştirmeniz gerekir. Aklınızda kalması gereken dört şey: tek yoğun iş yükü için passthrough en basit ve en hızlı yoldur; öngörülebilir performans isteyen çoklu çıkarım servisleri için MIG doğru araçtır; sanal masaüstü ve canlı göç ihtiyacı vGPU'yu zorunlu kılar; ve konteyner zaman paylaşımı bir izolasyon mekanizması değildir, yalnızca güvendiğiniz iş yükleri arasında kullanılır.

    Bu katmanı kendiniz kurmak yerine hazır bir ortamda başlamak isterseniz GPU VDS paketlerinde sürücüsü hazır kaynaklara doğrudan erişebilirsiniz. Kendi hipervizörünüzü kurup kartları kendiniz bölmek isterseniz dedicated sunucu ve iç içe sanallaştırmaya uygun nested sunucu seçenekleri buna imkân verir; kendi kartlarınızı barındırmak içinse colocation tarafına bakabilirsiniz.

    vGPUSanallaştırmaGPU

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.