Tämä on eräänlainen jatko-osa kirjoitukseen Nopeita prosessoreja ja vikasietoista keskusmuistia halvalla. Siinä ei vielä kerrottu ongelmista, jotka pääasiassa johtuivat siitä, että..

HP:n dokumentointiin ei voi luottaa

Sekä Proliant ML350 G5:n että Z600:n ohjekirjoissa on virheitä tai vähintäänkin puutteita sen takia, että molempia on valmistettu eri versioita, joiden ominaisuudet ovat oleellisesti erilaiset. HP:n omasta lisädokumentoinnista löytyy tarkennuksia, mutta ei ilmeisesti ratkaisuja kaikkiin ongelmiin ja jos laitteisto on erilainen kuin ohjekirja väittää, ovat sen ominaisuudetkin erilaiset.

HP Proliant ML350 G5

ML350:n emolevyä on valmistettu kolmea eri versiota kahdella eri piirisarjalla. Tämän tiedon löysin Server Faultista googlaamalla. Vastaaja taas oli löytänyt viittaamansa tiedon HP:n varaosaluettelosta(!) ML350:lle.

HPE ProLiant ML350 G5 Server – Spare Parts

“Vanhan” ML350:n emolevy on keskimmäistä lajia ja uudempi viimeistä. Koska niiden piirisarja pitäisi olla sama, on niiden eri BIOS-versiot ainoa järjellinen selitys sille, että neliytimiset prosessorit eivät toimineet vanhassa.

Xeon X5470 ei toiminut vanhemmassa ML350:ssä ja rikkoi yhden virtalähteenkin (niitä saa 20 € hintaan). ML350:ssä on mahdollisuus käyttää varavirtalähdettä ja minulla sattui sellainen olemaan, joten vahinko ei ollut suuri.
Seuraavan prosessorin valitsinkin varovaisemmin. X5460 on QuickSpecs versio 53:n (!) mukaan tuettu, mutta myös se kuluttaa 120 W, kuten X5470, joten E5440 tuntui turvalliselta ja ne toimivatkin uudemmassa ML350:ssä ongelmitta.

Toinen ongelma on muistin määrä. Se tosin on ongelmana niin pieni, että tuskin viitsin sitä tarkemmin selvittää. Kun koneeseen on asennettu toinen prosessori ja muistia on enemmän kuin 32 Gt, ilmoittaa BIOS käynnistyksen alussa, että 32 Gt on löytynyt, mutta suuremman oikean määrän BIOS setupissa. 32 Gt jää myös johonkin muistipaikkaan, jonka perusteella Linux suostuu käyttämään vain sen verran muistia. Tämä tietysti voi olla enemmänkin Linuxin ongelma, mutta kuten sanottu, en viitsi..

Kokonaiskustannukset

Oliko vanhan raudan kanssa touhuaminen kannattavaa?

Vanhan Proliantin päivittämisessä oli ajatuksena aika pitkälti sen lisähyödyntäminen. Tiedostopalvelimena se on aivan mainio ja jos siihen saisi pienellä sijoituksella aika runsaasti laskentatehoa, kannattaisi homma.

Kun “cpumarkkia” oli saatavissa noin 8 000, saa vastaavan tehoisen prosessorin halvimmillaan uutena noin satasella. On kuitenkin huomattava, että PassMark luokittelee High End CPU:ksi jo 5611 cpumarkkia saaneen. Pelkistä prosessoreista maksoin 28 €. Muita kuluja olivat 45 € muisteista ja 85 € “varaosakoneesta” sekä lisäprosessorin asennuskitistä, kaiken kaikkiaan 158 €. Tuohon ehkä pitäisi vielä lisätä 31 € turhaksi jääneen prosessorin ostosta, mutta sen voi vielä vaikkapa myydä. Siis peräti 190 €. Sillä rahalla sain lopulta ihan koko koneen sisältäen mm. 48 Gt lisää muistia, kaksi 146 Gt 15 000 rpm SAS-kiintolevyä ja kaksi virtalähdettä.

Jos en olisi ostanut melko turhaksi osoittautunutta varaosakonetta, epäsopivaa prosessoria, liikaa muistia ja olisin tiennyt BIOS-päivityksen riittävän neliydinprosessorien tukeen ja sen BIOS:nkin olisin löytänyt, olisi noin satanen säästynyt. Eikä sitä muistiakaan olisi välttämättä tarvinnut lisää, joten noin 50 € olisi riittänyt. Nyt on kuitenkin vikasietoisuutta, kun ML350:ssä itsessäänkin sitä on jo runsaasti..

