Síla více jader: dual-core dual Opteron server (2)

Opteron logo V závěrečném díle o testování 64bitového Linuxu na serveru se dvěma dvou-jadernými Opterony se podíváme trošku blíže na hardware a na malé testy výkonnosti.

26.9.2005 06:00 | Ondřej Čečák | přečteno 14499×

Tak, pojďme rovnou k věci:

RAID

Přímo na desce je integrovaný ("integrace" je kvůli volnému místu vyřešena, jak si všiml Aleš Hakl, docela zajímavě – vlastní karta je umístěna "nad" deskou) řadič Adaptec Serial ATA RAID 2410S, pro který je podpora přímo v jádře díky driveru acc-raid, který funguje dle očekávání. V BIOSu řadiče si můžete snadno definovat umístění disků do jednotlivých volumes, nebo do RAIDu 0, 1, 5. U RAIDu si také můžete samozřejmě určit velikost bloků.

Pro jednotlivé svazky můžete určit, zda používat nebo nepoužívat write-back cache (tedy vyrovnávací paměť řadiče a případně také zařízení pro zapisování). Zdá se, že karta řadiče nějakou baterii má, ovšem v případě zatrhnutí write-back se BIOS ptá, zda si jste skutečně jistí svojí volbou, která může vést až ke ztrátě dat.

V případě, že by vám hardwarový RAID neseděl (zaslechl jsem, že u tohoto řadiče spíše nelze doporučit) vám samozřejmě nic nebrání v použití klasického softwarového.

Když už jsem měl disky v hardwarovém RAIDu, zkoušel jsem SATA hot-swap, bohužel se mi nedařilo disk po výměně korektně připojit pomocí linuxového SCSI subsystému.

PC Health – sensors

O stavu hardware se můžete dozvědět díky programu lm-sensors, který využívá I2C ovladače jádra. Autodetekční skript sensors-detect proběhl dobře až na detail, který je zrovna dost podstatný – pravděpodobně kvůli chybějícímu driveru (vanilla 2.6.13) pro chip Winbond není možné monitorovat teplotu, případně rychlost větráčků.

Je možné, že existuje patch mimo vanillu, nebo že lze sensory sledovat s upravenou konfigurací nebo přes ACPI, to jsem bohužel nevyzkoušel kvůli omezenému času testování. Také je možné, že přes ACPI nebo lm-sensors lze sledovat stav čidla pro detekci otevření case.

Výstup programu lm-sensors:

quadro:~# sensors
w83627hf-isa-0290
Adapter: ISA adapter
VCore 1:   +4.08 V  (min =  +1.47 V, max =  +1.63 V)
VCore 2:   +4.08 V  (min =  +1.47 V, max =  +1.63 V)
+3.3V:     +4.08 V  (min =  +3.14 V, max =  +3.47 V)
+5V:       +5.16 V  (min =  +4.76 V, max =  +5.24 V)
+12V:     +11.73 V  (min = +10.82 V, max = +13.19 V)
-12V:      +0.96 V  (min = -13.18 V, max = -10.80 V)
-5V:       +2.09 V  (min =  -5.25 V, max =  -4.75 V)
V5SB:      +5.48 V  (min =  +4.76 V, max =  +5.24 V)
VBat:      +2.05 V  (min =  +2.40 V, max =  +3.60 V)
fan1:        0 RPM  (min = 2848 RPM, div = 2)
fan2:        0 RPM  (min = 2848 RPM, div = 2)
fan3:        0 RPM  (min = 6081 RPM, div = 2)
temp1:       -48°C  (high =  +120°C, hyst =  +115°C)   sensor = thermistor
temp2:     -48.0°C  (high =   +80°C, hyst =   +75°C)   sensor = thermistor
temp3:     -48.0°C  (high =   +80°C, hyst =   +75°C)   sensor = thermistor
vid:      +1.550 V  (VRM Version 2.4)
alarms:
beep_enable:
          Sound alarm disabled

eeprom-i2c-0-53
Adapter: SMBus AMD8111 adapter at 50e0
Memory type:            DDR SDRAM DIMM
Memory size (MB):       1024

eeprom-i2c-0-52
Adapter: SMBus AMD8111 adapter at 50e0
Memory type:            DDR SDRAM DIMM
Memory size (MB):       1024

True random number generator (TRNG)

Další zajímavou vlastností desky (chipsetu od AMD) je generování opravdu náhodných čísel. V jádře je za to zodpovědný modul hw_random, jehož výstup je v /dev/hwrandom (pokud máte statický /dev/, vytvoříte zařízení snadno příkazem mknod /dev/hwrandom c 10 183).

V Debianu také doporučuji nainstalovat balíček rng-tools, který obsahuje daemona pro čtení náhodných dat ze speciálního zařízení a jejich předávání do /dev/random (v ostatních distribucích se může název lišit, nebo balík nemusí být zahrnut do standardní distribuce, v tom případě si program můžete snadno stáhnout ze stránek projektu).

Malé výkonnostní testy

Podobně jako u článku o Debianu na Dual Opteronu jsem provedl několik jednoduchých testů rychlosti (testy byly prováděny stejným způsobem, takže se nabízí případné orientační srovnání).

# rozbalení zdrojových kódů
time tar xjf linux-2.6.12.4.tar.bz2

real    0m18.309s
user    0m14.145s
sys     0m1.648s

