@Jalmos ja
@ruuskil tässä vähän taustaa tuohon prosessoriasiaan:
Prosessorin sisällä asiat etenevät säikeiden varassa. Yksi yhdin ajaa kahta säiettä. Säikeiden käytöllä saadaan erilaisten viipeiden johdosta yhdestä ytimestä enemmän "tehoa" eli kun toisessa säikeessä odotellaan jotain niin toista säiettä ajetaan. Lisäksi yhden ytimen sisältämiä sisäisiä osakokonaisuuksia (ALU,CU...) voidaan käyttää yhtäaikaa kahdelle säikeelle. Tällä järjestelyllä saadaan suorituskykyä noin 1,3 kertaa ytimien määrä. Tuo noin 1,3 on riippuvainen ajettavasta koodista sekä prosessorin sisäisestä rakenteesta.
Käyttöjärjestelmän ajojärjestelijä tuuppaa ajossa olevien ohjelmien säikeitä suoritettavaksi rautatason ohjelmakerrokselle (HAL), joka lopulta yrittää saada työjonossa olevat säikeet jakaantumaan tasan käytössäolevien ytimien kesken.
Eli jos on loputon suo "laskettavaa", niin 1,3 x ytimien määrä on käytännön suorituskykymaksimi mitä itse prosessorista saadaan irti. Suoritettavan koodin rakenteesta riippuen tuo kerroin voi vaihdella 1 ... 1,6.
Tämä suositus CPU laskentaan, säikeet - 1, saa aikaan sen, että varmasti saadaan prosessorista maksimitehot irti ja tuo -1 tuossa, antaa jotain mahdollisuuksia myös GPUlle. Lisäksi siellä ajossa olevien säikeiden joukossa pyörii myös kaikki muut käynnissä olevat ohjelmat sekä myös itse käyttöjärjestelmä omine säikeineen.
Task Manager / CPU kertoo ajossa olevien prosessien ja säikeiden määrän. Minulla on nyt yli 3200 säiettä ajossa, kun kirjoitan tätä Notepadillä ja taustalla on muutama sivu selaimessa avoinna + outlook. Nuo yli 3200 säiettä on siis sen HAL järjestelijän ongelmana sovittaa tämän Xeonin 4 ytimen 8 säikeeseen ja hyvinhän ne sopivat kun, kuormitus on 3%. Task Managerin CPU kuormitus ei kerro itse ytimien kuormituksesta vaan loogisten prosessoreiden näennäiskuormasta. Kun siellä näkyy 60...70% kuormitus, niin silloin itse prosessori on jo tapissa.
Eli jos CPU=ytimet, niin CPU laskennan käytössä on 100% itse ytimien laskentatehosta ja noin 0,3 x jää vielä GPUn ja käyttöjärjestelmän käyttöön. Jos mennään CPU=Säikeet-1, niin CPU laskennan omat säikeet (loputtomat suot) tappelevat keskenään prosessoritehosta ja sinne vielä GPU ja käyttöjärjestelmä vaatimaan omiaan.
Siis kaikkihan toimii oikein, ei siitä ole kyse, mutta yksittäisen säikeen sisällä suoritusaika kasvaa kun se joutuu odottamaan ytimen sisäisiä vapautumisia.
... Samaan aikaan, kun tein tiputuksen kesken workunitin laskennan, tuli ilmoitus: "Changed SMP threads from 12 to 10 this can cause some work units to fail".
Kesken workunitin laskennan ei laskentasäikeiden määrää voi muuttaa, sillä laskentaan tullut paketti itsessään on muotoiltu käytössäolevien säikeiden perusteella.
Oikea tapa on Finish - poista CPU - lisää uusi CPU halutulla säiemäärällä, käynnistä laskenta.
P.S.
Täällä on käsi pystyssä, syyllinen teamin pistepudotukseen löytyy täältä, olen matkoilla pari viikkoa ja kun olen "marjanpoimija", niin ei ollut sydäntä jättää kahta konetta yksin pyörimään. Toisessa n. 500W lämmittää muutamaa fingerporillista (tilavuusyksikkö) vettä ja toisessa yritetään puhaltamalla saada vastaava n.500W lämpökuorma pois.