W procesory, a także w karty sieciowe, są wbudowane sprzętowe rozwiązania, które zwiększają wydajność działania maszyn wirtualnych. Ich zadaniem jest zmniejszenie narzutu wirtualizacji, co jest realizowane poprzez sprzętowe wykonywanie niektórych zadań realizowanych dotychczas programowo przez hypervisor.

Najistotniejsze rozwiązania sprzętowego wsparcia wirtualizacji są wbudowane w procesory. AMD-V i Intel VT. Te dwie technologie wspierające wirtualizację serwerów są do siebie bardzo podobne. Dzięki nim procesor x86 może przejmować zadania wykonywane dotychczas programowo przez hypervisor lub monitor maszyn wirtualnych, usprawniając, m.in. tłumaczenie instrukcji oraz adresów pamięci.

Intel VT

Pod tą nazwą kryje się zbiór kilku technologii wbudowanych w układy Intela. Jedną z nich jest VMX root. Procesory wykonują instrukcje z różnym poziomem uprzywilejowania. Najwyższy poziom (tzw. ring 0) jest przyznawany systemowi operacyjnemu. Daje on bezpośredni dostęp do sprzętu. Aby uniknąć konfliktów między wirtualnymi maszynami, hypervisor przechwytuje wszystkie instrukcje w ringu 0 i obniża ich priorytet do ringu 1. Przeprowadzenie tej operacji wiąże się z ciągłymi obliczeniami. Procesory z technologią Intel VT mają dodatkowy poziom uprzywilejowania VMX root, z którego korzysta hypervisor. Dzięki temu systemy operacyjne w wirtualnych maszynach mogą pracować w ringu 0, co pozwala im bezpośrednio odwoływać się do procesora.

Duże znaczenie ma również VT Virtual Processor ID. Dzięki temu identyfikatorowi procesor potrafi rozróżnić, do której maszyny wirtualnej należą dane, i może całkowicie przejąć operacje translacji adresów pamięci fizycznej na pamięć wirtualną. Każde zadanie uruchamiane w systemie operacyjnym ma własne tabele stron przechowujące mapowania pamięci wirtualnej na pamięć fizyczną oraz odpowiedni identyfikator, który łączy te tabele z zadaniami. To pozwala przechowywać w TLB (typ bufora w procesorze) wpisy różnych zadań. Bez tego identyfikatora zawartość bufora TLB musiałaby być ponownie zapisywana nowymi mapowaniami podczas każdego przełączania między zadaniami. Niestety system operacyjny działający w wirtualnej maszynie nie wie o działaniu pozostałych systemów i przydziela zadaniom tylko ich identyfikator. To z kolei powoduje, że podczas przełączania między wirtualnymi maszynami bufor TLB musi być zapełniany nowymi danymi. To właśnie ten problem rozwiązuje VT Virtual Processor ID.

Kolejnym rozwiązaniem sprzętowym jest Intel VT FlexPriority, które odpowiada za szybszą obsługę przerwań w przypadku 32-bitowych maszyn wirtualnych. Dzięki temu hypervisor nie musi przechwytywać prób dostępu do Task Priority Register przez wirtualne maszyny. Pozwala także na efektywniejsze wykorzystanie technologii Symmetric Multiprocessing.

Intel VT Extended Page Tables optymalizuje zaś działanie pamięci wirtualnej, umożliwiając gościnnemu systemowi operacyjnemu modyfikowanie jego tablic stron pamięci. Redukuje to konieczność korzystania z Shadow Page Tables, przekładając się na zmniejszenie wykorzystania pamięci.

AMD-V

To również jest zbiór rozszerzeń, wbudowanych w procesory AMD. Wykonuje kilka zadań należących tradycyjnie do hypervisora. Rozszerzenie Rapid Virtualization Indexing umożliwia sprzętowe zarządzanie pamięcią maszyny wirtualnej – przechowuje tablice stron i tłumaczy adresy pamięci wirtualnej na adresy pamięci fizycznej. RVI zagnieżdża tabele stron wszystkich wirtualnych maszyn w tabeli stron hosta. To pozwala przenieść tabelę stron hosta – wraz z zagnieżdżonymi tabelami wirtualnych maszyn – do bufora TLB (Translation Lookaside Buffer) w procesorze, co z kolei umożliwia sprzętową translację adresów.

Inne rozszerzenie w AMD-V – Device Exclusion Vector – poprawia bezpieczeństwo. Kontroluje dostęp do pamięci zarezerwowanej dla maszyn wirtualnych. AMD-V wprowadza też kilka nowych, dodatkowych rozszerzeń: VMRUN, VMEXIT, VMLOAD, VMSAVE i VMCALL.

Operacje wejścia/wyjścia w serwerach wirtualnych

Urządzenia podłączone do serwerów są udostępniane maszynom wirtualnym w sposób współdzielony, co może spowalniać działanie aplikacji wymagających wysokiej liczby operacji IOPS. Zaradzić temu problemowi mogą technologie Intel VT-d oraz AMD IOMMU (Input Output Memory Management Unit). Umożliwiają one bezpośrednie przypisanie urządzeń do maszyn wirtualnych.

Hypervisor kontroluje bezpośrednie przypisanie urządzeń do partycji. Dzięki temu, zamiast uruchamiać go dla wszystkich lub większości żądań I/O dla partycji, jest on wywoływany tylko, gdy oprogramowanie gościa próbuje uzyskać dostęp do chronionych zasobów. Takie zasoby to, np. konfiguracja I/O czy zarządzanie przerwaniami. Aby wspierać bezpośrednie przypisywanie urządzeń, wirtualizator wymusza izolację żądań DMA. Przestrzeń adresowa gościa (Guest Physical Address) może nie odpowiadać rzeczywistej przestrzeni adresowej hosta (Host Physical Address). Wtedy odpowiedni układ przepisujący DMA (DMA remapping) dokonuje konwersji. Dzięki przemapowaniu dane mogą być transferowane do właściwego bufora bez konieczności wykorzystania mechanizmów emulacji programowej.

Karty sieciowe

W kartach sieciowych również znajdziemy technologie i rozszerzenia stworzone z myślą o przyspieszaniu działania środowisk wirtualnych. Wydajność karty sieciowej przekłada się bowiem bezpośrednio na pracę większości dzisiejszych aplikacji. W przypadku rozwiązań Intela możliwości te kryją się pod oznaczeniem Intel VT-c, obejmując dwa mechanizmy: Virtual Machine Device Queues (VMDQ) oraz PCI-SIG Single Root I/O Virtualization (SR-IOV). VMDQ realizuje takie operacje, jak sortowanie i routing z wirtualnego przełącznika do karty sieciowej. W połączeniu z takimi rozwiązaniami jak VMware NetQueue czy Microsoft Virtual Machine Queues, umożliwia to równoważenie przepustowości łącza pomiędzy wieloma kolejkami sprzętowymi kart sieciowych. Z kolei SR-IOV służy do podziału pojedynczego portu karty sieciowej na wirtualne porty. Administrator może wykorzystać te porty do stworzenia wielu izolowanych połączeń do maszyn wirtualnych.

Podziel się na:
  • Facebook
  • Google Bookmarks
  • LinkedIn