at 24.11-pre 908 B view raw
1{ config, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.hardware.ksm; 7 8in { 9 imports = [ 10 (mkRenamedOptionModule [ "hardware" "enableKSM" ] [ "hardware" "ksm" "enable" ]) 11 ]; 12 13 options.hardware.ksm = { 14 enable = mkEnableOption "Linux kernel Same-Page Merging"; 15 sleep = mkOption { 16 type = types.nullOr types.int; 17 default = null; 18 description = '' 19 How many milliseconds ksmd should sleep between scans. 20 Setting it to `null` uses the kernel's default time. 21 ''; 22 }; 23 }; 24 25 config = mkIf cfg.enable { 26 systemd.services.enable-ksm = { 27 description = "Enable Kernel Same-Page Merging"; 28 wantedBy = [ "multi-user.target" ]; 29 script = 30 '' 31 echo 1 > /sys/kernel/mm/ksm/run 32 '' + optionalString (cfg.sleep != null) 33 '' 34 echo ${toString cfg.sleep} > /sys/kernel/mm/ksm/sleep_millisecs 35 ''; 36 }; 37 }; 38}