Bu yazı ilk olarak DELL Windows Mühendislik Ekibi'nden Abhijit Khande ve Vineeth V Acharya tarafından yazılmıştır.
Yorumlarınızı bekliyoruz! Bir konu önermek veya başka yorumlar yapmak için WinServerBlogs@dell.com ile iletişime geçin.
Microsoft® Windows Server® 2012 Beta işletim sistemi ile Microsoft, ağ alanındaki bir dizi özellik için destek sunmuştur. Böyle önemli ve ilginç bir özellik
Tek Köklü G/Ç Sanallaştırması (SR-IOV), sanal makinelerin tek bir PCI-e aygıtını paylaşmasına olanak tanır. Bu gönderi, Windows Server 2012 Beta'daki SR-IOV'ye ve ağ G/Ç sırasında sanallaştırılmış bir ortamda CPU kullanımını nasıl büyük ölçüde azalttığına dair temel bir genel bakış sağlar.
SR-IOV arabirimi, PCI Express (PCIe) belirtiminin bir uzantısıdır. SR-IOV, ağ bağdaştırıcısı gibi tek bir PCIe aygıtının PCI veriyolunda birden çok hafif donanım yüzeyi sağlamasına ve çeşitli örnekler arasında kaynaklarına ayrı erişim sağlamasına olanak tanır. (Olağan) fiziksel fonksiyona (PF) ek olarak birden fazla sanal fonksiyonun (VF) kullanılmasıyla elde edilir. Donanıma bağımlı olduğundan, hem PCIe aygıtının hem de platformun bu özelliği desteklemesi gerekir.
Geleneksel olarak, sanal makineyi hedefleyen bir paket, ana bilgisayar işletim sisteminde bulunan fiziksel ağ bağdaştırıcısı (Fiziksel İşlev kullanılarak) tarafından alınır. Bu paket NDIS (NIC'ler için Ağ Sürücüsü Arayüzü Spesifikasyonu) sürücü modülü tarafından işlenir. Paket daha sonra, Şekil 1'de gösterildiği gibi, paketi işleyen (yönlendirme, VLAN filtreleme gibi) ve paketi VMBus aracılığıyla hedeflenen VM'ye ileten Hyper-V anahtarına sağlanır. VM'nin bir paket göndermesi gerektiğinde ters yol izlenir.
SR-IOV ile VM, Şekil 1'de gösterildiği gibi geleneksel yolu tamamen atlayarak paketleri doğrudan fiziksel ağ bağdaştırıcısına göndermek ve almak için bir Sanal İşlev (VF) kullanabilir. Bu yalnızca ağ G/Ç'sini artırmakla kalmaz, aynı zamanda ana makinenin CPU'sundaki ek yükü de azaltır.
Şekil 1: SR-IOV olan ve olmayan veri yolu
Live Migration ve SR-IOV
Windows Server 2012 Beta sürümünde Live Migration, bir VM tarafından kullanılan SR-IOV ile gerçekleştirilebilir. Kaynak ve hedef sistemler SR-IOV yi destekliyorsa ve hedefte kullanılabilir bir VF varsa VM, sanal işlevi kullanır. Aksi takdirde, VM geleneksel yola (VM-Bus) geri döner.
Her SR-IOV özellikli ağ bağdaştırıcısı, "Get-NetAdapterSriov" PowerShell komutu çalıştırılarak elde edilebilen sabit sayıda Sanal İşlev sunar.
Performans Analizi
SR-IOV ile ve SR-IOV olmadan performansı karşılaştırmak için laboratuvarımızda birkaç test gerçekleştirdik. Test ortamı, bir test sunucusu (testlerin yürütüldüğü) ve bir dosya sunucusundan oluşur. Test sunucusu, Intel® X520 10 GB Ethernet adaptörü ve Windows Server 2012 Beta işletim sistemine sahip bir Dell PowerEdge™ R710 II'dir. Dosya sunucusu birden fazla SMB paylaşımına ev sahipliği yapar ve Dell PowerConnect™ 8024 anahtarı aracılığıyla 10 GB ağ kullanılarak test sunucusuna bağlanır.
Performans verilerini, ağ veri aktarımında yer alan farklı sürücü modülleri tarafından planlanan DPC'ler (Ertelenmiş Prosedür Çağrısı) tarafından kullanılan CPU cinsinden yakaladık. Bu veriler, aşağıdaki senaryolarda açıklandığı gibi hem konuk hem de ana bilgisayar işletim sisteminde yakalanmıştır. Test sunucusu, Konuk İşletim Sistemi olarak Windows Server 2012 Beta'ya sahip 4 özdeş sanal makineye sahiptir. 4 VM, bir sanal anahtar aracılığıyla 10 GB ağa bağlanır. Bu test yapılandırması Şekil 2'de gösterilmiştir.
Şekil 2: Test yapılandırması
Performans verilerini göstermeden önce, bu test için kullanılan çok kritik bir parametreyi tanıtmak önemlidir. İçinde
Microsoft Windows İşletim sistemi, yüksek öncelikli görevlere izin veren Ertelenmiş Prosedür Çağrısı (DPC) adlı bir sistem mekanizması vardır (örn.
Kesme işleyicisi) gerekli ancak daha düşük öncelikli görevleri daha sonra yürütmek üzere ertelemek için. Bu, aygıt sürücülerinin ve diğer düşük düzeyli olay tüketicilerinin işlemlerinin yüksek öncelikli kısmını hızlı bir şekilde gerçekleştirmelerine ve kritik olmayan ek işlemleri daha düşük bir öncelikte yürütülmek üzere zamanlamalarına olanak tanır.
Senaryo 1 – Sanal makinede (Konuk İşletim Sistemi) performans sonuçları:
Bu senaryo için dört sanal makine (VM) kullandık (VM 1'den VM 4'e). VM 1 ve VM 2'de SR-IOV yi etkinleştirdik (VM ayarlarında "SR-IOV'yi Etkinleştir" seçeneğini işaretleyerek) ve VM 3 ve VM 4'te SR-IOV'yi devre dışı bıraktık (aynı seçeneğin işaretini kaldırarak). Bu nedenle, Şekil 2'de gösterildiği gibi, VM 1 ve VM 2 Sanal İşlevi (Intel adaptörü tarafından ortaya çıkarılan) kullanırken, VM 3 ve VM 4 herhangi bir ağ iletişimi için yapay yolu (VMBus) kullanacaktır.
Tek bir SMB paylaşımından VM'lere veri (20 GB boyutunda) kopyalamaya başladık ve Konuk İşletim Sisteminde sistem CPU Kullanımı günlüklerini yakaladık.
Şekil 3: Sanal Makinede
DPC CPU kullanımı Şekil 3'te SR-IOV, VM-1 ve VM-2'deki ortalama DPC CPU kullanımını ifade eder ve SR-IOV olmayan, VM-3 ve VM-4'teki ortalama DPC CPU kullanımını ifade eder. Grafiğe bakarsak, iki durum arasında CPU kullanımında çok fazla fark olmadığını görüyoruz, ancak ana makinedeki CPU Kullanımını henüz hesaba katmadık.
Senaryo 2 – Ana makinede (ana bilgisayar işletim sistemi) performans sonucu:
Bu senaryo için bir sanal makine kullandık. SMB paylaşımından VM'ye veri (20 GB boyutunda) kopyalamaya başladık ve ağ G/Ç'sinde kullanılan NDIS ve VMBUS olmak üzere 2 modülün DPC CPU Kullanımını yakaladık.
Şekil 4: Ana Makinede
DPC CPU kullanımı Sonuçlar Şekil 4 te gösterilmiştir. Beklendiği gibi, iki durum (SR-IOV ve SR-IOV Olmayan) arasında CPU kullanımında büyük bir fark vardır. CPU kullanımı, SR-IOV durumunda 102 mertebesindedir ve SR-IOV olmayan durumda 103 - 104 mertebesindedir. Bunun temel nedeni, SR-IOV durumunda, sanal makinenin sanal işlev aracılığıyla fiziksel NIC ile doğrudan iletişim kurmasıdır. Bu nedenle, ana bilgisayarın CPU döngüleri herhangi bir ağ paketini işlemek için kullanılmaz. SR-IOV olmayan durumda (Şekil 1'de gösterildiği gibi), Konuk İşletim Sistemi, VM Veri Yolu aracılığıyla Ana Bilgisayar İşletim Sistemi ile iletişim kurar ve bu da paketleri işler ve fiziksel NIC aracılığıyla gönderir. Bu nedenle, VM Bus ve NDIS gibi modüller yaygın olarak kullanılmaktadır.
Toplam CPU kullanımını hesaplarken, ağ G/Ç sırasında CPU kullanımının SR-IOV kullanıldığında çok daha az olduğunu gözlemliyoruz. Bu nedenle, SR-IOV etkinleştirilmiş Windows Server 2012 Beta, müşterilerin ağ G/Ç sırasında CPU yükünü azaltmasına ve böylece genel sistem performansını iyileştirmesine yardımcı olacaktır.
PowerShell kullanarak SR-IOV yi yapılandırma
SR-IOV'nin etkinleştirildiği yeni bir sanal anahtar oluşturmak ve sanal anahtarı mevcut bir sanal makinenin sanal ağ bağdaştırıcısına eklemek için aşağıdaki PowerShell komutlarını kullanabilirsiniz.
NOT: Aşağıdaki komutları çalıştırmadan önce, BIOS'ta aşağıdaki seçenekler etkinleştirilmelidir
- Sanallaştırma Teknolojisi
- SR-IOV Genel Etkinleştirme
(Tek bir ağ bağdaştırıcısının (Intel X520) bağlı olduğu varsayılarak)
$NetAdap = Get-NetAdapter | Where-Object { $_. status -eq "up"}
(-EnableIov anahtarı, sanal anahtarda SR-IOV'yi etkinleştirmek için kullanılır)
New-VMSwitch -name "SRIOV switch" -NetAdapterName $NetAdap.Name -AllowManagementOS $True -notes "SRIOV switch on x520" -EnableIov $True
$VMSw = Get-VMSwitch
VM-1'e yeni bir ağ bağdaştırıcısı ekleme ve bunu Sanal Anahtara bağlama.
Add-VMNetworkAdapter -SwitchName $VMSw.Name -VMName VM-1 -Name "SRIOV Adapter"
NOT:Bu komutun çalışması için VM'nin kapatılması gerekir)
Aşağıdaki komutları kullanarak zaten var olan bir VM ağ bağdaştırıcısını da kullanabilirsiniz)
$VMNet = Get-VMNetworkAdapter -VMName VM-1
Connect-VMNetworkAdapter -VMName VM-1 -SwitchName $VMSw.Name -Name $VMNet.Name
Her VM ağ bağdaştırıcısının, sırasıyla SR-IOV ve VMQ'ya karşılık gelen IovWeight ve VmqWeight olmak üzere iki özelliği vardır. Bu ağırlıkların ayarlanması özellikleri etkinleştirir veya devre dışı bırakır.