Compilar amb -j2 o no

Aquí a l’Euskal Encounter (Barakaldo-Bilbao) en Fran li comentava al Jordi que per què no compilava amb -j2.

El -j2 el què (molt per sobre) és llençar dos gcc’s en paral·lel. És a dir, el make llença dos gcc’s per intentar anar més ràpid.

És de sentit comú que no va exactament al doble de ràpid: l’entrada/sortida de disc no és prou ràpida (o s’intenta accedir a la vegada), no sempre en qualsevol moment es poden llençar dos processos (perquè hi ha dependències), els processador multi-core tampoc van, penso, exactament igual que dos processadors, la memòria RAM és la mateixa, etc. etc.

He compilat 4 vegades el Kernel, enganxo els resultats (mentre compilava feia altres coses):
time make bzImage
real 7m22.184s
user 6m13.111s
sys 0m33.118s

time make -j2 bzImage
real 5m0.321s
user 7m49.701s
sys 0m39.302s

time make bzImage
real 7m35.946s
user 6m51.154s
sys 0m36.722s

time make -j2 bzImage
real 4m50.403s
user 7m51.821s
sys 0m40.007s

És a dir, sense el -j2 uns 7min 30 seg. de promig, amb -j2 uns 4min55seg. de promig. No és el doble de ràpid però força millor que el què havia pensat jo.

El processador és un “Genuine Intel(R) CPU T2400 @1.83GHz” am dos cores, a un portàtil IBM Thinkpad.

Potser amb -j3 encara aniria un pel més ràpid…

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>