Do AMD’s Infinity Fabric and DRAM speed affect Android build times in Flutter projects?
During these flat quarantine days I was wondering if it is worth upgrading my home server with a brand new Ryzen 5 3600 CPU. Essentially my home server is a NAS, hosts Transmission daemon with Samba, a Plex server and an openhab instance and it’s also a Gitlab Runner. All of these stuffs are managed by different virtual machines in a Proxmox environment.
It’s all handled pretty well by my Intel Core i3 7100T CPU, all except building stuff in Continuos Integration with Gitlab Runner, the CPU is slower compared to my friend’s Gitlab Runner based on Ryzen 5 3600.
But what do we do? We build and deploy Laravel and Flutter applications, and even if the iOS builds are acceptable, the Android ones are very slow instead.
My shopping list
Of course the Ryzen 5 3600 paired with an AsRock Fatal1ty B450 Gaming-ITX/ac. I will also need a new power supply, my 160W pico PSU brick is not well suited for a 65W TDP CPU and the B450 chipset. The CPU doesn’t have an iGPU so I will need a low power graphics card: a GT730 should do the job. To well balance the efficiency I will pick a Be Quiet PURE POWER 11 300W 80 Plus Bronze. But what about RAM?
RAM Speed and Infinity Fabric for Zen2 Ryzen CPUs
According to the following spreadsheet, in order to obtain the maximum performance from your Ryzen Zen2 system, you have to set your RAM speed to 3733MHz at CAS Latency 17. Also, the 3200 CL14 and 3600 CL16 combinations are a good tradeoff without wasting so much money in RAM configuration.
I’m very confused about what RAM sticks I should buy. My 7100T config actually has a 16GB kit running at 2400MHz, so I was wondering if getting faster RAMs would affect my Android build speeds.
It’s time for some benchmarks
Since my workstation is already based on a Ryzen Zen 2 system, why not try to figure out what’s the best tradeoff with RAM speeds and Infinity Fabric?
- CPU: Ryzen 7 3700X
- Motherboard: ASUS Prime X570-PRO
- RAM: G.Skill Trident Z RGB 16GB DDR4 3200MHz CL14
- SSD: Aorus 1TB M.2 PCIEx 4x Gen4
- GPU: XFX AMD Radeon 5700XT 8GB GDDR6
- OS: Debian 10 Buster x64 with 4.19.0–6-amd64 kernel
The benchmark includes a flutter build appbundle process repeated 5 times, as you can see in the script below:
mkdir -p "testing"
for (( i=0; i<5; ++i)); do
echo "Running loop $i"
flutter build appbundle > "testing/loop$i.log"
echo "Loop $i finished"
The clean task is very important to remove intermediate stuffs from one build to the next one.
The target project will be the WhatsAppClone created by iampawan, You can find it in Github here: https://github.com/iampawan/FlutterWhatsAppClone.
Actually, my G.Skill Trident Z RGB 16GB DDR4 3200MHz CL14 is a very good kit in terms of overclocking. They have Samsung b-die chips, the best memory chips for overclocking. In my daily use I overclocked them at 3733MHz CL16 to gain the best performances as stated in the AMD’s spreadsheet. This will help us to set up three configuration tests and see the differences of build times with different DRAM and IF speeds.
- DRAM Speed: DDR4 2133MHz
- Infinity Fabric Speed: 1200MHz
- CAS Latency Speed: 15
- DRAM Speed: DDR4 3200MHz
- Infinity Fabric Speed: 1600MHz
- CAS Latency Speed: 14
- DRAM Speed: DDR4 3733MHz
- Infinity Fabric Speed: 1800MHz
- CAS Latency Speed: 16
The build times are expressed in seconds.
Average build time excluding Round 1: 23.725s
Average build time excluding Round 1: 22.75s
Average build time excluding Round 1: 22.475s
As shown in the charts, the results seem to follow the AMD’s spreadsheet, with higher build times with a lower DRAM and IF speeds, and lower build times with a higher DRAM and IF speeds.
In my case, is it worth buying a faster kit which costs double the price to gain 1 second in average? Definitively not.
Thank you for reading!
Thank you so much for reading and if you enjoyed this article make sure to hit the clapbutton.