Chromium build time

Fórumok

Aki gentoon szokott chromium-ot buildelni, az megosztaná, hogy milyen procin, mennyi maggal, mennyi idő alatt végez vele? Az idő elég sac/kb is, nem fontos tűpontosan.

Persze, ha gentoosokon kívül más is szokott chromiumot fordítani, az is jöhet.

Hozzászólások

Szerkesztve: 2024. 05. 06., h – 14:29

dell7490 ~ # genlop -t chromium

 * www-client/chromium

     Tue May 30 20:48:35 2023 >>> www-client/chromium-113.0.5672.126
       merge time: 10 hours, 31 minutes and 12 seconds.

     Fri Jun  2 06:20:00 2023 >>> www-client/chromium-113.0.5672.126
       merge time: 14 hours, 30 minutes and 34 seconds.

     Sat Jun 24 19:08:20 2023 >>> www-client/chromium-114.0.5735.133
       merge time: 17 hours, 40 minutes and 11 seconds.

     Mon Jul  3 05:18:56 2023 >>> www-client/chromium-114.0.5735.198
       merge time: 17 hours, 56 minutes and 44 seconds.

     Tue Jul 25 22:19:24 2023 >>> www-client/chromium-115.0.5790.102
       merge time: 10 hours, 30 minutes and 32 seconds.

     Sun Aug  6 08:18:24 2023 >>> www-client/chromium-115.0.5790.170
       merge time: 15 hours, 1 minute and 54 seconds.

     Sat Aug 19 08:01:28 2023 >>> www-client/chromium-116.0.5845.96
       merge time: 15 hours, 25 minutes and 17 seconds.

     Mon Sep  4 04:42:05 2023 >>> www-client/chromium-116.0.5845.140
       merge time: 15 hours, 8 minutes and 16 seconds.

     Fri Sep 15 13:17:58 2023 >>> www-client/chromium-116.0.5845.187
       merge time: 23 hours, 41 minutes and 15 seconds.

     Mon Oct  9 08:06:06 2023 >>> www-client/chromium-117.0.5938.149
       merge time: 16 hours, 35 minutes and 37 seconds.

     Wed Nov  1 03:50:39 2023 >>> www-client/chromium-118.0.5993.88
       merge time: 16 hours, 22 minutes.

     Sat Nov  4 22:48:43 2023 >>> www-client/chromium-118.0.5993.117
       merge time: 1 day, 8 hours, 31 minutes and 48 seconds.

     Mon Nov 20 11:33:24 2023 >>> www-client/chromium-119.0.6045.105
       merge time: 17 hours, 47 minutes and 31 seconds.

     Sat Dec  2 19:32:36 2023 >>> www-client/chromium-119.0.6045.199
       merge time: 16 hours, 5 minutes and 54 seconds.

     Sat Dec 16 04:38:10 2023 >>> www-client/chromium-120.0.6099.109
       merge time: 15 hours, 56 minutes and 25 seconds.

 

dell7490 ~ # genlop -t ungoogled-chromium

 * www-client/ungoogled-chromium

     Sat Dec 23 15:07:02 2023 >>> www-client/ungoogled-chromium-119.0.6045.199_p1
       merge time: 16 hours, 28 minutes and 55 seconds.

     Sat Feb 10 11:16:26 2024 >>> www-client/ungoogled-chromium-121.0.6167.160_p1
       merge time: 17 hours, 27 minutes and 14 seconds.

     Mon Feb 19 18:25:55 2024 >>> www-client/ungoogled-chromium-121.0.6167.184_p1
       merge time: 18 hours, 27 minutes.

     Sun Mar 24 19:17:21 2024 >>> www-client/ungoogled-chromium-122.0.6261.111_p1
       merge time: 18 hours, 21 minutes and 10 seconds.

     Thu Mar 28 09:50:44 2024 >>> www-client/ungoogled-chromium-122.0.6261.111_p1
       merge time: 18 hours, 18 minutes and 31 seconds.

 

dell7490 ~ # equery u ungoogled-chromium | grep "+"

+X
+bluetooth
+clang
+cups
+l10n_en-GB
+l10n_hu
+official
+proprietary-codecs
+pulseaudio
+qt5
+screencast
+system-harfbuzz
+system-icu
+system-libevent
+system-libusb
+system-openh264
+system-png
+system-zstd
+vaapi
+wayland
+widevine

 

i7-8650U (HT: on, Turbo Boost: off)
2x8 GB DDR4-2400

Ahol ~10 óra a build time, ott be volt kapcsolva a Turbo Boost. Túl meleg (70-80˚C) és hangos volt.
Ahol 18 óra feletti, ott fordítás közben sleepben lehetett a gép.

 

dell7490 ~ # grep -v "# " /etc/portage/make.conf

COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"


LC_MESSAGES=C.utf8

MAKEOPTS="-j8"

GENTOO_MIRRORS="https://mirror.bytemark.co.uk/gentoo/"

VIDEO_CARDS="intel"

L10N="en en-GB hu"

