diff --git a/third_party/nixpkgs/patches/pr102855-zram-allow-memorymax.patch b/third_party/nixpkgs/patches/pr102855-zram-allow-memorymax.patch new file mode 100644 index 0000000000..5f5154dbb5 --- /dev/null +++ b/third_party/nixpkgs/patches/pr102855-zram-allow-memorymax.patch @@ -0,0 +1,57 @@ +From 961b7c7a6d47b224b2c3fea44ed18b722611d7ab Mon Sep 17 00:00:00 2001 +From: Luke Granger-Brown +Date: Thu, 5 Nov 2020 02:29:46 +0000 +Subject: [PATCH] nixos/zram: add zramSwap.memoryMax option + +This allows capping the total amount of memory that will be used for +zram-swap, in addition to the percentage-based calculation, which is +useful when blanket-applying a configuration to many machines. + +This is based off the strategy used by Fedora for their rollout of +zram-swap-by-default in Fedora 33 +(https://fedoraproject.org/wiki/Changes/SwapOnZRAM), which caps the +maximum amount of memory used for zram at 4GiB. + +In future it might be good to port this to the systemd zram-generator, +instead of using this separate infrastructure. +--- + nixos/modules/config/zram.nix | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/nixos/modules/config/zram.nix b/nixos/modules/config/zram.nix +index 341101bc184..1f513b7e4da 100644 +--- a/nixos/modules/config/zram.nix ++++ b/nixos/modules/config/zram.nix +@@ -80,6 +80,15 @@ in + ''; + }; + ++ memoryMax = mkOption { ++ default = null; ++ type = with types; nullOr int; ++ description = '' ++ Maximum total amount of memory (in bytes) that can be used by the zram ++ swap devices. ++ ''; ++ }; ++ + priority = mkOption { + default = 5; + type = types.int; +@@ -146,7 +155,12 @@ in + + # Calculate memory to use for zram + mem=$(${pkgs.gawk}/bin/awk '/MemTotal: / { +- print int($2*${toString cfg.memoryPercent}/100.0/${toString devicesCount}*1024) ++ value=int($2*${toString cfg.memoryPercent}/100.0/${toString devicesCount}*1024); ++ ${lib.optionalString (cfg.memoryMax != null) '' ++ memory_max=int(${toString cfg.memoryMax}/${toString devicesCount}); ++ if (value > memory_max) { value = memory_max } ++ ''} ++ print value + }' /proc/meminfo) + + ${pkgs.util-linux}/sbin/zramctl --size $mem --algorithm ${cfg.algorithm} /dev/${dev} +-- +2.29.2 + diff --git a/third_party/nixpkgs/patches/series b/third_party/nixpkgs/patches/series index 124005c256..e313c2530e 100644 --- a/third_party/nixpkgs/patches/series +++ b/third_party/nixpkgs/patches/series @@ -1,3 +1,4 @@ +pr102855-zram-allow-memorymax.patch pr103084-teamspeak3-bump-3.5.6.patch pr104891-factorio-bump-1.1.1.patch pr105231-factorio-bump-1.1.2.patch