HP Z600

Z600:ssakin on emolevystä kahta versiota. Minulla on vanhempi, joka tarkoittaa, että emolevylläni ei voi käyttää alkuaan kalliimpaa, mutta jälkimarkkinoilla selvästi halvempaa rekisteröityä ECC-muistia ja suurin muistin määrä prosessoria kohden on 12 Gt. Normaalissa työasemakäytössä toisen prosessorin hankinta onkin käytännössä ehdoton edellytys juuri muistimäärän takia. Se että samalla laskentateho kasvaa ja sitä voi lähes täysin hyödyntää videoiden editoinnissa on tietysti varsin hyvä asia.

Jos kyseessä on 5520-piirisarjan C2-versiolla varustettu emolevy, siihen voidaan asentaa 8 Gt rekisteröityjä ECC-muistikampoja, jolloin maksimimuisti prosessoria kohden on 24 Gt ja yhteensä 48 Gt. Vanhempi piirisarjan B3-versio ei myöskään ilmeisesti tue kunnolla 56xx-sarjan prosessoreja, joista osa on kuusiytimisiä. Z600:ssa tosin oli eräs 56xx-sarjan nopeimpia prosessoreja, mutta kun lisäsin toisen samanlaisen, ei kone enää käynnistynyt. Molemmat prosessorit kyllä toimivat ongelmitta yksin.

56xx-sarjalainen ei toiminut kuin yksin, kaksi E5540:ta oli halpa ostos ja kaksi X5570 pitäisi toimia vanhemmallakin emolevyllä.

En kuitenkaan voinut olla varma oliko toinen prosessorikanta toimiva, joten tilasin halpoja ja “turvallisia” E5540-prosessoreja Saksasta ja kun ne toimivat kunnolla, hieman kalliimpia X5570:ia San Marinosta.

Se että X5675:t eivät toimineet, oli tietysti pettymys, mutta kun X5570:ssä on yhtä nopeat ytimet, voisi 12 ytimestä viimeistä neljää hyödyntää vain hyvin rinnaistuvissa töissä, kuten 4K-renderöinnissä. Full HD -renderöinnissä ero on melko mitätön.

Kun sain E5540:llä kaksi prosessoria Z600:ssa toimimaan oli seuraava ongelma Linux, joka ei käynnistynyt. Kokeilin myös parilla eri Linuxin asennuslevyllä, koska niissä yleensä käytetään varmoja tai turvallisia käynnistysparametrejä.

Informatiivinen virheilmoitus

Googlaaminen johti lopulta APIC:n (Advanced Programmable Interrupt Controller) jäljille. Kasasin reilu 20 vuotta sitten Tyanin tuplapentiumemon ympärille koneen ja se vaati “noapic”-parametrin kernelille. Selasin sitten The kernel’s command-line parameters -listaa, kun noapic:n kanssa Linux sentään käynnistyi, mutta kaatui melkein samantien. “nolapic_timer” ([X86-32,APIC] Do not use the local APIC timer.) oli sitten loitsu, joka toimi. En tiedä miksi.

Kokonaiskustannukset

Z600 tuli yllättävän kalliiksi vanhan emolevyn takia. X5675:t kun myy, tippunee kokonaissumma kuitenkin alle 250 euron.

Väliraportti 15.4.

Vaikka X5570:t eivät vieläkään ole tulleet perille, otin Z600:n jo käyttöön. Valmistelutyönä päivitin vanhan työaseman Fedora 27:n 28:aan, koska Fedora 27:ään ei enää tahdo löytyä lähdekoodipaketteja. Kaipasin niitä yrittäessäni kääntää ffmpeg:iä ja sen kavereita NVENC-tuella. Pienellä improvisoinnilla sain kuitenkin aikaan jonkinlaiset binääripaketit, mutta projekti ei ihan onnistunut. Päätin siis lähestyä ongelmaa hieman toisin ja taistelin Fedora 28:n päivityksen dnf:llä. Suurimmat ongelmat siinä on ollut edellisillä yrityksillä työasemani melko erikoinen kokoonpano ja ehdoton vaatimus nVidian ja ZFS:n kernelin moduleille. Olin kuitenkin harjoitellut DKMS-modulien asennusta uudella Proliantilla sekä Z600:n väliaikaisella järjestelmälevyllä, joten nyt se sujui melko rutiinilla. Yhdistin tämän projektin 720 Gt SSD-levyn käyttöönottoon 240-gigaisen tilalle, jotta homma ei olisi liian yksinkertainen ja nopea.

