Distribuovaný test (test č. 4)¶
- Table of contents
- Distribuovaný test (test č. 4)
1 Cíl testu¶
Cílem tohoto testu bylo zjistit potíže v komunikaci klient-server při zátěži a nalezení prípadného uzkého hrdla serveru.
2 Popis testu¶
Ve dnech 9.2.2012 až 12.2.2012 proběhl distribuovaný test Warden serveru, kterého se zúčastnilo 9 z plánovaných 11 strojů. Na každém z nich běželi dva testovací klienti s nastavenou smyčkou 100 000 událostí, které nepřetržitě chrlili na server. V průběhu testu došlo k výpadkům některých zapojených klientů. Opět se podařilo zprovoznit stroj au2 a ir. Další se však již zprovoznit nepodařilo a testu se pak ne již neúčastnili (au1, holly, queeg).
Pro výpočet aritmetického průměru a směrodatné odchylky v tomto testu byl použit perlovský modul Statistics::Basic.
3 Stručný přehled testu¶
Jako funkční jsou uvažovány stroje, které odeslaly na server v průběhu testu alespoň jednu událost. Doba běhu klientů byla počítána pouze u těch klientů, kteří odeslali bez přerušení všech 100 000 událostí. Stroje ir a office2 nebyly do výpočtu doby běhu zahrnuty protože u nich došlo k chybě a odesílání pokračovalo neustále až do doby, kdy bylo jejich odesílání na koneci testu násilně ukončeno. Doba jejich běhu se tedy rovná délce trvání testu.
Počet klientů na stroji | Počet strojů | Počet událostí/klient | Doba běhu | Využití swap | RAM po dobu běhu testu | CPU po dobu běhu testu | Doba běhu klientů na strojích |
---|---|---|---|---|---|---|---|
2 | plánováno 11 funčních 9 |
100 000 | 2012-02-09T13:30:00 - 2012-02-12T19:46:45 (4 697 minut) |
0 po 100% času | 0,3% po 98% času ------------ Aritm. průměr: 0,3% Směrodatná odch.: 0,01% |
4% po 63% času 5% po 34% času ------------ Aritm průměr: 4,4% Směrodatná odch.: 1,06% |
enta3: 4 370 minut nfsen-devel: 4 444 minut buldog: 2 570 minut (ir: 4 697 minut) (office2: 4 697 minut) |
4 Stroje zapojené do testu¶
Do porovnání jsou zahrnuty stroje, které odeslaly na server v průběhu testu alespoň jednu událost.
Stroj | au1 | au2 | buldog | enta3 | holly | ir | nfsen-devel | office2 | queeg |
---|---|---|---|---|---|---|---|---|---|
Distribuce | openSUSE 11.3 (i586) | openSUSE 11.4 (i586) | Ubuntu 11.10 | CentOS release 5.7 (Final) | Debian GNU/Linux 6.0.2 (squeeze) | Debian GNU/Linux 6.0.4 (squeeze) | CentOS release 5.7 (Final) | Debian GNU/Linux 5.0.9 (lenny) | Debian GNU/Linux 6.0.2 (squeeze) |
Jádro | 2.6.34.10-0.6-pae | 2.6.37.6-0.11-desktop | 2.6.38-11-generic | 2.6.18-274.17.1.el5.centos.plus | 2.6.32-5-686 | 2.6.32-5-amd64 | 2.6.18-274.17.1.el5 | 2.6.26-2-686-bigmem | 2.6.32-5-686 |
CPU | Xeon X3370 (4 jádra, 3GHz) | Xeon X3350 (4 jádra, 2.66MHz) | Quad Q9550 (4 jádra, 2.83MHz) | Xeon X5130 (2 jádra, 2GHz) | Xeon 3.40GHz | Xeon X5365 (4 jádra, 3GHz) | Xeon X3353 | 2x Xeon X5365 (4 jádra, 3GHz) | Pentium III (1 jádro, 1GHz) |
RAM | 8GiB | 4GiB | 4GiB | 4GiB | 1GiB | 4GiB | 1GiB | 8GiB | 1GiB |
5 Počet odeslaných událostí za sekundu u každého klienta¶
Do tabulky jsou zahrnuti jen klienti, kteří dokončili bez vážnějších výpadků test.Klient | au2 kl. 1 | au2 kl. 2 | buldog kl. 1 | buldog kl. 2 | enta3 kl. 1 | enta3 kl. 2 | nfsen-devel kl. 1 | nfsen-devel kl. 2 | office2 kl. 1 | office2 kl. 2 |
---|---|---|---|---|---|---|---|---|---|---|
Aritmetický průměr (událostí/sec.) | 0,39 | 0,39 | 0,65 | 0,64 | 0,37 | 0,38 | 0,38 | 0,38 | 0,83 | 0,83 |
Směrodatná odchylka (událostí/sec.) | 1,01 | 1,01 | 1,93 | 1,9 | 1 | 1 | 1,01 | 1 | 1,67 | 1,67 |
6 Počet odeslaných událostí za sekundu celkem¶
Hodnoty vyjadřují součet všech odeslaných událostí ze všech klientů ve stejnou vteřinu běhu testu. Data byla získána ze všech dostupných logů. Vypočtený aritmetický průměr je v tomto případě 4,5 události a směrodatná odchylka je 5,33 události. Počty událostí ovšem vykazují zajímavou pravidelnost, která je patrná v přiložené tabulce.
První dva sloupce jsou získány z počátku běhu testu (head -n 20). Další dva zhruba z jedné (head -n 100 000 | tail -n 20) a dvou třetin běhu (head -n 200 000 | tail -n 20). Poslední dvojice sloupců je získána z konce testu (tail -n 20).
head -n 20 | head -n 100 000 | tail -n 20 | head -n 200 000 | tail -n 20 | tail -n 20 | ||
---|---|---|---|---|---|---|---|
unix time | udalostí/sec. | unix time | udalostí/sec. | unix time | udalostí/sec. | unix time | udalostí/sec. |
1328794201 | 16 | 1328894181 | 11 | 1328994181 | 2 | 1329075986 | 0 |
1328794202 | 3 | 1328894182 | 1 | 1328994182 | 11 | 1329075987 | 12 |
1328794203 | 0 | 1328894183 | 0 | 1328994183 | 0 | 1329075988 | 0 |
1328794204 | 13 | 1328894184 | 10 | 1328994184 | 1 | 1329075989 | 0 |
1328794205 | 4 | 1328894185 | 1 | 1328994185 | 12 | 1329075990 | 12 |
1328794206 | 0 | 1328894186 | 3 | 1328994186 | 0 | 1329075991 | 0 |
1328794207 | 6 | 1328894187 | 13 | 1328994187 | 0 | 1329075992 | 0 |
1328794208 | 11 | 1328894188 | 0 | 1328994188 | 13 | 1329075993 | 10 |
1328794209 | 0 | 1328894189 | 0 | 1328994189 | 0 | 1329075994 | 2 |
1328794210 | 3 | 1328894190 | 12 | 1328994190 | 0 | 1329075995 | 0 |
1328794211 | 13 | 1328894191 | 0 | 1328994191 | 13 | 1329075996 | 9 |
1328794212 | 0 | 1328894192 | 0 | 1328994192 | 0 | 1329075997 | 3 |
1328794213 | 0 | 1328894193 | 10 | 1328994193 | 0 | 1329075998 | 0 |
1328794214 | 15 | 1328894194 | 0 | 1328994194 | 13 | 1329075999 | 0 |
1328794215 | 0 | 1328894195 | 4 | 1328994195 | 0 | 1329076000 | 12 |
1328794216 | 0 | 1328894196 | 13 | 1328994196 | 0 | 1329076001 | 0 |
1328794217 | 17 | 1328894197 | 0 | 1328994197 | 12 | 1329076002 | 0 |
1328794218 | 0 | 1328894198 | 0 | 1328994198 | 0 | 1329076003 | 0 |
1328794219 | 0 | 1328894199 | 12 | 1328994199 | 0 | 1329076004 | 0 |
1328794220 | 16 | 1328894200 | 1 | 1328994200 | 12 | 1329076005 | 16 |
7 Databáze¶
V této sekci jsou uvedena data zjištěná z databáze Warden serveru. Konkrétně se jedná o tabulku events s událostmi přijatými od klientů v průbehu testu.
Při prohlídce databázové tabulky po ukončení testu byly zjištěny rozdíly v tabulce mezi časy "detected" a "received". Tyto hodnoty by měly být v ideélní případě shodné, protože vyjadřují dobu zpracování události od klienta serverem. Čas "detected", který je zapsán do těla události a časem "received", který je zapsán v DB při doručení události a také je zapsán v logu klienta (print po volání "WardenClientSend::saveNewEvent"). Čas v DB u "received" a v logu klienta je shodný. Aritmetický průměr této hodnoty je 2,19 vteřiny a sm. odchylka je 3,83 vteřiny. Data nejeví na první pohled žádnou pravidelnost jako v předchozím případě.
8 Závěr¶
V průběhu testu byly zjištěny dva zásadní poznatky, které mohou mít vliv na implementaci Wardenu a hledání předpokládaného úzkého hrdla. Prvním poznatkem je, dle mého, zjištěná neobvyklá pravidelnost v celkovém počtu zpracovaných událostí za vteřinu (bod 6).
Druhým poznatkem je zjištěný rozdíl v databázi mezi časem "detected" v těle přijaté události a časem "received" zaznamenaném v databázi při jejím přijetí. Tento rozdíl popisuje dobu potřebnou pro úspěšné dokončení volání "WardenClientSend::saveNewEvent" a pohybuje se nejčastěji v rozmezí 0-9 vteřin. Nebyla zjištěna prokazatelná závislost mezi oběma poznatky (bod 6 a bod 7).