- Liittynyt
- 16.04.2017
- Viestejä
- 1 429
Joo, @hkultala voinee vetäistä jonkun näppiarvion kuinka ison osan ajasta nykyprossat odottavat dataa suoritukseen vs. aivan oikea laskenta-aika. Tämä on mielenkiintoinen alue, sillä ymmärtääkseni tuo prosessorin sisäinen odotusaika ei normi-monitoriohjelmissa näy vaan prossu voi käydä sen 100% tehokkaasti tai vähemmän tehokkaasti. Lähinnä IO-wait ja jotain käyttistason prosessinvaihtoaikoja voinee valvoa jollain tasolla.Tässä tapauksessahan kyseessä on täysin sama asia:
Ryzen toimii (hitaasti) Intel toimii (nopeasti), käskyä ei käytetä juuri yhtään missään (yhdellä shakkiohjelmalla ei ole mitään merkitystä)-> Toimii kaikilla riittävän nopeasti, ELI ominaisuudella ei ole markkinoita (tällähetkellä).
Sekä Intelin, että AMD:n tulisi kehittää nyt prossun sisäisten palikoiden välistä kommunikointinopeutta ja välimuistisysteemiä. Ne ovat tällähetkellä se asia, joilla tehdään se voittajasiru. Jollain ei missään käytetyllä hömppälisäkäskyllä ei ole mitään merkitystä. Samoin muistiohjainta kannattaa kehittää, perustuen ihan siihen, miten molemmat hyötyvät selkeästi muistin kellottamisesta.
Kun noiden IBM:n isojen koneiden kanssa on tullut myös pelailtua, niin siellä oli joskus suurempiakin tehostuksia uuden sukupolven tullessa käyttöön. Toisin sanoen uudessa koneessa kaikki oli periaatteessa mitoitettu ja laskettu vanhan koneen mitoituksille, mutta silti throughput oli selkeästi suurempi kuin vanhassa. Tätä nopeuskasvua oli hyvin vaikea jäljittää mihinkään, vaan syy oli laskentayksiköiden välisten latenssien pienenemisissä ja tehostetussa välimuistirakenteessa.
Ja niin kuin olen varmaan jo asiasta täällä meuhkannut, niin noissa isoissa IBM-koneissa pelkästään niitä prossuvälimuisteja voi olla useampia gigatavuja. Tämä näkyy sitten parhaiten skaalautuvuudessa. Kun samassa koneessa pyörii useita satoja/tuhansia virtuaalikoneita omine erillisine kuormineen, niin välimuistiarkkitehtuuri täytyy olla hyvin mietittynä. Yksi haaste perus-x86/VMware/HyperX...-virtualisoinnissa on sen kakun leviäminen horisontaalisesti niin laajalle. Yhdelle virtuaalikoneelle ei voida antaa mahdottoman paljon säikeitä tehokkuuden kärsimättä. Jotain tieteellisempää mallinnustakin on tehty kuinka horisontaalisuuden lisääntyessä softahypervisorit, vaikka hyvää työtä tekevätkin, eivät vain pysty tasaamaan niitä kuormia kovin tehokkaasti. Toisin sanoen se täytekuorma, jonka pitäisi istua tuotannon piikkikuormien sekaan tuppaa usein lämähtämään juuri sen piikkikuorman päälle, minkä takia joudutaan pitämään suhteellisen isoja kapasiteettireservejä. Toki virtualisointi on oikea tie, mutta silti isoimmissakin virtualisoiduissa palvelinfarmeissa pyöritään jossain max 60% utilisaatioluvuissa koska reservejä joudutaan varaamaan niin useaan nurkkaan. Tuo käyttämätön kapasiteetti vie kuitenkin ne samat rauta, infra-, softa- ja ylläpitokulut. Niin kauan kuin näitä farmeja rakennetaan samalla pizzalaatikkomentaliteetilla, niin tämä haaste säilyy koska laatikoiden välillä ei ole mitään välimuistiarkkitehtuuria rakennettuna. Tietty säikeiden määrä/palvelin kasvaa jatkuvasti, mikä helpottaa tilannetta, mutta tuo tietenkin omat haasteensa palvelimen omille väylille niin sisälle kuin ulos laatikosta.
Ja vielä...tätä dilemmaa on vaikea mitata geneerisesti millään nykyvälineellä. Palvelin voi suoriutua hyvinkin nopeasti yksittäisestä yhden säikeen kuormasta, hajautetusta tieteellisen laskennan kuormasta, hajautetusta tietokantakuormasta jne, mutta kun sille turautetaan sata erilaista kuormaa ajavaa virtuaalikonetta erilaisilla datalähteillä, niin pullonkauloja voi löytyä yllättävistäkin paikoista.