Hyperthreadingilla CPU % puolet pienempi pelattaessa

  • Keskustelun aloittaja Keskustelun aloittaja EmDzei
  • Aloitettu Aloitettu
Liittynyt
21.04.2018
Viestejä
449
Intelin i7-7700, nVidian GTX 1080 (2560x1440) ja pelinä Wreckfest.
Hyperthreading OFF ja hyperthreading ON.

Säikeistyksen ollessa päällä on CPU kuorma puolta pienempi.

Huomaa se, että videota nauhoitettaessa (nVidian ohjelmalla) CPU % oli hieman korkeampi kuin pelattaessa. Loppuvideon kuvat kuvastavat parhaiten todellista pelitilannetta.

Hämmästelen tätä suurta eroavaisuutta. Prossan lämmöt ovat kummassakin tilanteessa samat. Samoin tehon syöttö. Luulin, että ilman säikeistystä saisin väheisemmän prosessorikuorman ja jopa alhaisemmat lämmöt. Kuin myös kuvittelin, että säikeiden siirtymisen puuttumisena prosessorin tilavaihtelut olisivat nopeammat. Ja ajattelin myös, että pelithän käyttävät pääasiassa vain yhtä prosessoria. Korkeintaan kahta.

Mitä tässä siis oikeasti tapahtuu?

Parhaiten asia käy ilmi nopeasti kyhäämälläni YouTube-videolla.




YouTube-video

Hyperthreading OFF.jpg
HyperThreading OFF

Hyperthreading ON.jpg
HyperThreading ON
 
Hyperthreadinghan tarkoittaa käyttöjärjestelmän näkökulmasta, että "ytimiä" on mukamas tuplasti enemmän kuin aiemmin. Jos niille ei keksitä järkevää käyttöä, niin käyttöjärjestelmän näkökulmasta kuorma on tosiaan aiempaa pienempi. Ilmeisesti näytönohjain on tässä se jarruttava tekijä keskimäärin.

En katsonut videota, vaan ainoastaan nuo kuvat.
 
Säikeistyksen ollessa päällä on CPU kuorma puolta pienempi.
Afterburnerista jos asettaa pelkän CPU usage näkymään, niin se on keskiarvo.
Tällöin säikeiden tuplaantuessa kuorma puolittuu täysin loogisesti, yksi 90% säie jaettuna kahdelle säikeelle on keskiarvona 45% vaikka oikeasti säikeiden jakautuminen voi olla vaikka 80% ja 10%.
Toinen esimerkki voisi olla, että ilman HT:tä kaikki neljä säiettä 100% -> keskiarvo 4x100/4 = 100%, HT:n kanssa 4 säiettä 100% + 4 säiettä 0% -> keskiarvo 4x100/8 = 50%.

Hämmästelen tätä suurta eroavaisuutta. Prossan lämmöt ovat kummassakin tilanteessa samat. Samoin tehon syöttö. Luulin, että ilman säikeistystä saisin väheisemmän prosessorikuorman ja jopa alhaisemmat lämmöt
Koska HT luo vain loogisia ytimiä, niin todellisen kuorman ollessa sama myös lämmöt ja tehonkulutus pysyy samana.
En aivan pysy perässä, että miten HT disabloimalla voisi kuormaa ja lämpöjä laskea?

Ja ajattelin myös, että pelithän käyttävät pääasiassa vain yhtä prosessoria. Korkeintaan kahta.
Kuvistasi huomaa, että HT päällä kaksi säiettä on korkeammalla kuin muut, yksi aivan näiden perässä ja muille on sitten tasattu todennäköisesti jotain oheiskuormaa vrt. ilman HT:tä, joten voidaan sanoa että Wreckfest hyödyntää ainakin kahta ydintä.
Jotkut modernit pelit hyödyntävät reilustikin enemmän kuin kahta säiettä, joten suositus pitää HT päällä. Jo ihan senkin vuoksi, että näissä peleissä, jotka ei hyödynnä yli kahta tai neljää voidaan järjestelmän muuta toimintoa tasata lopuille säikeille.
 
Käyttöjärjestelmiin on tehty jokaista suoritinperhettä varten optimoinnit, että käyttöjärjestelmä voi jakaa suoritusaikoja tasaisemmin oikeille ja loogisille ytimille. Loogiset ytimethän eivät oikeastaan hidasta menoa, koska prossun laskentayksikkö ei tee mitään silloin, kun se odottaa vaikkapa muisteilta dataa, jolloin pipelinessa oleva "looginen threadi" menee ajoon.

Huonosti selitetty ylhäällä:
"Pipeline selitettynä"


"maallikolle selitetty HT"
 
Nautinto lukea päteviä vastauksianne. Kiitos!

Säikeistyskokeiluni (HT) lähti liikkeelle testakseni balanssia juuri prossan ja näytönohjaimen välillä. Ts. onko jompi kumpi pullonkaula 1440p resoluution pelaamiselle; vai teenkö minäkin io-Techin tapaan diilin Jimm'sin kanssa.

