150 likes | 273 Views
Verificarea submisiilor de actualizare a surselor kernel-ului Linux. Autor : Radu Caragea E-mail : radu.caragea@orangemail.ro. Kcheck in a nutshell. D ezvoltare ş i testare componente din kernel core Input: Arhiv ă kernel Benchmarks Patch Proces: Compilare optimizat ă
E N D
Seminar Ixia Verificarea submisiilor de actualizare asurselor kernel-ului Linux Autor: Radu Caragea E-mail: radu.caragea@orangemail.ro
Seminar Ixia Kcheck in a nutshell • Dezvoltare şi testare componente din kernel core • Input: • Arhivă kernel • Benchmarks • Patch • Proces: • Compilare optimizată • Bootare şi rulare în container • Output: • Orice tip de statistici on demand • Output de la benchmarks • Output ‘devreme’ de la kernel prin serială (in case of catastrophe)
De ce nu module ? Modulele acoperă o gamă foarte largă de aplicaţii, însă... Schimbări disruptive (performanţă) Scheduler Basic din 1991 până în 2002 O(1) până în 2008 Completely fair de atunci Interfeţe Hash tables Mecanisme de sincronizare 04.10.2014 Seminar Ixia 3
Vedere de ansamblu sdg 04.10.2014 Seminar Ixia 4
Scenariude utilizare Se construiesc testele de performanţă şi/sau validare Target: Kernel: versiune şi configuraţie Arhitectură Configuraţie hardware: procesoare, memorie, device-uri prin passthrough Execuţie în două faze: Compilare şi Rulare 04.10.2014 Seminar Ixia 5
Arhitectură. Faza de compilare Command Line Interface Interfaţat peste API Primeşte configuraţia target Sandbox pe host Compilare în background Oferă profile per-utilizator Probleme de performanţă 04.10.2014 Seminar Ixia 6
Ccache Frontend pentru compilator Parser pentru preprocesare Bază de date – hashing Exemplu real world: compilare kernel “make –j5” Gcc: 12 min 5 s (100%) Ccache prima compilare, bază de date goală: 12 min 31 s (103%) Ccache a doua compilare: 2 min 12 s (18%) 04.10.2014 Seminar Ixia 7
Arhitectură. Faza de rulare Kernel image obţinut din faza precedentă Automatizare interacţiune cu VM Comandare programatică Copiere kernel Copiere benchmark Booting de pe noul kernel Verbose output Mesaje kernel Output benchmark De ce nu netconsole? 04.10.2014 Seminar Ixia 8
Qemu & KVM Qemu Emulator de procesoare: suportă mai multe arhitecturi decât încap pe slide Rulare maşină virtuală full-fledged în fereastră KVM Bazat pe Qemu; Virtualizare nu emulare Accelerare pentru aceeaşi arhitectură Suport direct în kernel Passthrough hardware Foloseşte extensiile de virtualizare din procesor Sponsorizat de RedHat: dezvoltare foarte activă 04.10.2014 Seminar Ixia 9
Libvirt API peste hipervizor: “vm-agnostic” XEN LXC VMware, VirtualBox, KVM, Qemu, Hyper-V Implementat peste KVM iniţial CLI-ul evidenţiază uşurinţa în utilizare virsh -c qemu:///system start “VM1“ virsh -c qemu:///system snapshot-create “VM1“ virsh -c qemu:///system snapshot-revert “VM1" –snapshotname 1 Pentru preluarea datelor de pe serială: virsh -c qemu:///system attach-device “VM1“ serial_to_pipe_device_description.xml 04.10.2014 Seminar Ixia 10
Serial_to_pipe_device.xml <serial type='pipe'> <source path='/tmp/mypipe' /> <target port=‘0' /> </serial> 04.10.2014 Seminar Ixia 11
Libvirt-sandbox API C, bindinguri python, perl etc. Executare binar direct în hipervizor Output imediat, direct pe host Permite bindinguri la nivel de fişier/director între host şi guest Permite chiar rulare executabil interactiv: shell True Sandboxing !! 04.10.2014 Seminar Ixia 12
Unde va fi folosit întâi Vmchecker Kernel programming challenges Exemplu basic: Se dă o aplicaţie ce rulează în spate asincron dar care performează foarte prost cu I/O schedulerul default. Se cere o analiză detaliată pentru performance penalties şi rescrierea schedulerului pentru a funcţiona optim dacă se rulează doar aplicaţia respectivă. 04.10.2014 Seminar Ixia 13
Starea curentă Done Testare preliminară de fezabilitate pe CLI-ul libvirt, libvirt-sandbox Proiectare arhitecturală API, CLI Proiectare de detaliu API, CLI Unit-based testing pentru API Partially done Coding API To be done Coding CLI XML-uri pentru diverse arhitecturi Proiectare benchmark-uri 04.10.2014 Seminar Ixia 14
Vedere de ansamblu API; CLI; Virtualizare; Libvirt; Qemu; KVM; Ccache; Sandbox sdg 04.10.2014 Seminar Ixia 15