Make - j, kompilerings trubbel.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Aug 2007

Make - j, kompilerings trubbel.

Hej
Min uppfattning är att - j representerar antal trådar kompilatorn kan köra samtidigt, även om vissa inte håller med, finns flera diskussioner om detta om man söker. Vad jag undrar över är: när jag kompilerar Linux från kernel.org så fungerar - j fint så länge jag använder en udda siffra, medans den bara slutar kompilera utan felkod om jämn siffra används.

-j 9 11 13 15 fungerar
-j 10 12 14 16 så på olika ställen varje gång avbryts kompileringen utan felkod.

Hjälp mig förstå! Gäller 8kärnig ryzen med 16 trådar.

Ryzen 1700x @ Corsair 16gb 3200mhz lpx @ 512gb M2 pcie @ Gigabyte 7950 @ Msi x370 plus @ Evga 650 80+gold modulärt @ Fractal r5 @ Corsair hydro 110i @ Benq 144hz 1920-1080 24tum
i5 4670k @ Asus z-87a @ Corsair vx450 @ Corsair 16gb 1600mhz @ Fractal r3 @ 256gb Kingston
c2d e4400 @ 4gb noname @ 10tb+ @ noname chassi @ 128gb Kingston ssd

Trädvy Permalänk
Medlem
Registrerad
Sep 2010

Har inte någon ytterligare information om fenomenet du upplever, jag brukar sätta MAKEFLAGS till "-j$(nproc)" och sen funderar jag inte mer på det, inte stött på patrull på sättet du beskriver. Har också en Ryzen (1700).

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Nov 2004
Skrivet av sleepyoh:

Hej
Min uppfattning är att - j representerar antal trådar kompilatorn kan köra samtidigt, även om vissa inte håller med, finns flera diskussioner om detta om man söker. Vad jag undrar över är: när jag kompilerar Linux från kernel.org så fungerar - j fint så länge jag använder en udda siffra, medans den bara slutar kompilera utan felkod om jämn siffra används.

-j 9 11 13 15 fungerar
-j 10 12 14 16 så på olika ställen varje gång avbryts kompileringen utan felkod.

Hjälp mig förstå! Gäller 8kärnig ryzen med 16 trådar.

Upplever du samma problem med något annat projekt som du kompilerar?
Minns jag inte fel så är utskrifterna från kernel-kompileringen oftast tillsnyggade så man inte ska behöva se varenda liten pryl som händer.
Då är det ju möjligt att något felmeddelande inte skrivs ut på skärmen.

När jag kompilerar Dolphin (wii-emulatorn) på min rigg så får jag minnesbrist om jag kör med alla 16 trådar, verkar inte ha med udda/jämnt antal trådar att göra i mitt fall dock. Du kanske får något liknande fel? Det felmeddelandet skrivs inte med röd text som andra fel utan vanlig text och så avbryter den.

WS: MSI B350M Mortar | AMD Ryzen 7 1700 | PH-TC14PE | 32GB DDR4 3000MHz | 120GB Intel 530 | 2*500GB HDD | Asus R9 290X DCU2 4GB | 2*LG W2242PE
Router: Gigabyte GA-870-UD3 | AMD Phenom II x6 1055t @ 2600MHz, 1.25V | 12GB DDR3 | 2*250GB HDD @ RAID1 | 2TB HDD
Laptop: Thinkpad X220 4291-QF6

Trädvy Permalänk
Medlem
Registrerad
Feb 2015

make -j styr max antalet parallella jobb som får köras. (Default är 1.) Dvs använder man -j flaggan kan make kompilera flera filer samtidigt.
Det är långt ifrån alla makefiler som är så pass välskrivna att -j fungerar felfritt på dem, men linux kerneln skall gå att kompilera med -j.

Som nämnts så visar linux normalt minimalt med felmeddelanden av olika slag. Lägg till "V=1" till make så skall den visa betydligt mer.

Det finns ingen självklar anledning till varför det skulle funka med vissa värden som argument till -j och inte med andra. Det är en bug någonstans, men att hitta exakt var kan vara mycket krångligt.

Under tiden så är det generella rådet att om make -j krånglar, så använd inte -j flaggan.

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2008

Låter som om du stött på Ryzens halt bug eller stall bug beroende på vad man vill kalla den. Symtomen är att en kärna plötsligt slutar exekvera kod och program fryser.

Mer info:
https://www.phoronix.com/forums/forum/hardware/processors-mem...

Matt Dillon är huvudutvecklaren för DragonFly BSD.