ACCEPT_LICENSE="-* @FREE"

 

dell7490 ~ #  grep -i "flags" /etc/portage/package.use

*/* CPU_FLAGS_X86: aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3

(cpuid2cpuflags)
 

Egyébként ha kifejezetten csomagok fordításához keresel CPU-t, a Gamers Nexus YouTube csatornán minden tesztnek a része a Windows (MSVC) alatt fordított Chromium. Esetleg https://openbenchmarking.org (itt általában kisebb csomagok fordításáról van info).

Attól függően, hogy mire akarod használni, érdemes lehet a QtWebEngine-t (ill. erre alapuló böngészőt) is fontolóra venni. 80-as körüli Chromiumon alapszik ennek a motornak a legújabb verziója, némi hibajavítással.
Ez - a Chromiummal ellentétben - még tartalmazza jumbo-build flaget, így kb. fele-negyede időt vesz igénybe a fordítás (a fenti konfigurációval kb. 4-5 óra).

Régebben a Chromium is hasonló idő alatt fordulhatott, bár szvsz. már akkor is előnyben részesítették a futásidőben adott teljesítményt a fordítás sebességével szemben. Valahol ez jogos, ha figyelembe vesszük, a felhasználók milyen csekély hányada fordítja forrásból.
Vö. a Firefox vagy a LibreWolf pl. 1-1,5 óra alatt lefordul szintén a fenti gépen. Igaz, ezekkel egy YouTube böngészése, vagy Google Street View-n való navigálás elég kínkeserves tud lenni, 3. és 8. generációs Intel laptopon is, míg a Chromiummal mindkettő gépen kényelmesen használható.
Persze bele lehetne menni, hogy ez mekkora részben valós plusz optimalizáció, és mekkora részben szándékos lassítása ill. dokumentálatlan funkcionalitás kiaknázása a vetélytársakkal szemben.

Szerencsére nem kényszerülök túl gyakran ezeknek az oldalaknak a látogatására úgy, hogy nincs hozzá alternatív front-end (pl. Invidious, NewPipe).

Nagyon függ a hardvertől. Az erősebb mai procik, 8-16 magon, 32-64 giga RAM-mal, elszüttyögnek rajta 1-2 órát, ennek alapján kezdd el kalkulálgatni, hogy neked mennyivel kevesebb mag, RAM van. Az se árt, ha SSD-ről megy a fordítás, tud rajta segíteni. Az is sokat tud rajta dobni, ha a prociban minél több cache van, ebben a műfajban, a Threadripperek meg a Ryzen X3D procik a legjobbak.

Iszonyat lassú. Én Gentoo alatt még pár éve egy régi ThinkPad X220-on forgattam Firefoxot, ami hangyányit soványabb (relatív, mert ez is megabloat), kevesebb kódsor, de még az alatt is nagyon nyögött 12 kínkeserves órán át a 2 mag 4 szálas i7-2620M és i5-2520M is, pedig meg volt támogatva 16 GB dual channel RAM-mal, meg fél terás SATA3 SSD-vel, és azóta eltelt pár év, tovább híztak a böngészők. Kín kivárni egy régebbi gépen, ha csak nem muszáj, ne nagyon forgasd kódból, van hozzá bináris csomag. Ha kódból forgatod, akkor nem csak hogy hosszú a fordítási idő, de minden frissítésnél, meg olyan csomag emerge-énél, ahol érintett feature miatt a Chrome is újrafordul rendszeresen, tökön fogod szúrni magad.

Van még jó pár, a legdurvább, amiről olvastam, és ki sem tudtam várni, az a SageMath matekszoftver, az régebbi genes, 2-4 magos Core i-ken ilyen 24-48 óra alatt fordulnak le. De van még pár nagyobb, lassan leforduló csomag, amivel Gentoo-n rendszeresen találkozni fogsz, mesa például, de konfigtól, forgatott modulok és driverek számától függően a Linux kernel se röpke, de azért az kibírható 10-20 percnél nem szokott több lenni egy nem teljesen elavult gépen.

Sajnos nagy baj, hogy a böngészők ilyen bloatak, hatalmas, sok gigás, sok millió kódsoros kódbázis, ezek lényegében sandboxolt OS-ek már. Akkora szörnyszülött kódbázis, hogy az isten fejlesztői gépe se elég alá, és hiába tolják buildszerverről, a fejlesztőnek is kell néha forgatnia a gépén. Plusz ekkora gigászi kódbázist már csak az AI tud egészében tesztelni, debugolni, ember ezt már nem tudja áttekinteni. Ez tökéletesen szembe megy a fenntarthatósággal. Itt nem az a baj, hogy combos hardver kell a futtatáshoz, de a fordítással, fenntartással is megszivatnak vele mindenkit, akinek nem NASA szuperszámítóge van a forgatáshoz, a paksi atomerőműre kötve. A legnagyobb tragédia, hogy a folyamat csak eszkalálódik, a kódok egyre híznak, nem állnak meg a növekedésben, meg pl. egyre több minden Rust-ban van írva, ami még lassabban fordítja az azonos kódmennyiséget, mint egy jól optimalizált C++ fordító.

Épp ezért röhögök hajbazeren, mikor sír, hogy a futtatáshoz nem elég az ősi gépe, javasolni szoktam, hogy akkor a forgatást próbálja ki, mert amíg azt legalább egyszer nem csinálja meg, nem lesz tisztában vele, hogy mennyire bloat igazából. Egy mai böngészőhöz képest a komplett XP kódbázisa is kutyafüle, kezd elenyésző lenni.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Azért írtam konkrétat, konkrét proci, meg Firefox, mert megközelítően a Chrome fordítási idege sem kisebb. Mondom szörnyű, nem elmélet, ezt garantálom, hogy a saját bőrödöt fogod tapasztalni, a tényleg kipróbálod. Ha feltétlenül nem létfeltétel, vagy nem tanulás a cél, hogy egyszer lefordítod, hogy lássad hogyan kell, vagy nem megbotránkozási célzattal lesz, akkor engedd el.

Nyilván kristálygömbünk nincsen, eleve azt se írtad, hogy milyen proci. Most erre milyen konkrétumot írjak neked? Mondom, sok óra, számolj ezzel, gigantikus szopás kivárni. Három embertípus csinálja, 1) akinek annyira muszáj valami miatt (munkájához, mert fejlesztő, vagy valami spéci disztrót tart karban), 2) mazohista/nolifer, 3) benchmarkolja a legújabb izomhardverét, hogy feltöltve az eredményeket dicsekedni tudjon vele.

Egy hasonlóan durva jut még eszembe, a Rust, llvm, gcc az is elég sokáig fordul.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Jajj, azt ne is mondd. Főleg régen, régebbi gépeken volt durva. Voltam a 2000-es évek elején egy szegedi linuxos tanfolyáson, ott a fószer a számítógépes gépparkon forgatta, mindenki külön gépen, Gentoo telepítés gyakorlása közben volt feladatnak adva. Pedig akkor nem is számítottak túl rossz gépnek, 2 GHz-es Northwood Celeron, 2 giga RAM, jó, nem volt egy P4, AMD64, de nem volt túl gyenge. Mondani se kell, hogy a LibreOffice fordítását senki nem bírta befejezni, pedig meg lett hosszabbítva az idő is, délután tovább maradtunk, mert utolsó oktatási csoport volt aznap, meg a fazonnak még volt kedve maradni. Azóta meg még csak hízott a cuccos jócskán.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Na, az viszont nem olyan vészes, mint gondoltam. Jó, továbbra sem röpke, de azért kivárható, nem lesz egész nap használhatatlan a gép. Persze van modern gépek közül is, amelyik a Chrome-ot is simán fordítja 0,5-2,5 óra alatt, ha elég combos hozzá, és nem ütközik memória és más I/O limitbe.

Bevallom, én ezeknél a hosszú fordítási idejű programoknál csaltam Gentoo-n is, firefox-bin, libreoffice-bin csomagként tettem fel, mert nem volt idegrendszerem bevállalni, miután a FF-nál kipróbáltam mivel jár.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

nem hiszem, hogy a gentoo alapvetően változtatna a kérdésen, de ~5 éve buildeltem egy custom patch miatt. A folyamat mögött egy i7-4790K 16G rammal kb. 18 óra volt

// Happy debugging, suckers
#define true (rand() > 10)

Hát, nem igen. Alapvetően procin múlik, másodsorban RAM-on. Gentoo hozhat egy kis sebességnövekedést, pl. egy Windowson forgatáshoz képest, hogy Gentoo-n nem fut sallang a háttérben, meg nem fogja vissza vírusirtó, bűn lassú NTFS, stb., de azért épp úgy sok óra, nagy nyereség nem lesz rajta, itt-ott pár perc, max. fél óra különbség, de akkor sokat mondtam már.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

ccache is tud segíteni, ha már egyszer leforgattad :)

Mostanában foglalkoztam build optimalizálással, és ha jól emlékszem a Chrome-ról írták, hogy masszívan elosztottan buildelnek a fejlesztők. A linkelésre pedig van valam speciális linker ( https://github.com/rui314/mold ), amit az ürge aki kitalálta épp azért csinált, hogy ez a lépés a lehető leggyorsabb legyen. Valami 2 másodpercen belül linkeli a több mint 1 gigás binárist. Mélyebben nem olvastam utána, hogy mit hogy csinálnak ezek az eszközök, mert nekem egy hoszton is sikerült elérni a célomat persze egy sokkal kisebb kódbázison.

(Fenti mold-s hivatkozás alapján az a javaslatom, hogy akkor ezt a Chromiumot pcc-vel kell fordítani és mold-vel linkelni - ekkor a bináris előállítása kellően gyors lesz. Mondjuk a végeredmény lehet, hogy valódi böngészésre alkalmatlan lesz, mert azért a pcc nem egy világbajnok kódelőállító.)