me at the computer: emerge -ej @world1
the computer: *tries to compile 300 tiny packages at the same time*
the computer: *runs out of process IDs2 and dies unceremoniously*
me: ...
me: emerge -ej16 @world3
the computer: *compiles 300 tiny packages 16 at a time*
the computer: *compiles 500 more tiny packages one at a time that could have been built 16 at a time with better resource utilization and no harm done*
the computer: *compiles Firefox, Thunderbird, Libreoffice, and four versions of Java4 at the exact same time*
the computer: *runs out of memory5 and dies unceremoniously*
me: ..........
me: *headdesk*
-
The package manager on Gentoo Linux is called Portage.
emergeis the program provided by Portage that is used to install other programs. This command is reinstalling the "world" set (all packages the user has explicitly installed) with an empty dependency tree (which causes Portage to re-emerge every dependency as if it's not installed) and unlimited number of concurrent jobs. -
A unique number assigned to every running process on Unix-likes. On Linux the default limit for this number is traditionally 32768 because this was the maximum possible number on x86. On amd64 it can be 4194304 but is often left to the default or changed to 99999 to not potentially break old system management programs that have a limited number of decimal digits available to display the number.
-
See 1; limited to 16 concurrent jobs.
-
All of these programs are enormous and require lots of memory and CPU time to compile. I play Minecraft so I have Java 8, 11, 17, and 21 to support various older versions. I will probably cry when Gentoo drops old Java versions.
-
Believe it or not, this is the only part of the story that is hyperbole. On my system, Portage is configured to tell build systems to compile 16 files at a time (this is a different 16 at a time from the number of packages being compiled) unless there is high system load, then they will slow down to one at a time. This keeps the system busy without consuming all memory.
.png)