Nejklasičtějším benchmarkem, který se v Linuxu používá, je test kompilace jádra. Jeho výstupem je doba, za kterou překladač zkompiluje a sestaví jádro Linuxu. Čím je tedy výstupní čas menší, tím je testovaný počítač rychlejší. Úloha je silně závislá na výkonu procesoru, velký vliv má také rychlost disku a operační paměti. Nejedná se o syntetickou (umělou) úlohu, takže naměřený čas poměrně přesně vypovídá o rychlosti testovaného počítače.
Měření doby kompilace jádra se provádí následujícím způsobem:
- Nainstalují se zdrojové kódy jádra (typicky do adresáře /usr/src/linux
- Provede se defaultní nastavení překládaných komponent:
make oldconfig
- Pomocí příkazu time se změří doba běhu překladu, např.:
time make bzImage
jehož výstupem je čas, například:
real 11m59.630s user 11m11.330s sys 0m48.240s
Uvedený výstup nám sděluje, že vykonání zadaného příkazu trvalo 11'59" skutečného času, z nichž 11'11" strávil program prováděním svého vlastního kódu a 48" běžel v režimu jádra. Pomocí příkazu time můžeme efektivně měřit dobu vykonání libovolného programu.
Aby bylo možné měřené hodnoty porovnávat, je vhodné mít na zřeteli několik skutečností.
- Porovnávat lze jen časy dosažené se stejnými kompilačními volbami na stejných verzích jader. Různé verze obsahují jiný kód, jehož kompilace trvá jinou dobu.
- Používejte stejné verze kompilátoru, protože některé překladače mohou kompilovat rychleji, jiné pomaleji. Používanou verzi zjistíte pomocí příkazu:
cc -v
- Během překládání by nemělo běžet příliš mnoho programů, které by mohly zkreslit výsledek. Ideální podmínky pro měření poskytuje čerstvě nastartovaný počítač bez grafického prostředí s minimem běžících úloh.
- Při opakovaných testech je nutné vyčistit adresář s jádrem voláním příkazu
make mrproper
, neboť příkaz make normálně překládá pouze soubory, které se od poslední kompilace změnily. Také je dobré zvážit, zda není vhodnější při opakovaných měřeních restartovat počítač, aby se vyloučilo riziko, že výsledek zkreslí přítomnost dat v cache. - Pro testování víceprocesorového počítače je nejlépe spouštět překládání paralelně pomocí direktivy „-jN“ příkazu make. N je počet threadů, do kterých bude překládání rozděleno. Udává se, že ideální hodnota N je počet procesorů + 1, a to i na jednoprocesorových počítačích.
ubench
ubench je malý program, který může být použit k porovnání výkonu procesoru a paměti. Jeho výhodou je podpora SMP a deklarovaná platformní nezávislost, takže jej můžete použít třeba k porovnání rychlosti šestiprocesorového Sun serveru se Solarisem a vašeho linuxového desktopu s Celeronem. Nevýhodou programu je malá stabilita výsledků – třemi testy jsem dospěl ke třem různým, byť podobným výsledkům.
Program si nejprve přeložíte pomocí příkazu make. Potom jej můžete spustit příkazem ubench, běh trvá asi šest minut, přičemž nejprve se (prováděním matematických výpočtů) měří výkon vlastního procesoru, poté paměti (alokace, kopírování bloků atd.). Výsledkem jsou dva indexy, které lze porovnávat. Výstup může vypadat nějak takto:
Unix Benchmark Utility v.0.3 Copyright (C) July, 1999 PhysTech, Inc. Linux 2.4.3-12smp #1 SMP Fri Jun 8 14:38:50 EDT 2001 i686 Ubench CPU: 36915 Ubench MEM: 57678 -------------------- Ubench AVG: 47296
Program ubench najdete na této adrese. Na stejném místě naleznete také žebříček indexů, které autorovi posílají uživatelé programu.
BogoMIPS
Hodnota BogoMIPS je počet prázdných smyček, které procesor počítače vykoná za jednu sekundu. O výkonu toho napoví jen málo. Díky tomu, že je test všudypřítomný (vykonává se při každém startu jádra), můžeme ho použít k hrubému (velmi hrubému) porovnávání rychlosti procesoru. Jádro používá BogoMIPS ke kalibraci čekací smyčky.
Hodnotu BogoMIPS zjistíme např. takto:
$ dmesg | grep mips Calibrating delay loop... 466.94 BogoMIPS
Více se o BogoMIPSech dočtete například tady.
nbench
Program nbench je dalším klasickým syntetickým benchmarkem. Jeho původcem je americký papírový časopis Byte, který jej svého času používal k testování počítačů. Po zveřejnění zdrojových kódů byl upraven pro práci v Linuxu.
Program měří výkon procesoru pomocí deseti matematických úloh, které mají svůj základ v praxi. Provádí například numerické třídění, kompresi, šifrování, simulaci neurální sítě, výpočet fourierových koeficientů apod. Úlohy jsou rozděleny podle své orientace na výpočty s pevnou a plovoucí desetinnou čárkou. Jejich podrobný popis je součástí dokumentace, stejně tak i jejich zdrojový kód je velice dobře komentován.
Výkonnost určitého počítače je reprezentována počtem provedených iterací v čase, který je přepočítán na výkonnostní index relativně k rychlosti počítače s procesorem Pentium 90. Současné verze programu udávají navíc ještě index vůči AMD K6/233. Program se snaží prezentovat i originální indexy Bytemark. Určitým nedostatkem je omezení na jeden procesor, takže SMP počítače vykazují stejný výkon jako UP. Naopak příznivě je nutné hodnotit stabilitu výsledků.
Program, stejně jako obsáhlou databázi provnávacích výsledků, si můžete stáhnout tady.