Górnośląskie Centrum Obliczeń Naukowych i Inżynierskich

Precyzyjne odmierzanie czasu w systemach komputerowych często jest istotnym wymaganiem. W przypadku niektórych zastosowań poza precyzją może również zaistnieć potrzeba odmierzania zdarzeń czasowych o wysokiej rozdzielczości - rzędu setek lub nawet dziesiątek mikrosekund. Przez lata, mechanizmy odmierzania czasu w systemach komputerowych ewoluowały kilkukrotnie. Cześć zmian spowodowana była wprowadzeniem nowych mechanizmów w samej architekturze sprzętowej (procesora lub płyty głównej), przykłady: Program- mable Interval Timer (PIT), Real Time Clock (RTC), Local Advanced Programmable Controller (lapic), Advanced Configuration and Power Interface (ACPI) (potocznie: chipset timer), Time Stamp Counter (TSC) (patrz instrukcja RDTSC w), oraz High Precision Event Timers (HPET). Każdy z wymienionych mechanizmów miał służyć innym zastosowaniom i działa w nieco inny sposób.

Innym rodzajem zmian w mechanizmach odmierzania czasu były te spowodowane zmianami mechanizmów zegarowych samych systemów operacyjnych. W systemie Linux przykładami takich zmian mogą̨ być: dodanie trybu Tickless pracy jadra, wprowadzenie mechanizmu przerwań wysokiej rozdzielczości oraz wyłączenie tzw. “wolnych” przerwań (slow interrupts). Obecnie poza systemem operacyjnym coraz częściej stosowana jest dodatkowa warstwa oprogramowania wirtualizacyjnego. Intuicyjnie może ona mieć dodatkowy wpływ na precyzję i rozdzielczość zdarzeń czasowych.

Celem prac jest zbadanie precyzji i rozdzielczości zdarzeń czasowych osiąganych przez system Linux bez wirtualizacji oraz porównanie z analogicznymi pomiarami w rożnych środowiskach wirtualizacji.

Przeprowadzono szereg pomiarów: jeden dla systemu Linux bez wirtualizacji, oraz pomiar dla każdego z badanych monitorów maszyn wirtualnych - VMWare Player 6.0.0, VirtualBox 4.3.18, Qemu 2.1.2, KVM 3.18.8, Xen 4.5.0. We wszystkich wykorzystano ten sam system operacyjny tj. Linux Gentoo 3.17.8 w którym uruchomiono pomiary. Pomiary były powtórzone na kilku rożnych platformach sprzętowych i dały zbieżne wyniki. Jak pokazały wyniki prac rozdzielczość i precyzja osiągana przez badane monitory maszyn wirtualnych może nie być wystarczająca w przypadku niektórych zastosowań, w szczególności w przypadku dużego obciążenia systemu przez inne przerwania sprzętowe.

Podsumowując przeprowadzone eksperymenty, można powiedzieć, że systemy VMWare, VirtualBox oraz Qemu nie zapewniają̨ wysokiej rozdzielczości ani precyzji zdarzeń czasowych. System KVM osiąga znacząco lepsze wyniki, nie zachowuje jednak dobrej dokładności. Najlepsze wyniki osiąga platforma Xen. W przypadku systemu nieobciążonego wyniki te są zbliżone do systemu bez wirtualizacji i pozwalają̨ zachować́ odpowiednią rozdzielczość, precyzję oraz dokładność. Niestety, obciążenie systemu dodatkowymi przerwaniami ma znaczący wpływ na precyzję Xen co w przypadku bardzo wymagających aplikacji może nie być akceptowalne. Niska precyzja i problem z zachowaniem rozdzielczości, w przypadku systemu obciążonego innymi prze- rwaniami, jest również̇ widoczny (w znacząco mniejszym stopniu niż̇ w przypadku Xen) dla pomiarów systemu Linux bez wirtualizacji. Analiza wykazała, że za efekt ten jest odpowiedzialna wspomniana zmiana w architekturze systemu Linux, która wyłączyła całkowicie podział na “szybkie” i “wolne” przerwania. W ramach badań zaprezentowano również nową implementację mechanizmów zegarowych opartych o monitor maszyn wirtualnych Xen. Dodatkowe pomiary wykazały, że nowa implementacja zachowuje wymaganą rozdzielczość i precyzję niezależnie od tego czy system jest obciążony przez dodatkowe przerwania czy nie. Stworzenie odrębnego dedykowanego mechanizmu zdarzeń czasowych w przypadku bardzo wymagających aplikacji może okazać się̨ jedyną metodą osiągnięcia odpowiedniej precyzji i rozdzielczości. Wydaje się̨, że analogicznie modyfikacje można również przeprowadzić dla jadrze systemu Linux nie wykorzystującym wirtualizacji, a także w systemie KVM.

 

 

wykonawcy:

Blazej Adamczyk, Andrzej Chydzinski