AMD Ryzen: affordable Chrome build machine

856 views
Skip to first unread message

Stephen White

unread,
Aug 16, 2017, 1:25:47 PM8/16/17
to Chromium-dev
I recently put together a PC for personal use, and out of curiosity, I ran a few Chrome compilation benchmarks. This might be of interest to folks outside Google without access to Goma. A full Linux Release rebuild of chrome (is_debug=false, enable_nacl=false) took just over 80 min:

% time ninja -C out/Release chrome
ninja: Entering directory `out/Release'
[29683/29683] LINK ./chrome
76644.672u 2111.544s 1:22:38.05 1588.4% 0+0k 314688+4288800io 7387pf+0w

The parts of interest are:
  • AMD Ryzen 7 1700 (8-Core/16-Thread, 3.0 GHz)
  • Samsung 960 EVO M.2 500GB NVMe SSD
  • Corsair Vengeance LPX 16GB (2x8GB) DDR4 DRAM 3000MHz
  • MSI B350 Gaming Pro Carbon B350 AMD Motherboard

Both the OS and the source tree were on the same NVMe M.2 drive (which is very fast). It was an upgrade of an existing machine so this did not include case, power supply, or GPU, but it should be quite possible to put together a full machine for ~$1000USD.

Given that Threadripper (the 16-core/32-thread variant of Ryzen) is now out, and features quad-channel memory, I'm guessing that build performance will scale quite well, speculatively giving a build time in the neighbourhood of 40-45min for ~$2000USD.

Stephen (speaking only for myself and not my employer)

Lei Zhang

unread,
Aug 16, 2017, 1:35:17 PM8/16/17
to senor...@chromium.org, Chromium-dev
BTW, Chromium 56 compile on Windows has returned as a benchmark on
Anandtech for 2017. 92 minutes for the same CPU there.
http://www.anandtech.com/bench/CPU/1858
> --
> --
> Chromium Developers mailing list: chromi...@chromium.org
> View archives, change email options, or unsubscribe:
> http://groups.google.com/a/chromium.org/group/chromium-dev
> ---
> You received this message because you are subscribed to the Google Groups
> "Chromium-dev" group.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/chromium-dev/CAPeKFTg56j_pWx%2B0o5VdWQ%2BNWCnSJukpYwAO4b1F87RBr6us6Q%40mail.gmail.com.

Андрей Кадацкий

unread,
Aug 17, 2017, 4:41:47 AM8/17/17
to Chromium-dev
I have Intel Core 7700k overclocked to 5Ghz and Chromium 54 for Android compile for 52 min. The same build on my laptop with Quad Core Intel  i7-3632QM - 3 hours. Last version (62 Chromium) on 7700k is 76 min. 
I believe Google employees who works on Chrome (at least Bruce Dawson) use 24 core CPU - https://randomascii.wordpress.com/2017/07/09/24-core-cpu-and-i-cant-move-my-mouse/

Stephen White

unread,
Aug 17, 2017, 9:51:32 AM8/17/17
to Lei Zhang, Chromium-dev
Interesting, thanks! It looks like compilation speed doesn't scale as linearly with core count as I thought (or as I remember), at least on Windows. I do know the linker is slower than on Linux. I wonder if it's more bound by link time, PDB writing or some other single-process bottleneck.

Stephen

Lei Zhang

unread,
Aug 17, 2017, 1:34:15 PM8/17/17
to Stephen White, Chromium-dev
If Ninja can write out a log of what it executed and how long those
executions took, then one can see where all the time goes.

bruce...@chromium.org

unread,
Aug 17, 2017, 2:39:13 PM8/17/17
to Chromium-dev, senor...@chromium.org
I have a 24-core machine at work, but at home I occasionally build Chrome with a four-core/eight-thread Windows laptop. The last time I did this it took 125 minutes. Since then jumbo builds have become available and that would help. Also, I'm not sure if I had remove_webcore_debug_symbols = true, which also helps. I've documented the recommended fast-build settings here:

https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md#Faster-builds

I was doing a component build which should make most incremental builds quite fast.

There are lots of affordable desktop machines that are faster than my laptop. However, in addition to having lots of CPU cores it is also very important to have enough RAM (my laptop has 32 GB, 64 GB is a good idea) and a fast SSD. You can't have too much RAM.

Compilation scales very well with core count, but linking does not, leading to some choke points. In addition, while jumbo builds reduce the total amount of compilation time, they lead to long poles which can reduce serialization. It's a tricky tradeoff. crbug.com/725639 discusses some of the excessive serialization which can slow down component builds - some compile steps end up waiting on link steps which they are not actually dependent on.

If you want to understand where build times are going then look at the .ninja_log file. It shows the start and stop times for each build step. Or, look at https://github.com/nico/ninjatracing.git, which creates .json files that can be loaded into chrome://tracing, giving visualizations like this:


Jan van Oort

unread,
Aug 17, 2017, 4:24:58 PM8/17/17
to bruce...@chromium.org, Chromium-dev, senor...@chromium.org
I have an HP Z620 workstation running Linux Mint, with 96 GB of RAM, an SSD and a spinning disk, and 2 physical Xeon CPUs totalling 32 (logical) threads (forgot which Xeon series/model exactly, will fill that in). I can do a test compile on that box and report results, if that helps. 

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/chromium-dev/5241eec1-34c8-4702-8806-97615bb6c754%40chromium.org.

Jan van Oort

unread,
Aug 18, 2017, 6:11:15 AM8/18/17
to bruce...@chromium.org, Chromium-dev, senor...@chromium.org
The CPUs are of type Xeon E5-2670 @2.6 GHz with 20M cache apiece. 
Reply all
Reply to author
Forward
0 new messages