Hi,

When I first started to create patches for thunderbird about a dozen years ago, I read someone's blog/post that said we need 12 GB memory for comfortable build.
I had to do with 8GB of memory and it worked.
Well, C compiler has become larger, I think. Many tools including the linker have become larger, too. Their memory requirements also have become larger.

About half a dozen years ago, I allocated 16GB of memory to my guest linux in VirtualBox where I have been building TB. since.

Last week, I had a hardware issue and had to replace motherboard, and I added more memory to my PC from 32GB to 48GB. On a hunch, I increased the memory allocated to VirtualBox from 16GB to 24 GB.

Yes, I use virtualbox to run linux on my windows PC.
Guest linux is where I create and test C-C TB patches. I know virtualbox may not be the best environment.  But  I have to use MS office tools for work, so I have to run Windows side-by-side and there used to be quite a lot of hardware gadgets that only run under windows. Using virtualbox was one of the solutions for this home PC user who create patches for TB.

Before giving you the performance numbers, here is my current hardware.
CPU: Ryzen 3700x (8C/16T), but I only allocate 7 virtual CPU to the virtualbox.
Memory: 48 GB, but only 24GB allocated to virtualbox.
Storage: my guest linux in VirtualBox uses virtual disks both on NVME M.2 SSD and hard disks (relatively slow at 5400 rpm).
Source tree and object tree are in virtual disks on NVME M.2 SSD.

I often change only a few C++ source files in C-C directory and re-build TB.
So to me, relinking C-C should be fast.
ccache helps a lot.

Anyway, just relinking C-C TB takes  time.
Before (with 16GB assigned to linux guest inside virtualbox): almost 10 minutes. Slightly less. 550 seconds or so.
After (with 24 GB assigned to linux guest.):  4min 38 seconds.

x2 speed up after memory size increase (!)

The reason I think the speedup is observed is twofold:
- file buffer cache within the linux OS has become larger and thus helps file I/O.
- less page faults. I think this counts.
I am not sure what are causing the page faults (the linker?), but the number of page faults during C-C TB build was rather large. I have beei observing system status using xosview visually, and I have been puzzled by the burst of page faults observed during build. That is why I added 8GB to my virutalbox setup after I could afford to add more memory to my PC. It now has 8GBx2 + 16GBx2 (ECC memory). Before the hardware change, it had 8GB x 4 (ECC).

Well, please recall that if we need to compile sizable number of source files, the speed up factor is not that dramatic because it is CPU-bound (I am yet to check it.)

But the decrease of 10 minutes to 4.5 minutes of linking by adding 8GB memory IN MY SETUP is huge for repeatedly running edit/compile/link process on local PC.

There are some suggestions for "Requirements".
For example, "Building Firefox on Linux".
https://firefox-source-docs.mozilla.org/setup/linux_build.html

In there the "Requirements " states:

 *

   *Memory:* 4GB RAM minimum, 8GB+ recommended.

 *

   *Disk Space:* At least 30GB of free disk space.

 *

   *Operating System:* A 64-bit installation of Linux. It is strongly
   advised that you use a supported distribution; see Supported Build
   Hosts
   
<https://firefox-source-docs.mozilla.org/contributing/build/supported.html#build-hosts>.
   We also recommend that your system is fully up-to-date.

Sure, we could  build TB with 4GB RAM. I did it on 32-bit linux until the debug symbol table became too large for 32-bit memory space.
I switched to 64-bit linux around that time.
With virtual memory, we can build C-C TB with 4GB real memory to be sure, but the page faults slow it down.

I think we SHOULD mention that 16GB or even 24 GB memory would be preferable in the paragraph, not discouraging users with only 8 GB of memory on their PCs. We should mention the reduced build time with larger memory.

I should have increased my memory to 16GB much sooner. But my old motherboard did not have good memory support and 32GB was the maximum. And I somehow had a wrong notion that 16GB was good enough. Well, "good" is a very judgemental word. Obviously, for "comfortable" build of C-C TB with current crop of development tools that seem to hog memory, 24GB is definitely the minimum IMHO now that I verified the numbers.
In that sense, I was wrong to think 16GB was good enough.

Someone might want to rewrite the paragraph in mozilla web page(s) by adding suggested comfortable setting by investigating some people's setups and build time observed in that setting, etc.

MS states 4GB memory is required for Windows 11.
But we should know the memory amount with which we can operate Windows 11 and applications comfortably. Right?

The same goes for mozilla software deveelopment.

Chiaki

--
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/ee69d99f-5bbd-4a50-5948-4b8a3a87ac01%40yk.rim.or.jp.

Reply via email to