Jostain olen ollut lukevani säikeistyksestä sitä, että etukäteislaskennan eli ennustuksen mennessä pieleen, aiheutuisi siitä viivettä. Lämmöntuoton taas päättelin ihan vain siitä, että kun prossassa tapahtuu enemmän asioita, voisi se käydä lämpimämpänä. End of MuTu. Siksipä kokeilin asiaa ihan itse ja ilman HT:ia. Balanssi CPU:n ja GPU:n välillä oli tasaisempi ilman HT:ia kuin luulin. HT:n kanssa prossan kuormitus oli vain ~32 - 40 %. Video oli hieman vääristävä, mutta suuntaa antava, koska tallensin samanaikaisesti peliä nVidian GeForce Experince ohjelmalla 2560 x 1440 @ 60 fps resoluutiolla ja näytteytyksellä.

MSI Afterburnerin avulla olen haarukoinut pelikohtaisesti sen fps lukeman suhteessa graafisiin karkkeihin, jota 165 hertsin monitorini osaa. Wreckfestissä säätöä saa nopeimmin aikaan ottamalla pois tai pudottamalla varjostusta ja ruohoa. Hämmästyin tässä testissäni sitäkin, että laittaessani nVidian Ohjauspaneelista pystytahdistuksen (VSync) "käytössä" asetukseen, näytti siltä, että GPU kävi viileämpänä kuin tykittäessään ilman rajoja. 165 - 200 fps riittää minulle ko. pelissä ihan mainiosti. Pelistä tietenkin VSync pois päältä.

(Näytönohjaimena minulla on MSI:n GeForce 1080. Omasta mielestäni käy turhan lämpimänä. 82 - 88° C. Vaihdoin tahnat n. 2 kk sitten. Kotelona on Lenovon Cube, niin ehkä tästä syystä kovat lämmöt..)
 
Joo, ennustuksen mennessä pieleen tulee lisää viivettä. Ennustus menee kuitenkin tarpeeksi usein oikein, jotta kokonaissuorituskyky jää kuitenkin plussalle, ts edut ajavat haittojen yli.
Jos tosiasiallinen kuorma ei muutu, niin ero virrankulutuksessa HT päällä ja ilman HT:ta on minimaalinen. Jos taasen HT päällä pystytään tekemään enemmän laskuja kuin ilman sitä, niin sitten virrankulutus kasvaa.

Tottakai vsync päällä kortti rasittuu vähemmän. Jos se normaalisti laskee esim 250 ruutua sekunnissa, mutta sen ei tarvitse synkki päällä laskea kuin 165 ruutua sekunnissa, niin se tekee noin kolmanneksen vähemmän töitä per sekuntti. Tämä voi tarkoittaa että kortti toimii alhaisemmilla kellontaajuuksilla ja jännitteillä, tai vaikka nämä ei laskisikaan, niin dynaminen virrankulutus kuitenkin laskisi. Nykykortit todenäköisesti myös osaavat laittaa osan laskentayksiköistä idleen kevennetyllä kuormalla, vaikka monitorisoftat eivät tätä näekään.
 
Tämä voi tarkoittaa että kortti toimii alhaisemmilla kellontaajuuksilla ja jännitteillä, tai vaikka nämä ei laskisikaan, niin dynaminen virrankulutus kuitenkin laskisi. Nykykortit todenäköisesti myös osaavat laittaa osan laskentayksiköistä idleen kevennetyllä kuormalla, vaikka monitorisoftat eivät tätä näekään.

Arvioisin että kellotaajuudet itseasiassa todennäköisemmin nousee. Näytönohjaimissa on sekä virta- että lämpölimitit jollain aikaikkunalla. Nyt kun kokonaiskuorma tippuu, niin voidaan se vähempi laskettava tavara rallatella paremmin korkeilla kelloilla kun nuo virta- ja lämpörajat ei hakkaa vastaan niin pahasti kuin isolla kuormalla. Kuorman puuttuessa tietysti tiputetaan kelloja idleen, mutta pelissä todennäköisesti sitä laskettavaa tulee sen verran tasaisella tahdilla että käytännössä mennään isommilla kelloilla.

Mutta joo, ihan looginen tulos alkuperäisessä "ongelmassa". Eli jos näytönohjain rajoittaa menoa, niin prossulla on joka tapauksessa sama määrä laskettavaa, mikä vaan jakautuu HT:n ansiosta tuplamäärälle threadeja.
 
HT:n kanssa CPU-käyttöaste ei anna kovin hyvää kuvaa todellisuudessa käyttämättä jääneestä laskenta-ajasta. Jokainen ydin saattaa porskuttaa 100% ajasta vaikka ilmoitettu CPU usage on jossain 50-100% välillä. Oraclella on tästä ihan hyvä kirjoitus.

 

Statistiikka

Viestiketjuista
261 522
Viestejä
4 539 128
Jäsenet
74 817
Uusin jäsen
pepponen

Hinta.fi

Back
Ylös Bottom