lix/src/libstore
Alex Wied 1af5d798a4 libstore/globals.cc: Automatically set cores based on cgroup CPU limit
By default, Nix sets the "cores" setting to the number of CPUs which are
physically present on the machine. If cgroups are used to limit the CPU
and memory consumption of a large Nix build, the OOM killer may be
invoked.

For example, consider a GitLab CI pipeline which builds a large software
package. The GitLab runner spawns a container whose CPU is limited to 4
cores and whose memory is limited to 16 GiB. If the underlying machine
has 64 cores, Nix will invoke the build with -j64. In many cases, that
level of parallelism will invoke the OOM killer and the build will
completely fail.

This change sets the default value of "cores" to be
ceil(cpu_quota / cpu_period), with a fallback to
std:🧵:hardware_concurrency() if cgroups v2 is not detected.
2022-07-19 16:03:58 -04:00
..
build Merge pull request #6710 from edolstra/embedded-sandbox-shell 2022-06-23 15:34:16 +02:00
builtins change priority conflict message 2022-05-16 16:16:06 +02:00
tests Allow selecting derivation outputs using 'installable!outputs' 2022-05-03 13:43:52 +02:00
binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
binary-cache-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
build-result.hh Remove duplicate "error:" 2022-04-08 11:48:30 +02:00
builtins.hh buildenv: Eliminate global variables, other cleanup 2020-03-24 14:06:47 +01:00
ca-specific-schema.sql ca: add sqlite index on RealisationsRefs(realisationReference) 2022-04-21 10:06:39 +02:00
content-address.cc Fix use after free in content-address.cc 2021-11-23 16:15:34 +01:00
content-address.hh Add ContentAddressMethod and parse/render it 2020-09-17 20:21:04 +02:00
crypto.cc Make sodium a required dependency 2021-01-06 17:56:53 +01:00
crypto.hh crypto.cc: API cleanup and add generate() / to_string() methods 2021-01-06 17:04:46 +01:00
daemon.cc Generalize DerivationType in preparation for impure derivations 2022-03-18 14:59:56 +00:00
daemon.hh Add missing #pragma once 2020-10-06 10:40:07 +02:00
derivations.cc Get rid of most .at calls (#6393) 2022-05-04 07:44:32 +02:00
derivations.hh Rename 'pure' -> 'sandboxed' for consistency 2022-03-31 16:12:25 +02:00
derived-path.cc Get rid of most .at calls (#6393) 2022-05-04 07:44:32 +02:00
derived-path.hh nix profile install: Don't use queryDerivationOutputMap() 2022-03-28 14:23:39 +02:00
dummy-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
export-import.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
filetransfer.cc Get rid of most .at calls (#6393) 2022-05-04 07:44:32 +02:00
filetransfer.hh doc: rephrase connect-timeout help message 2022-04-17 18:17:37 -05:00
fs-accessor.hh Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
gc-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
gc.cc Add missing rethrows in conditional exception handlers 2022-06-10 10:52:41 -07:00
globals.cc libstore/globals.cc: Automatically set cores based on cgroup CPU limit 2022-07-19 16:03:58 -04:00
globals.hh Remove NIX_LIBEXEC_DIR 2022-06-23 01:32:46 +02:00
http-binary-cache-store.cc HttpBinaryCacheStore::getFile(): Don't throw an exception 2022-05-30 13:24:04 +02:00
legacy-ssh-store.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
local-binary-cache-store.cc Add missing rethrows in conditional exception handlers 2022-06-10 10:52:41 -07:00
local-fs-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
local-fs-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
local-store.cc Get rid of most .at calls (#6393) 2022-05-04 07:44:32 +02:00
local-store.hh Factor out a GcStore interface 2022-03-03 19:01:25 +00:00
local.mk Merge pull request #6710 from edolstra/embedded-sandbox-shell 2022-06-23 15:34:16 +02:00
lock.cc fix(libstore/lock): support users that belong to more than 10 groups 2022-06-08 13:45:41 -04:00
lock.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
log-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
machines.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
machines.hh Remove std::string alias 2022-02-21 16:37:25 +01:00
make-content-addressed.cc Add a test for fetchClosure and 'nix store make-content-addressed' 2022-03-24 21:33:33 +01:00
make-content-addressed.hh fetchClosure: Allow a path to be rewritten to CA on the fly 2022-03-24 21:33:33 +01:00
misc.cc Get rid of most .at calls (#6393) 2022-05-04 07:44:32 +02:00
names.cc return string_views from forceString* 2022-01-27 17:15:43 +01:00
names.hh Remove std::string alias 2022-02-21 16:37:25 +01:00
nar-accessor.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nar-accessor.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
nar-info-disk-cache.cc [fixup] handle cache expiration in sqlite query 2022-06-23 14:54:25 -04:00
nar-info-disk-cache.hh Add a realisations disk cache 2021-05-06 17:38:20 +02:00
nar-info.cc libstore/nar-info: drop unused system field 2022-06-23 14:25:10 -04:00
nar-info.hh libstore/nar-info: drop unused system field 2022-06-23 14:25:10 -04:00
nix-store.pc.in pkg-config files: Use c++17 2019-03-14 14:11:12 +01:00
optimise-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
parsed-derivations.cc Generalize DerivationType in preparation for impure derivations 2022-03-18 14:59:56 +00:00
parsed-derivations.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
path-info.cc Low-latency closure copy 2021-07-26 13:31:09 +02:00
path-info.hh Low-latency closure copy 2021-07-26 13:31:09 +02:00
path-with-outputs.cc nix profile: Support overriding outputs 2022-05-03 15:00:34 +02:00
path-with-outputs.hh nix profile: Support overriding outputs 2022-05-03 15:00:34 +02:00
path.cc Add support for impure derivations 2022-03-31 13:43:20 +02:00
path.hh Add support for impure derivations 2022-03-31 13:43:20 +02:00
pathlocks.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
pathlocks.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
realisation.cc Fix the build with nlohmann/json 3.10.4+ 2022-01-19 14:37:54 +01:00
realisation.hh buildPaths(): Add an evalStore argument 2021-07-22 09:59:51 +02:00
references.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
references.hh Add a test for RefScanSink and clean up the code 2021-10-04 14:29:42 +02:00
remote-fs-accessor.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
remote-fs-accessor.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
remote-store.cc RemoteStore::queryRealisationUncached(): Fix potential noexcept violation 2022-05-30 13:27:13 +02:00
remote-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
repair-flag.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
s3-binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
s3-binary-cache-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
s3.hh Fix libcxx build 2022-04-28 14:37:05 +02:00
sandbox-defaults.sb fix(libstore): allow Nix to access all Rosetta 2 paths on MacOS 2022-07-15 12:10:56 -07:00
sandbox-minimal.sb Always use the Darwin sandbox 2017-06-06 18:44:49 +02:00
sandbox-network.sb OS X sandbox: Improve builtin sandbox profile 2017-05-31 17:25:51 +02:00
schema.sql schema.sql: add comment about hash being in base16 2022-06-01 14:59:57 +02:00
serve-protocol.hh nix-store --serve: pass on settings.keepFailed from SSH store 2021-08-31 13:11:46 +02:00
sqlite.cc Actually, solve this in a lighter-weight way 2022-04-20 17:37:59 +00:00
sqlite.hh Make the default SQLiteError constructor public 2022-04-21 09:40:55 +02:00
ssh-store.cc Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
ssh.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
ssh.hh distributed builds: load remote builder host key from the machines file 2021-02-25 09:17:34 -05:00
store-api.cc Disable auto-chroot if $NIX_STATE_DIR is set 2022-07-15 12:32:29 +02:00
store-api.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
store-cast.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
uds-remote-store.cc Non-blocking garbage collector 2021-10-13 12:12:44 +02:00
uds-remote-store.hh Shut down write side before draining the read side 2021-09-23 18:01:04 +02:00
worker-protocol.hh Add Store::buildPathsWithResults() 2022-03-08 19:56:34 +01:00