# komprimace souboru obsahující samé nuly s velikosti 512 MB
time bzip2 file

real    0m17.090s
user    0m16.433s
sys     0m0.656s

Test překladu jádra jsem dělal se stejným .configem a také jsem zkoušel, do jaké míry se vyplatí spouštět simultánně kompilaci. Zvýšení proměnné CONCURRENCY_LEVEL mělo praktický smysl pouze do hodnoty o jednu větší než byl celkový počet jader.

time CONCURRENCY_LEVEL="1" make-kpkg --revision benchmark.1 kernel_image

real    10m1.874s
user    8m37.552s
sys     1m29.974s

time CONCURRENCY_LEVEL="2" make-kpkg --revision benchmark.1 kernel_image

real    5m14.060s
user    8m39.068s
sys     1m33.094s

time CONCURRENCY_LEVEL="3" make-kpkg --revision benchmark.1 kernel_image

real    3m40.376s
user    8m39.452s
sys     1m35.374s

time CONCURRENCY_LEVEL="4" make-kpkg --revision benchmark.1 kernel_image

real    3m23.285s
user    8m42.613s
sys     1m35.834s

time CONCURRENCY_LEVEL="5" make-kpkg --revision benchmark.1 kernel_image

real    2m56.068s
user    8m46.469s
sys     1m39.606s

Podobně jako minule jsem spustil syntetický test Opstone Vector Scalar-Product Benchmark prostřednictvím binárního programu optimalizovaného pro AMD Opteron (tedy 64-bit a instrukční sady SSE a SSE2), který měl otestovat výkon operací v plovoucí čárce. Ve 32bitech dosáhl 3,30 Gflops (6,29 špička), v 64bitech 1,60 Gflops (2,90 špička). Při porovnání s Opteronem s taktem 1,7 GHz (testovaný je taktován na 2,2 GHz) je výkon zhruba přímo úměrný frekvenci.

Na testované sestavě by se také pěkně louskala unixová hesla, John The Ripper při benchmarku naměřil pěkných 4410 pokusů za vteřinu na jeden procesor. (jde už o čisté pokusy, ve kterých jsou započítány transformace s různou solí (salt))

quadro:~# john --test

Benchmarking: Standard DES [64/64 BS]... DONE
Many salts:     499909 c/s real, 499314 c/s virtual
Only one salt:  473925 c/s real, 474461 c/s virtual

Benchmarking: BSDI DES (x725) [64/64 BS]... DONE
Many salts:     17260 c/s real, 17260 c/s virtual
Only one salt:  17102 c/s real, 17102 c/s virtual

Benchmarking: FreeBSD MD5 [32/64]... DONE
Raw:    4416 c/s real, 4410 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/64]... DONE
Raw:    360 c/s real, 360 c/s virtual

Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short:  308367 c/s real, 308367 c/s virtual
Long:   856828 c/s real, 856828 c/s virtual

Benchmarking: NT LM DES [48/64 4K]... DONE
Raw:    2633775 c/s real, 2629647 c/s virtual

Pěkně dopadl test rychlosti OpenSSL:

quadro:~# openssl speed rsa1024
Doing 1024 bit private rsa's for 10s: 13799 1024 bit private RSA's in 10.01s
Doing 1024 bit public rsa's for 10s: 222986 1024 bit public RSA's in 10.00s
OpenSSL 0.9.7e 25 Oct 2004
built on: Sat Dec 18 09:38:01 CET 2004
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial)
blowfish(ptr2)
compiler: gcc -fPIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H
-DOPENSSL_NO_KRB5 -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -m64
-DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
                  sign    verify    sign/s verify/s
rsa 1024 bits   0.0007s   0.0000s   1378.5  22298.6

Při zatížení jednoho procesoru není výsledek nijak oslňující, ale pokud spustíte test paralelně ve čtyřech instancích:

quadro:~#  openssl speed rsa1024 < openssl1.out & openssl speed rsa1024 <
openssl2.out & openssl speed rsa1024 < openssl3.out & openssl speed
rsa1024 < openssl4.out &

Dostanete přibližně 4x lepší výsledek – průměrně 5471,5 podepsání za sekundu a 89233,2 ověření za sekundu u 1024 bitového RSA.

Graf

Porovnání výsledku sestavy s dvěma dual-core Opterony @ 2,2 GHz a sestavy s dvěma Opterony @ 1,7 GHz.

Na závěr jsem spustil databázový test DBD z MySQL pro MySQL a PostgreSQL s výchozím nastavením (výsledek pro MySQL, PostgreSQL). Důležité je zmínit, že tento test nelze použít pro srovnání, která z databází je rychlejší.

Závěr

Sestava s Dual-core dual Opteronem se během testování chovala dle očekávání až na jeden podivný kernel ops, který zřejmě způsobila chyba v jádře vanilla 2.6.13 a kterou už jsem nedokázal později vyvolat. Stroj byl velice svižný a Linux na něm běží vyjma divné chyby naprosto bez problémů.

Komerční oznámení:
Tento stroj prodáváme za cenu začínající na 143 630 Kč (bez DPH) v Linux CD Shopu.


Poděkování:
Rád bych za tým Linuxsoftu poděkoval společnosti Abacus, která nám server na otestování laskavě zapůjčila. Děkujeme.
Online verze článku: http://www.linuxsoft.cz/article.php?id_article=974