Z600:ssa vaihtui siis näyttökortti, käyttöjärjestelmä ja kiintolevy. Vaikka olin kopioinut vanhan työaseman uudelle levylle Z600:sta Ethernet-liitännän MAC-osoitteen, en muistanut kernelin käynnistysparametria. Se tosin ei olisi riittänyt, koska samaa virheilmoitusta kuin yllä valokuvassa ei enää tullut, mutta kone kaatui hyvin nopeasti paitsi, jos BIOS-asetusten kautta sääti sen toimimaan vain yhdellä prosessoriytimellä.

Kokeilin ja epäilin vähän kaikkea, kuten nVidian ajureiden SMP-yhteensopivuutta, mutta kun seitsemännen SATA-liitynnän virheilmoitukset olivat varsin yleisiä, siirsin SSD-levyn kaapelin lisäkortilta emolevylle ja kaikki oli taas hyvin.

Kun X5570:t saapuvat, kokeilen vielä kerran, miten X5675:t toimisivat. Pakkaa kun tarpeeksi sekoittaa, voi tulla vastaan yllätyksiä. Jos yksi X5675 toimii, pitäisi myös kaksi toimia ja nyt on löytynyt ehkä juurisyy yleensäkin ongelmiin kahdella prosessorilla.

Z600:n emolevyllä on SATA 2 -liitännät, joiden nopeusrajoitus on 300 Mt/s, kun lisäkortin SATA 3:n rajoitus on 600 Mt/s ja 720 Gt SSD-levyni lukunopeus pitäisi olla melko lähellä sitä, joten joudun ehkä investoimaan myöhemmin hieman kalliimpaan korttiin..

Renderöinnin nopeus ja rinnakkaisuuden skaalautuvuus

Kun varsinkin 4K-videoiden renderöinti vaikutti olevan tuskastuttavan hidasta, oli tietysti mielenkiintoisinta, miten hyvin se skaalautuu useille prosessoriytimille, koska niiden lisääminen on helpoin laskennan nopeutuskeino.

Ennen mittaustulosten esittelyä on syytä tutustua käytettyihin prosessoreihin.

“Uudessa” Proliantissa on kaksi E5440:sta, joten sen CPU Mark -arvo on lähes 8 000 ja sen pitäisi olla lähes yhtä nopea kuin Z600:n yksi X5675. Muuten mitatut renderöintinopeudet ovat suurinpiirtein odotetunlaisia, mutta 4K-videota 5160 käsitteli yllättävän hitaasti. Full HD:la sen aika oli melko tarkkaan odotettu nelinkertainen, mutta 4K:lla kymmenkertainen. Mittasin renderöintiajan vielä toistamiseen ja tarkistin atopilla, että prosessori teki täysillä töitä, mutta tulos oli oikea. Tämä voi selittyä vain prosessorien välimuisteilla. 5160:ssa sen koko on vain 2 Mt, E5440:ssä 6 Mt ja X5675:ssä 12 Mt. Kun otan myöhemmin Z600:n käyttöön työasemakseni, ajan vielä samat testiajot nykyisellä, jonka prosessorissa on vain 512 kt välimuistia.

Kahdeksan ydintä täydessä työn touhussa.

Eräs muutettava ja tarkistettava asia renderöintiskriptien ajossa on renderöintiohjelman säikeiden määrä, jonka muutin samaksi kuin prosessorin ytimien määrä (threads=x):

# cat Kuvat/scripts/skripti004K.sh 
!/bin/sh

RENDERER="/usr/bin/kdenlive_render"
MELT="/usr/bin/mlt-melt"

