140 likes | 311 Views
Verificarea submisiilor de actualizare a surselor kernel-ului Linux. Autori : Radu Caragea E-mail : sinaelgl@gmail.com. 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 Autori: Radu Caragea E-mail: sinaelgl@gmail.com
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 • Early kernel output (in case anything goes horribly wrong)
De ce nu module ? Modulele acoperă o gamă foarte largă de aplicaţii, însă... Schimbări dizruptive (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 27.10.2014 Seminar Ixia 3
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 27.10.2014 Seminar Ixia 4
Arhitectură. Faza 1 Command Line Interface Interfaţat peste API Sandbox local Primeşte configuraţia target Compilare în background Profile per-utilizator Probleme de performanţă 27.10.2014 Seminar Ixia 5
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%) Output cache hit (direct) 3699 cache hit (preprocessed) 1942 cache miss 3816 files in cache 6753 27.10.2014 Seminar Ixia 6
Arhitectură. Faza 2 Kernel image obţinut din faza precedentă Automatizare Comandare maşină virtuală programatic Copiere kernel Copiere benchmark Booting de pe noul kernel Verbose output Mesaje kernel Output benchmark Este netconsole de ajuns ? 27.10.2014 Seminar Ixia 7
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ă 27.10.2014 Seminar Ixia 8
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 27.10.2014 Seminar Ixia 9
Serial_to_pipe_device.xml <serial type='pipe'> <source path='/tmp/mypipe' /> <target port=‘0' /> </serial> 27.10.2014 Seminar Ixia 10
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 !! 27.10.2014 Seminar Ixia 11
Libvirt-sandbox exemplu $ virt-sandbox -c qemu:///system /bin/date Thu Jan 12 22:30:03 GMT 2012 $ virt-sandbox -c qemu:///system /bin/sh sh-4.2$ ps -axuwf USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 165436 3756 pts/0 Ss+ 22:31 0:00 libvirt-sandbox-init-qemu root 24 0.0 0.1 167680 4688 pts/0 S+ 22:31 0:00 libvirt-sandbox-init-common root47 0.0 0.0 13852 1608 pts/1 Ss 22:31 0:00 \_ /bin/sh root 48 0.0 0.0 13124 996 pts/1 R+ 22:31 0:00 \_ ps -axuwf 27.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ă. 27.10.2014 Seminar Ixia 13
Vedere de ansamblu 27.10.2014 Seminar Ixia 14