Bitsumin ja AnandTechin yhteistyöllä LevelOneTechs uskoo Threadripper 2990WX:n jäljellä olevien suorituskykyongelmien syyllisen olevan Windowsin kernelissä ja sen NUMA-tuessa.

AMD julkaisi viime vuonna toisen sukupolven Ryzen Threadripper -prosessorit, jotka on varustettu parhaimmillaan 32 ytimellä, jotka kykenevät SMT-teknologian avulla suorittamaan samanaikaisesti 64 säiettä. Etenkään 32-ytiminen Ryzen Threadripper 2990WX ei kuitenkaan selvinnyt kaikista suorituskykytesteistä odotusten mukaisesti.

Ryzen Threadripper -prosessoreiden suorituskykyongelmia on ratkottu jo monella taholla. AMD on julkaissut oman Dynamic Local Mode -ominaisuutensa, joka parantaa suorituskykyä useissa tilanteissa ja NVIDIA korjasi ajureistaan löytyneen ongelman, joka puolitti suorituskyvyn 32-ytimisillä, 64 säiettä suorittavilla prosessoreilla. Osa ongelmista on kuitenkin edelleen ratkomatta ja LevelOneTechs uskoo selvittäneensä mm. Bitsumin ja AnandTechin avustuksella mistä on kyse, eikä se ole monien syyttämä muistiohjainten puute kahdella sirulla, mikä varmistettiin ajamalla testejä Threadripperin lisäksi 32-ytimisellä Epyc-prosessorilla.

LevelOneTechs käsittelee Windowsin ytimestä tämän hetken tietojen perusteella löytyvää ongelmaa sekä blogissaan että YouTube-videolla. Esimerkiksi Indigo-testiohjelmassa TR2990WX:n suorituskyky on Windowsilla vain puolet tai alle Linux-versiosta, eikä Linux-version ajo Windowsin alla auta tilanteeseen, koska Windows Subsystem for Linux suorittaa kaiken edelleen Windowsin kernelillä, ei Linuxin. NUMA-tilassa myös Epycin suorituskyky on Windowsilla heikko, mutta UMA-tilassa suorituskyky vastaa Linuxia.

Prosessorin rasitusaste on kuitenkin kummallakin alustalla identtinen 100 % riippumatta suorituskyvystä, joten Windowsilla prosessori hukkaa johonkin merkittävän osan suoritusajastaan. Tarkempien tutkimusten jälkeen syylliseksi paljastui Windows, joka merkitsee Indigon säikeet ideal_cpu-tagilla käynnistyksen yhteydessä. Jos käytössä on maksimissaan kaksi NUMA-noodia, kaikki toimii kuten pitää ja ideal_cpu-tagi syntyy edelleen, mutta säikeet löytävät kotinsa kummankin NUMA-noodin sisältä.

Kun NUMA-noodeja on yli kaksi, rupeaa Windows noudattamaan ideal_cpu-tageja ja säikeet pyritään saamaan vain yhden NUMA-noodin sisälle, jolloin Windows käyttää puolet prosessoriajasta siirrelläkseen säikeitä ytimiltä toisille. Yksi ratkaisu bugiin on ottaa ensimmäinen prosessoriydin pois ohjelman käytöstä, kun ohjelma on jo päällä, jonka jälkeen Windows jättää ilmeisesti jälleen ideal_cpu-tagit huomiotta. Ohjelman käytöstä poistetun ytimen voi ilmeisesti myös ottaa takaisin käyttöön ilman, että suorituskyky putoaa uudelleen, mutta sama kikka on toistettava joka kerta, kun ohjelmaa käytetään.

Bitsum on näiden löydösten myötä päivittänyt CorePrio-ohjelmaansa NUMA Dissociater -ominaisuudella, joka pyrkii automaattisesti tunnistamaan edellä kuvatun ongelman ja korjaamaan sen, ilmeisesti käyttäen juuri yllä kuvattua metodia. Indigon lisäksi vastaavaa ongelmaa esiintyy myös muilla sovelluksilla ja esimerkiksi 7zipin suorituskyky nousee CorePrion korjauksen avulla peräti 70 % noin 41 000 MIPS:sistä noin 70 000 MIPS:iin.

Mikäli LevelOneTechsin johtopäätökset ovat oikeita, voidaan toivoa Microsoftin päivittävän kerneliään tarpeellisilla muutoksilla ongelman ratkaisemiseksi lähitulevaisuudessa.

Lähde: LevelOneTechs, Bitsum CorePrio

This site uses XenWord.