GPU sanallaştırma nedir?
Bildiğiniz gibi sanallaştırma, ana makinede çalışan ve sanal makineler için ondan kaynak alan bir hipervizör aracılığıyla yapılır. Ayrıca GPU sanallaştırma diye bilinen çok önemli bir terim olduğunu da bilmelisiniz ve düşündüğünüz gibi olmayabilir.
GPU sanallaştırma nedir?
Bildiğiniz gibi, sanal makineler bunları kullanabilmek için vCPU, vRAM vb. donanım kaynaklarını kullanır. vGPU veya sanal GPU, sanal makinenin ana bilgisayarın fiziksel GPU’larından birine eşzamanlı erişimine izin veren bir grafik sanallaştırma çözümünden başka bir şey değildir.
GPU sanallaştırma, bir sanal makinede çalışan grafikleri veya GPGPU uygulamalarını hızlandırmak için bir GPU kullanımına olanak tanıyan bir teknolojiyi ifade eder. Bunun için de genellikle cihaz emülasyonu, uzak API vb. çeşitli teknikler kullanılır.
Farklı sanal makineler arasındaki donanım kaynakları daha iyi kullanılabileceğinden, bu durum sistemi daha verimli hale getirerek de büyük faydalar sağlayabilir. Ve sadece ana sistemle, iş yükü maksimum değilse, tüm bu kaynaklardan gerçekten yararlanılamaz. Bu zaten VPS’de gördüğümüz bir şey.
GPU sanallaştırma kullanılırken, sanal makinenin bu donanım kaynağından faydalanması için, yazılım grafik hızlandırması kullanılmadığından CPU kullanımı da azaltılabilir. Başka bir deyişle, GPU sanallaştırma ile diğer kaynaklarla yapılanın aynısını yapmak, yani fiziksel GPU’yu sanal makineler için diğer görevleri işlemek veya gerçekleştirmek için kullanabilmek mümkün olmuştur. Yani, bir donanım grafik hızlandırmamız var.
GPU sanallaştırmanın avantajları
GPU sanallaştırma, yalnızca verimliliği ve performansı artırmakla kalmaz, aynı zamanda özellikle veri merkezleri veya VPS tipi sunucular için başka avantajlara da sahiptir. Örneğin, aşağıdaki vurgulanmalıdır:
- Performans: GPU sanallaştırma, sanal makinelerin, özellikle grafiklerle ilgili her şeyin performansını iyileştirmenin yanı sıra AI, ML, GPGPU hesaplama vb. görevleri hızlandırır. Ve sadece bu da değil, yazılım hızlandırmayı kullanmak zorunda kalmayarak CPU iş yükünü azaltarak genel performans da elde edersiniz.
- Darboğazları azaltır: Daha önce de belirttiğim gibi, CPU’nun desteklemesi gereken iş yükünü azaltarak, sistemin en yüksek iş yüklerinde daha özgür hareket etmesini sağlayacaktır. Sanal makineler, daha güçlü performans için iş yükünü CPU ve GPU arasında daha iyi dağıtabilecek.
- Daha fazla zenginlik: GPU’nun özelliklerine dayanan uygulamaları kullanabilmek, örneğin oyunları, AI yazılımını, GPU işlemeyi ve hatta diğer görevleri çalıştırabilme gibi sanallaştırılmış sistemin zenginliğini artırabilir. daha yavaş CPU şifre çözme yerine GPU şifre çözme gibi GPU kullanımı.
GPU sanallaştırmada kullanılan teknikler
Daha önce de belirttiğim gibi, GPU sanallaştırma için kullanılan birkaç teknik vardır ve en önemlileri şunlardır:
- Remote API: Ekl çağrı yönlendirme için grafiksel API’ler arası iletişime izin veren bir tekniktir. Yani, grafik kullanan sanal makinede herhangi bir uygulama kullanıldığında, grafik API’sine yapılan çağrılar, ana sistemin grafik API’sı tarafından sunulmak üzere iletilir ve böylece GPU tarafından işlenebilir. Bu teknik mükemmel değildir, çünkü bu tür çağrı yönlendirme performansı tehlikeye atar ve sanal makinenin ana bilgisayar sisteminden tamamen izole edilmesini engeller. Öte yandan, OpenGL için VMGL, CUDA için rCUDA vb. gibi belirli API’ler için destek ekleyebilen üçüncü taraf yazılımlar da vardır.
- Sabit geçiş veya GPU geçişi: Bu sabit geçiş, tek bir sanal makinenin bir GPU’ya özel ve kalıcı olarak doğrudan erişmesidir. Bu teknik, yerel performansın %96 ila 100’ü arasında ve yüksek doğruluk elde ederek performansı büyük ölçüde artırır. Yani, önceki teknik tarafından elde edilen performansa göre yaklaşık olarak %86’dan büyüktür. Ancak dezavantajı, GPU’nun birkaç sanal makine tarafından paylaşılamamasıdır, her birinin ek fiziksel GPU’su olması gerekir ve bu da gerekli donanımın maliyetini artırır.
- Aracılı Geçiş: Bu teknik, GPU donanımının IOMMU aracılığıyla her sanal makine için sanal bellek aralıkları içeren bağlamlar sağlamasına olanak tanır ve hipervizör grafik komutlarını sanal makinelerden GPU’ya gönderir. Yani, GPU kaynaklarının doğrudan sanal makinelere hizmet verecek şekilde bölümlenmesi gibidir. Bu, önceki iki teknik arasında olacaktır, API çağrı yönlendirmeye ihtiyaç duymaz, ancak tüm sanal makinelerin aynı GPU’yu kullanmasına izin verir. Bu, NVIDIA vGPU, AMD MxGPU, Intel GVT-g vb. teknolojiler tarafından desteklenir.
- Cihaz Emülasyonu: GPU mimarileri çok karmaşık olduğundan ve sürekli değiştiğinden ve çoğu durumda çok gizli olduğundan, hipervizör yazılım geliştiricileri tarafından yeni nesil GPU’ları karmaşık olarak sanallaştırmak mümkün değildir. Bunu yalnızca 3dfx Voodoo2, S3 ViRGE/DX, vb. gibi daha eski ve daha basit modellerle yapmak mümkündür. Bu, sanal makinenin 3D grafik hızlandırması yoksa, bu makinelere bir grafik terminal aracılığıyla erişmek için en azından minimum bir işlevselliğe sahip olabilmesini sağlar.