Tesi di laurea magistrale Uno strumento per l emulazione di fallimenti hardware in sistemi virtualizzati Anno Accademico 2012/2013 relatore Ch.mo prof. Marcello Cinque Ing. Antonio Pecchia correlatore Ing. Anna Lanzaro candidato Giovanni Fierro Matr. M63/40
Contesto e motivazioni Sistemi embedded e sistemi mission-critical Soluzioni multicore Alte prestazioni SWaP (Size, weight and power) ridotto Virtualizzazione Sistemi mixed-criticality Verifica e Validazione Intero sistema Macchine virtuali Critical applications RTOS General purpose applications OS Virtualization layer Multi-core processor
Obiettivo Obiettivo e contributo Analisi dei meccanismi di notifica e gestione di errori hardware in ambienti multi-core virtualizzati Contributo Realizzazione di un framework di error-injection Approccio basato sull emulazione di fallimenti hardware sfruttando l architettura di error reporting Casi di studio Intel I7 Xen 4.2.1 Linux Kernel 3.6.11
Di tipo bare-metal: Xen Hypervisor Progetto open-source nato presso l università di Cambridge Controlla le risorse, CPU e memoria Componenti Control domain, Dom0 Guest domain, DomU Toolstack e console I domini si interfacciano a Xen tramite hypercall Meccanismo analogo alle System Calls
Rilevamento e notifica errori hardware Gli errori hardware sono notificati al software di base sollevando un interrupt MCE (Machine check exception) Codici di errore loggati nella MCA (Machine Check architecture) Consiste in un insieme di registri MSR (Machine Specific Register), suddivisi in banchi
Hypercall: HYPERVISOR_mca Xen implementa un modulo software per la MCA. Handlers MCE Error logging Specifica hypercall: HYPERVISOR_mca Comandi: Fetch, lettura log; Msr_inject, scrittura MSR; Mce_inject, solleva MCE Modifica interfaccia comando Mce_inject Possibilità di iniezione nel guest
Injection tool Emulazione errori hardware Scrittura dei registri MSR Due modalità di iniezione Nell hypervisor Direttamente al guest Modifiche al codice Xen Handler MCE Allineamento vmsr guest
Injection tool: esempio di utilizzo al guest Generic cache hierarchy error level 1 MCG_STATUS 0X5 MCi_STATUS 0XBD80000000000000F MCi_ADDR 0X100 MCi_MISC 0X80 BANK 8 CPU 6 Dom_Id 2 Dom0 Console Target DomU mcelog Xen mce.c
Testbed Processore: Intel i7 8 core logici Target domain Linux OS: versione kernel 3.6.11 Test logs Log di sistema Report dell esperimento Workload generator Utility linux «stress»
Codici errore: Cache hierarchy error MCE Iniettati: 49152 Sperimentazione: Xen error handling L azione intrapresa è indipendente dallo specifico codice di errore Errori delegati al guest PCC (processor context corrupted) 1536 MCE iniettati
MCE inoltrati direttamente al guest Errori TLB 1536 MCE iniettati Sperimentazione: Linux OS Flag RIPV registro globale Restart IP (instruction pointer) valid Se basso kill del processo
Conclusioni Il tool realizzato in questo lavoro di tesi permette di testare sia il l intero sistema virtualizzato e sia la singola virtual machine. I meccanismi di error-handling testati non svolgono vere e proprie azioni di recupero dell errore. Sviluppi futuri Utilizzare il framework in sistemi critici reali Domini target solo ParaVirtualizzati Estendere l utilizzo del tool anche ad domini fully virtualized (HVM )