Dowiesz się na czym polega tajemnica kilku równoległych systemów operacyjnych. Wprowadzimy Cię w świat wirtualnych systemów operacyjnych, poznasz metody umożliwiające ich incepcję oraz zoptymalizujesz wydajność swojej maszyny wirtualnej.
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Semihalf
Przedstawiamy firmware UEFI, dzięki któremu możliwe jest coraz śmielsze wkraczanie architektury ARM64 do świata urządzeń serwerowych, czyli królestwa władanego przez Intel. Standardy, ich założenia i realizacja zostałą przybliżona na przykładzie dodawania wsparcia dla n
Skazani na firmware. ARM Trusted Firmware. S07E02Semihalf
Czy zastanawiałeś się kiedyś, jakie funkcjonalności realizuje nowoczesne oprogramowanie układowe?
Zapraszamy na prezentację poświęconą technologii ARM Trusted Firmware, na którym opowiemy w jaki sposób nowoczesne systemy radzą sobie z kwestiami bezpieczeństwa na przykładzie ARM Trusted Firmware. Zaprezentujemy także różnice między światem zaufanym a światem normalnym, czy i jak te dwa światy są w stanie istnieć w jednym systemie oraz co je łączy.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Semihalf
Czy zastanawiałeś się kiedyś co dzieje się po włączeniu komputera lub wciśnięciu przycisku RESET?
Zanim uruchomi się Twój system operacyjny mija kilka sekund - przyjrzymy się im z bliska. Odpowiemy na pytania co to jest firmware i jakie są jego rodzaje.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
Prezentacja barcampu firmy Semihalf.
Opowiadamy jak działa system ARM CoreSight. Przedstawiamy jego komponenty oraz zasady współdziałania i konfigurowania. Pokazujemy sposób integracji systemu CoreSight z Linuxowym narzędziem Perf oraz przykłady jego użycia podczas profilowania kodu.
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
Prezentacja barcampu firmy Semihalf z 27.11.2018 r.
Jak zaglądnąć tam gdzie pozornie jest to niewykonalne? Kernel panic? Crash dump? Za pomocą narzędzi software'owych i sprzętowych można rozwiązać i takie problemy.
Zagadnienia:
Wsparcie sprzętowe procesorów do debugowania (stepping, pmu, etc.)
Wsparcie systemu operacyjnego (trap, crash dump)
Narzędzia: LLDB, KDB
Case study: (Linux, FreeBSD, macOS, Windows)
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
Prezentacja z Meetupu grupy Software Meets Hardware in Wrocław.
Na spotkaniu opisywaliśmy co dzieje się w komputerze zanim wystartuje system operacyjny, czyli tuż po włączeniu komputera lub wciśnięciu przycisku reset oraz co to jest firmware i jakie są jego rodzaje.
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Semihalf
Przedstawiamy firmware UEFI, dzięki któremu możliwe jest coraz śmielsze wkraczanie architektury ARM64 do świata urządzeń serwerowych, czyli królestwa władanego przez Intel. Standardy, ich założenia i realizacja zostałą przybliżona na przykładzie dodawania wsparcia dla n
Skazani na firmware. ARM Trusted Firmware. S07E02Semihalf
Czy zastanawiałeś się kiedyś, jakie funkcjonalności realizuje nowoczesne oprogramowanie układowe?
Zapraszamy na prezentację poświęconą technologii ARM Trusted Firmware, na którym opowiemy w jaki sposób nowoczesne systemy radzą sobie z kwestiami bezpieczeństwa na przykładzie ARM Trusted Firmware. Zaprezentujemy także różnice między światem zaufanym a światem normalnym, czy i jak te dwa światy są w stanie istnieć w jednym systemie oraz co je łączy.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Semihalf
Czy zastanawiałeś się kiedyś co dzieje się po włączeniu komputera lub wciśnięciu przycisku RESET?
Zanim uruchomi się Twój system operacyjny mija kilka sekund - przyjrzymy się im z bliska. Odpowiemy na pytania co to jest firmware i jakie są jego rodzaje.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
Prezentacja barcampu firmy Semihalf.
Opowiadamy jak działa system ARM CoreSight. Przedstawiamy jego komponenty oraz zasady współdziałania i konfigurowania. Pokazujemy sposób integracji systemu CoreSight z Linuxowym narzędziem Perf oraz przykłady jego użycia podczas profilowania kodu.
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
Prezentacja barcampu firmy Semihalf z 27.11.2018 r.
Jak zaglądnąć tam gdzie pozornie jest to niewykonalne? Kernel panic? Crash dump? Za pomocą narzędzi software'owych i sprzętowych można rozwiązać i takie problemy.
Zagadnienia:
Wsparcie sprzętowe procesorów do debugowania (stepping, pmu, etc.)
Wsparcie systemu operacyjnego (trap, crash dump)
Narzędzia: LLDB, KDB
Case study: (Linux, FreeBSD, macOS, Windows)
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
Prezentacja z Meetupu grupy Software Meets Hardware in Wrocław.
Na spotkaniu opisywaliśmy co dzieje się w komputerze zanim wystartuje system operacyjny, czyli tuż po włączeniu komputera lub wciśnięciu przycisku reset oraz co to jest firmware i jakie są jego rodzaje.
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
The document discusses the GDB debugger tool. It provides an overview of basic GDB commands like break, watch, step and next. It also covers setting breakpoints, watching variables, and using convenience variables and functions. The document discusses automating GDB using user-defined commands and functions. It describes debugging multi-threaded applications and features like reverse execution.
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
Podczas wykładu pomijamy jakość filtracji powietrza natomiast skupiamy się na metodach testowania protokołów sieciowych przy wykorzystaniu języka TTCN-3. Sprawdzamy jakie dane nasze domowe urządzenia wysyłają w świat oraz jak można przejąć nad nimi kontrolę.
Prezentacja z barcampu firmy Semihalf. Przyglądamy się potencjałowi jaki leży w z pozoru starych urządzeniach domowych. Wystarczy pomysł, lutownica, odrobina determinacji i otwarty umysł by użyć stary router jako bazę do stworzenia własnego urządzenia komputerowego.
Prezentacja z barcampu firmy semihalf. Spotkanie miało formę interaktywnego quizu. Zaprezentowaliśmy kilkanaście nietypowych bugów, z którymi mieliśmy do czynienia. Uczestnicy wskazywali właściwe rozwiązania.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
Z prezentacji dowiesz się jak działają nowoczesne procesory, jakich technik używają (Speculative Execution, Branch Prediction) aby zwiększyć wydajność i jak to się stało, że niektóre z tych usprawnień mogą być sprytnie wykorzystane do pozyskania poufnych danych. Omawiamy przykład złośliwego kodu wykorzystującego te luki i skutki jego działania. Pokazujemy mechanizmy obrony i wyjaśniamy jakie mogą przynosić ograniczenia.
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
W prezentacji znajdziesz opis zagadnienia przetwarzania pakietów w wysokowydajnych sieciach światłowodowych. Koncepcja przetwarzania ruchu sieciowego w przestrzeni użytkownika oparta jest na zastosowaniu frameworku DPDK na platformie Linux/x86.
Piękny byłby świat komputerów, gdyby sprzęt zachowywał się tak samo jak oprogramowanie. Pomyślmy o nowej karcie graficznej, którą instalujemy w komputerze, zaznaczamy myszką, klikamy kopiuj, wklej, i bach, mamy już dwie! Albo nawet i trzy. A gdy już się nam znudzi, przesuwamy ją do kosza i cieszymy się z podstawowej konfiguracji. Sceptycy krzykną: niemożliwe! Ale czy na pewno?
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
Z prezentacji dowiesz się:
Co to są sieci programowalne i wirtualizowane (SDN / NFV)?
Jaką nową jakość wprowadzają one dla operatorów chmur obliczeniowych i centrów danych?
W jaki sposób technologia OpenContrail realizuje sieci nowej generacji?
Hierarchia pamięci w systemach komputerowych.Semihalf
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Z prezentacji dowiesz się:
Jaki wpływ na wydajność programów ma pamięć operacyjna?
Jak przyspieszyć działanie programów?
Kiedy korzystać z pamięci RAM lub Cache?
Wiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
Jak wygląda mikrokontroler od środka? W jaki sposób do niego mówić? Jak tłumaczy się kod C na wykonanie w sprzęcie? Skąd bierze się instrukcja? Gdzie szukać wyników operacji?
Dowiecie się, co to jest język opisu sprzętu i jak się go używa oraz jak zaprojektować własną architekturę mikrokontrolera z użyciem jednego z nich – języka Verilog.
Droga, którą procesor przebywa od włączenia do uruchomienia systemu operacyjnego, jest długa, kręta i pełna pułapek. Prezentacja nakreśla jej przebieg, ze szczególnym uwzględnieniem niełatwych początków uruchamiania systemu. Aplikacja Hello World była pisana na wiele sposobów, a tutaj pojawi się kolejny: Bare Metal.
Jak realizowana jest wielozadaniowość na pojedynczym CPU oraz jakie są jej konsekwencje? Czy “mutex to taki binarny semafor”? Dlaczego Windows nie jest używany do sterowania rakietami oraz jaki popularny błąd omal nie spowodował utraty jednej z misji NASA?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
Wyjaśnimy Ci co to jest system heterogoniczny, jak wygląda Linuxowy sterownik do "misc. character device" oraz w jaki sposób Linux może dogadać się z FreeRTOSem.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
Dzięki prezentacji poznasz wyzwania jakie stawia rynek infrastrukturze sieciowej, dowiesz się jakie są główne potrzeby w tym obszarze, zapoznasz się z ewolucją kart sieciowych.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
W prezentacji wyjaśniamy:
- Czym są programowalne sieci komputerowe (SDN - Software Defined Networks)?
- Jakie korzyści daje nam wirtualizacja funkcji sieciowych (NFV - Network Functions Virtualization)?
- Jak zrobić szybki routing pomiędzy maszynami wirtualnymi?
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
The document discusses the GDB debugger tool. It provides an overview of basic GDB commands like break, watch, step and next. It also covers setting breakpoints, watching variables, and using convenience variables and functions. The document discusses automating GDB using user-defined commands and functions. It describes debugging multi-threaded applications and features like reverse execution.
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
Podczas wykładu pomijamy jakość filtracji powietrza natomiast skupiamy się na metodach testowania protokołów sieciowych przy wykorzystaniu języka TTCN-3. Sprawdzamy jakie dane nasze domowe urządzenia wysyłają w świat oraz jak można przejąć nad nimi kontrolę.
Prezentacja z barcampu firmy Semihalf. Przyglądamy się potencjałowi jaki leży w z pozoru starych urządzeniach domowych. Wystarczy pomysł, lutownica, odrobina determinacji i otwarty umysł by użyć stary router jako bazę do stworzenia własnego urządzenia komputerowego.
Prezentacja z barcampu firmy semihalf. Spotkanie miało formę interaktywnego quizu. Zaprezentowaliśmy kilkanaście nietypowych bugów, z którymi mieliśmy do czynienia. Uczestnicy wskazywali właściwe rozwiązania.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
Z prezentacji dowiesz się jak działają nowoczesne procesory, jakich technik używają (Speculative Execution, Branch Prediction) aby zwiększyć wydajność i jak to się stało, że niektóre z tych usprawnień mogą być sprytnie wykorzystane do pozyskania poufnych danych. Omawiamy przykład złośliwego kodu wykorzystującego te luki i skutki jego działania. Pokazujemy mechanizmy obrony i wyjaśniamy jakie mogą przynosić ograniczenia.
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
W prezentacji znajdziesz opis zagadnienia przetwarzania pakietów w wysokowydajnych sieciach światłowodowych. Koncepcja przetwarzania ruchu sieciowego w przestrzeni użytkownika oparta jest na zastosowaniu frameworku DPDK na platformie Linux/x86.
Piękny byłby świat komputerów, gdyby sprzęt zachowywał się tak samo jak oprogramowanie. Pomyślmy o nowej karcie graficznej, którą instalujemy w komputerze, zaznaczamy myszką, klikamy kopiuj, wklej, i bach, mamy już dwie! Albo nawet i trzy. A gdy już się nam znudzi, przesuwamy ją do kosza i cieszymy się z podstawowej konfiguracji. Sceptycy krzykną: niemożliwe! Ale czy na pewno?
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
Z prezentacji dowiesz się:
Co to są sieci programowalne i wirtualizowane (SDN / NFV)?
Jaką nową jakość wprowadzają one dla operatorów chmur obliczeniowych i centrów danych?
W jaki sposób technologia OpenContrail realizuje sieci nowej generacji?
Hierarchia pamięci w systemach komputerowych.Semihalf
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Z prezentacji dowiesz się:
Jaki wpływ na wydajność programów ma pamięć operacyjna?
Jak przyspieszyć działanie programów?
Kiedy korzystać z pamięci RAM lub Cache?
Wiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
Jak wygląda mikrokontroler od środka? W jaki sposób do niego mówić? Jak tłumaczy się kod C na wykonanie w sprzęcie? Skąd bierze się instrukcja? Gdzie szukać wyników operacji?
Dowiecie się, co to jest język opisu sprzętu i jak się go używa oraz jak zaprojektować własną architekturę mikrokontrolera z użyciem jednego z nich – języka Verilog.
Droga, którą procesor przebywa od włączenia do uruchomienia systemu operacyjnego, jest długa, kręta i pełna pułapek. Prezentacja nakreśla jej przebieg, ze szczególnym uwzględnieniem niełatwych początków uruchamiania systemu. Aplikacja Hello World była pisana na wiele sposobów, a tutaj pojawi się kolejny: Bare Metal.
Jak realizowana jest wielozadaniowość na pojedynczym CPU oraz jakie są jej konsekwencje? Czy “mutex to taki binarny semafor”? Dlaczego Windows nie jest używany do sterowania rakietami oraz jaki popularny błąd omal nie spowodował utraty jednej z misji NASA?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
Wyjaśnimy Ci co to jest system heterogoniczny, jak wygląda Linuxowy sterownik do "misc. character device" oraz w jaki sposób Linux może dogadać się z FreeRTOSem.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
Dzięki prezentacji poznasz wyzwania jakie stawia rynek infrastrukturze sieciowej, dowiesz się jakie są główne potrzeby w tym obszarze, zapoznasz się z ewolucją kart sieciowych.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
W prezentacji wyjaśniamy:
- Czym są programowalne sieci komputerowe (SDN - Software Defined Networks)?
- Jakie korzyści daje nam wirtualizacja funkcji sieciowych (NFV - Network Functions Virtualization)?
- Jak zrobić szybki routing pomiędzy maszynami wirtualnymi?
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
1.
2. Linux KVM - wparcie dla wirtualizacji w
kontekście serwerów ARM
3. Plan
● Terminologia i koncepcja wirtualizacji
● QEMU
● Czym jest KVM ?
● Architektura ARMv8 i wsparcie dla wirtualizacji
○ poziomy uprzywilejowania
○ dodatkowy tryb pracy CPU
○ podwójna translacja MMU
○ wirtualny kontroler przerwań i timer
● Emulacja I/O
○ wirtualizacja
○ parawirtualizacja
○ VHOST
4. Terminologia
Wirtualizacja - technika pozwalająca na jednoczesne uruchamianie wielu systemów
operacyjnych na tej samej platformie sprzętowej
Hipernadzorca (ang. hypervisor) - kawałek kodu realizujący powyższe założenia i
zarządzający zasobami sprzętowymi
Host OS - system operacyjny na którym działa hipernadzorca
Guest OS - system operacyjny który działa na wirtualnej maszynie
QEMU (ang. Quick Emulator) - szybki emulator różnych architektur oraz urządzeń I/O +
interfejs użytkownika do uruchamiania i konfiguracji maszyny wirtualnej
5. Koncepcja hypervisor’a i co ma do tego KVM ?
Brak
wirtualizacji -
jeden OS
Hypervisor - dodatkowy
warstwa zarządzająca
sprzętem
QEMU + KVM jako
implementacja hypervisora
HypervisorOS kernel
App App
Hardware
OS kernel
App App
Hardware Hardware
Linux kernel KVM
QEMU
OS kernel
App App
OS kernel
App App
QEMU
OS kernel
App App
App
6. QEMU
● wykorzystuje KVM jako akcelerator
(wirtualizacja natywnej architektury)
● może działać autonomicznie (bez KVM)
● odpowiedzialny za interakcję z KVM
○ vm_fd = open(“/dev/kvm”);
○ ioctl(vm_fd, ...);
QEMU process == VM
host kernel
User space
KVM
Kernel space
Hardware
○ mmap() pamięci RAM wirtualnej maszyny
○ emulacja urządzeń I/O (wirtualizacja i
parawirtualizacja)
● qemu -name <vm_name> -machine virt,accel=kvm
-cpu <cpu_type> -m <RAM_size> -smp <cpu_nr> ...
Guest OS
I/O
emulation
ioctl()
7. QEMU Process
Czym jest KVM (Kernel-based Virtual Machine) ?
● kvm.ko moduł kernela, który
wykorzystuje dostępne i stabilne
podsystemy kernela
○ MMU
○ synchronizacja
○ scheduling
○ przerwania itd
● zarządza zasobami sprzętowymi
● wymaga sprzętowego wsparcia
● zmienia kontekst procesora
host/guest tzw. world switch
Guest OS
I/O emulation
host kernel
User space
Kernel space
KVM
Hardware
8. Czym jest KVM ? c.d.
● zapewnia obsługę wyjątków wirtualnej maszyny (trap) tj.:
○ przerwania
○ dostęp do rejestrów
○ I/O
● udostępnia urządzenie /dev/kvm, za pomocą którego możliwe jest poznanie
dostępnych urządzeń/funkcjonalności i ich konfiguracja np.:
○ typ kontrolera przerwań
○ ilość procesorów (SMP)
● współpracuje z emulatorami np. QEMU, kvmtool
○ emulacja pozostałych rzeczy np. dostęp do dysku virtio-blk
9. ARMv8 poziomy uprzywilejowania
Powodem zmiany EL może być:
● przerwanie, page faults
● instrukcja SVC (przejście do EL1)
● instrukcja HVC (przejście do EL2)
● instrukcja SMC (przejście do EL3)
● ERET (przejście poziom niżej)
EL - Exception Level
12. KVM i architektura ARMv8 c.d.
● Poziom EL2 ma tylko jeden bazowy
rejestr tablicy translacji TTBR1_EL2
● Wymagane ogromne zmiany żeby
uruchomić kernel na EL2
● EL2 zawiera mały “kawałek” kodu
zmieniające kontekst host - guest tzw.
“world switch”
13. KVM i architektura ARMv8.1 (VHE)
Host Userspace
Linux host kernel
Guest Kernel
Guest
Userspace
KVM
Rozszerzenie dla wirtualizacji:
● wsparcie dla TTBR0_EL2 i
TTBR1_EL2 !!!
● host kernel może pracować na
EL2
● host kernel nie musi przechodzić z
EL2 do EL1
● zmiana kontekstu na tym samym
poziomie EL2
14. ● modyfikacja kernela VM ?
● emulacja wybranych instrukcji ?
Jak zwirtualizować CPU (tzw. vCPU) ?
● emulacja?
○ procesor wchodzi w tryb guest i działa w
trybie natywnym
○ wychodzi do trybu host gdy potrzebuje
pomocy
○ każdy vCPU może być osobnym wątkiem
● użycie nowego trybu CPU - guest
** Wymaga od procesora wsparcia dla wirtualizacji
(Intel VT-x, ARM’s Virt. extensions) !!!
Start
Enter
Guest
Guest execution
Handle reason
(kern. mode)
Exit to Hyp
for some reason
Handle reason
(user. mode)
15. Jak zwirtualizować CPU (tzw. vCPU) ? c.d.
QEMU process
host kernel
User space
KVM
Exception handling
vCPU
pthread 0
exit enter
I/O
emulation
● vCPU to wątek
● możemy użyć taskset,
numactl, ps...
vCPU
pthread 1
exit enter
I/O
emulation
exit enter
Kernel space
16. Jak zwirtualizować CPU (tzw. vCPU) ? c.d.
Host Userspace
Linux host kernel
Guest Kernel
Guest
Userspace
Switching code
KVM
QEMU
ioctl(KVM_RUN)
enter/exit
While no
heavy exit -
or-
no error
Exit to QEMU
1. Heavy Exit - MMIO
2. Runtime KVM error
Set exit reason
KVM interrupted
Enable interrupts
Check pend interrupts,
timers. Update & inject
into guest
Disable interrupts
About to enter Guest
Check for
pending
signals
Enter guest, this is where
you world switch - Enter/
and return on Exit here
Enable Interrupts
Host interrupts happen
here
Update vCPU/KVM with
Guest HW state
Handle Exit could be
- 2nd stage MMU fault
- Hype call
- System reg access…
- KVM error can’t decode
Return from QEMU with updated CPU state
17. Jak zwirtualizować CPU (tzw. vCPU) ? c.d.
Konkluzje:
● narzut na wirtualizację to czas
kiedy CPU spędza w trybie host i
obsługuje wyjątki
● im mniej wychodzimy do
hypervisora tym lepiej
● wyjście do userspace’u (tzw.
heavy exit) jest najgorszym z
możliwych scenariuszy jeżeli
chodzi o wydajność
Guest Mode
KVM
HYP
KVM
HYP
KVM
Host
KVM
Host
QEMU
Run vCPU
QEMU
Exit Handle
Ultra-light
Exit
Light-weight
Exit
Guest enter Guest exit
Heavy Exit
21. Kontroler przerwań (VGIC) c.d.
● przerwania nadal są obsługiwane
przez kernel host
● dostęp do rejestrów i/f CPU nie
powodują wyjątku
● dostęp do rejestrów dystrybutora
nadal powoduje wyjątek (in-kernel
emulation)
● host jest w stanie wygenerować
przerwanie programując wirtualny i/f
CPU
● przerwanie jest generowane s/w na
żądanie emulowanego urządzenia I/O
QEMU process
host kernel
User space
KVM
Exception handling
vCPU
pthread 0
exit enter
VGIC
I/O
emulation
exit enter
Kernel space
reg 1
reg 0
reg 2
Dist. regs
22. VTimer
● operacje na rejestrach timera są krytyczne dla wydajności
● fizyczny timer dostępny tylko dla hosta
● wirtualny timer (vtimer) przeznaczony dla VM
● dostęp do rejestrów vtimera nie powoduje wyjątków : )
○ przerwanie vtimera nadal powoduje wyjątek i world
switch
○ optymalizacja - KVM sprawdza rejestry vtimera i
wstrzykuje przerwanie do VM
● wciąż potrzebna emulacja vtimera w kernelu : (
23. VTimer c.d.
QEMU process
host kernel
User space
KVM
Exception handling
vCPU
pthread 0
exit enter
VGIC
I/O
emulation
exit enter
Kernel space
IRQ injection
VTimer
24. QEMU process
Emulacja I/O - pełna wirtualizacja
Guest kernel
host kernel
User space
Kernel space
KVM
MMIO MMIO
e1000
IRQ
I/O emulation
e1000
machine state
IRQFD
TAP dev
reg 1
reg 0
reg 3
reg 2
RX/TX
● istniejący sterownik
● kompatybilność wstecz
● każdy zapis/odczyt rejestru
to trap i wyjście do
userspace-u
● skomplikowana maszyna
stanu w QEMU
● IRQFD
25. QEMU process
I/O emulation
Virtio - parawirtualizacja
● typowy sterownik dla VM
● konieczne wsparcie dla
VIRTIO w kernelu
● protokół zaprojektowany dla
potrzeb wirtualizacji
● vring - współdzielona pamięć
● eventfd - komunikacja w dwie
strony
● prostsza implementacja niż
emulacja zachowania HW
Guest kernel
virtio-net virtio-net
virtio-defined protocol
virtio-defined
registers
vring
host kernel
KVM TAP dev
MMIO MMIOIRQ EVENTFD RX/TX
User space
Kernel space
26. QEMU process
MMIO
VHOST
● QEMU jako funkcja kontrolna
● QEMU przekierowuje data plane
● przepływ pakietów VM<->kernel
● pomijamy warstwę QEMU<-
>TAP
● qemu -netdev type=tap,id=net0,vhost=on -device
virtio-net-pci,netdev=net0
Guest kernel
host kernel
KVM
I/O emulation
virtio-net vhost-net
control plane
/dev/vhost-net
virtio-defined
registers
TAP dev
vhost-net
EVENTFD
VRING User space
Kernel space
IRQ MMIO ioctl