SOURCE_0="file:///root/Kuvat/scripts/skripti004K.sh.mlt"
TARGET_0="file:///root/Kuvat/ML350-G5-4K-audacity_clip.mp4"
PARAMETERS_0="-pid:10687 in=0 out=3122 $MELT uhd_2160p_30 avformat - $SOURCE_0 $TARGET_0 properties=x265-medium f=mp4 vcodec=libx265 acodec=aac crf=20 ab=160k preset=faster threads=2 real_time=-1"
$RENDERER $PARAMETERS_0

Skriptin ajo näytti esimerkiksi seuraavalta:

# time sh skripti004K.sh
real 20m41,385s
user 120m8,905s
sys 0m5,085s

Tuloksesta voidaan laskea skaalautuvuus = (user + sys)/real/ydinten määrä * 100.

Ylemmässä kuvaajassa on mukana 5160, mutta alemmasta, muuten samansisältöisestä se on poistettu, jotta tasaväkisempien prosessorien ja asetusten erot näkyisivät paremmin.

Karkeasti yleistäen Full HD -videon renderöintiin kului yhtä paljon aikaa kuin sen katsomiseen normaalinopeudella, mutta 4K-videoon kymmenkertaisesti. HT tai Hyper Threading nopeutti 4K-videon käsittelyä, mutta hidasti Full HD:tä. Ytimien määrän kasvaessa HT:n edut todennäköisesti vähenevät ja kun Z600:een oli tarkoitus lisätä vielä toinen kuusiytiminen prosessori, pitäisi todella tarkkaan etsiä tapauksia, joista siitä on hyötyä.

Z600:een saa BIOS-päivityksiä vaikka ei olisikaan voimassa olevaa takuuta tai muuten maksaisi HP:lle. Spectre-haavoittuvuuden korjaavaa BIOS-päivitystä ei silti ehkä kannata asentaa, koska se hidastaa reilu 10 prosenttia. Talletin alkuperäisen BIOS:n ja luultavasti yritän palauttaa sen vaikka HP:n sivuilla väitetäänkin, että sen ei pitäisi onnistua.

HT:n käytölle melko lopullisen iskun on antanut uusi Spectren variaatio, joka voidaan estää helpoiten, kun ei käytetä HT:tä. Sen ohjelmallinen estäminen hidastaa joitakin ohjelmatyyppejä jopa 50%. Asiasta lisää artikkelissa Linus Torvalds: After big Linux performance hit, Spectre v2 patch needs curbs (Patch is causing as much as a 50 percent drop in performance in some Linux workloads.)

12 ja 16 ydintä on saatu aikaan HT:llä, mutta koska ytimen nopeus ei vaikuta skaalautuvuuteen, ei sillä ole merkitystä.

Skaalautuvuuden testaamisen kannalta HT on kuitenkin kätevä ja 4K-videon renderöinnissäkin näkyy jo selvä lasku skaalautuvuudessa 16 ytimen kohdalla. Kovin paljon yli 20 ytimen määrään tuskin kannattaa pyrkiä. Tämä tosin varmaan riippuu myös videon ja käytettyjen efektien laadusta.

Aputyöpöydälläni on jo hieman ahdasta. Kyljellään olevan vanhemman Proliantin päällä oleva 32-tuumainen TV oli aiemmin työasemani keskimmäinen näyttö ja on odottanut aputyöpöydällä sopivaa käyttöä, joka nyt tuntuu löytyneen. Prosignioissa on emolevylle integroitu näytönohjain VGA-ulostulolla ja niiden välillä valintaan minulla on systeemikytkin, johon voi liittää neljä konetta. Z600:ssa ei VGA-liitintä ole, joten sen, eli tällä hetkellä HDMI 4:n, valitsen TV:n kauko-ohjaimella. Kai TV:hen pitää laittaa antenni- ja ethernet-kaapelitkin, se kun on oikeastaan aika sopivalla paikalla ihan “normaaliin” TV:n katseluun, jota en ole juuri harrastanut lähes 20 vuoteen.

Näppäimistö on oikeastaan aika mukavan korkealla, jos seisoo, joka on aputyöpöydän luona ihan kätevä järjestely, ei tarvita tiellä kuitenkin olevaa tuolia, kun siellä nopeasti poikkeaa.

Sitten pitäisi vielä testata näytönohjaimen hyödyntäminen renderöinnissä..

Taulukkolaskenta-tiedosto, jossa on mittaustulokset, graafit ja taulukot, joita on käytetty tässä ja trilogian seuraavassa osassa, on ladattavissa tästä.