Make - j, kompilerings trubbel.

Permalänk
Medlem

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.

Visa signatur

Ryzen 5800x @ 32gb 3200mhz @ 7tb ssd @ 3060ti Fractal r5 @ Arch
i5 4670k @ 24gb 1600mhz @ Fractal r3 @ 12tb ZFS @ Truenas Scale
Thinkpad T450 @ i5 5300u @ 16gb @ 512gb ssd @ 24+48wh batteri @ Debian

Permalänk
Medlem

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).

Permalänk
Medlem
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.

Visa signatur

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

Permalänk
Medlem

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.

Permalänk
Medlem

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.