Als een processor bijvoorbeeld twee cores heeft, is hun gezamenlijke capaciteit namelijk slechts 60 tot 70 procent van wat ze potentieel samen kunnen leveren.
Ik vraag me af waar die 60 a 70% vandaan komt. Ik heb even een testje gedaan op mijn core duo quad. Ik heb de linux kernel gecompileerd, op 1 core en op 4 cores te gelijk. Ik verlies slechts 6% met 4 cores en dus niet 30 a 40%. Data:
- 1 core: real 5m22.479s, user 5m3.757s, sys 0m41.597s
- 4 cores: real 1m40.506s, user 5m35.635s, sys 0m52.120s
De belangrijkste tijd is
user dit geeft de tijd aan die werkelijk besteed is aan het compileren en niet aan andere zaken.
real is de werkelijk verlopen tijd, en dus veel korter als meerdere cores tegelijk worden gebruikt. Deze test heb ik meerdere keren herhaald met steeds gelijkwaardioge resultaten, dit om externe invloeden op het systeem te minimaliseren.
Hoe kom ik nu aan mijn 6% verlies?
(5 min 35.635s - 5min 03.757s) / 5 min 35.635s * 100%
32 sec / 5 min 35.635s * 100% = 5.95%
Dus de capaciteit is 94% !!! en niet 60 a 70%....
Is de Intel Core Duo zo goed, is mijn berekening fout of basseert het artikel zich op foute data?
Jij hebt een Core 2 Quad, Geen Core Duo Quad. Uitleg:
Core: Merknaam, net als Pentium en Athlon
2: Serie, net als de Pentium 4 en Athlon 64
Duo/Quad: Cores, Net als Pentium4 D en Athlon X2 en Phenom X4.
Verder bedoelen ze de efficientie lijkt me over het algemeen. Want de performancewinst in games ligt volgens mij een stuk lager bijvoorbeeld terwijl je uitgaat van 100% * 2 Cores is 200%.
Ik weet neit hoe ik die data van jou moet lezen, maar ik ga ervanuit dat Real je echte tijd is geweest. We stellen dus dat 5m22 100% is. Dat zijn dus 322 seconden. Als je 4 cores hebt stellen we dat deze ook 4x zo snel is: 80,5 sec. 1m40 is dus 100 seconden. Dus presteerd hij 20% minder dan verwacht.
[Reactie gewijzigd door GENETX]
Nee, de Real tijd is de werkelijke verlopen tijd, inclusief systeem en andere taken. Om echt te vergelijken moet je de user tijd gebruiken zoals ik gedaan heb.
Jij hebt een Core 2 Quad, Geen Core Duo Quad.
Je hebt helemaal gelijk, ik heb een Core 2 Quad.
Zoals GENETX boven mij al zegt gaat het niet slechts om het compileren van een linux kernel maar over multi-tasken in het algemeen. Er zijn héél wat meer dingen waarvoor je je cores kunt inzetten. Denk aan RAR'ren, gamen, photoshoppen, etcetera. Dat compilers een hoge efficiëntie halen (en dus goed opschalen) zegt niets over de efficiëntie in games. Vaak is het zo dat je 1 'main thread' hebt die heel zwaar is, en de rest laten ze over aan de overige cores (multi-threaded), maar vaak zijn die threads gewoon een stuk lichter waardoor de 60 à 70% heel goed mogelijk zou zijn.
Sterker nog, 60 à 70% is voor games nog vrij veel, vaak zie je maar schamele performance winst bij single-core -> dual-core bij games. Taken die goed opschalen zijn dingen die je parallel kunt uitvoeren zoals het bewerken van video's, daar kun je de cores om de beurt 1 frame laten berekenen. Dingen die niet-zo-parallel gaan zoals de threads in games bijvoorbeeld, schalen veel minder op.
Kun je a.u.b. aangeven hoe je tot deze resultaten gekomen bent c.q. hoe je de test gedaan hebt?
Vermoedelijk met iets als:
~$ time ./testje
Waarbij time een standaard linux tooltje is en 'testje' een shell script met de uit te voeren commando's. (waarschijnlijk gewoon 'make something-something'. In debian: make-kpkg clean
fakeroot make-kpkg --revision=custom.1.0 kernel_image
Zoals DogMatic515 aangeeft met het time commando. Het aantal CPU's selecteer ik met de optie -j bij make.
Voor single core de optie -j1. Waar door alleen maar een core of processor wordt gebruikt.
make clean && time make -j1
Voor alle 4 cores:
make clean && time make -j5
Ja -j5, want dan kan je net iets meer performance krijgen dan met -j4. Meer dan 5 geeft alleen maar extra overhead. En maakt het geheel langzamer.
De make clean is om de oude gecompileerde resultaten eerst weg te gooien.