From 390f5f7376cad5551f99963bfca1159712e81501 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 26 Oct 2012 19:36:59 +0200 Subject: [PATCH] Remove the cgroups module Cgroups are handled by systemd now. Systemd's cgroup support does not do all the things that cgrulesengd does, but they're likely to interact poorly with each other. --- modules/module-list.nix | 1 - modules/services/system/cgroups.nix | 146 ---------------------------- 2 files changed, 147 deletions(-) delete mode 100644 modules/services/system/cgroups.nix diff --git a/modules/module-list.nix b/modules/module-list.nix index 06c9f8efca70..1f25f2aa1e0b 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -160,7 +160,6 @@ ./services/security/frandom.nix ./services/security/tor.nix ./services/security/torsocks.nix - ./services/system/cgroups.nix ./services/system/dbus.nix ./services/system/kerberos.nix ./services/system/nscd.nix diff --git a/modules/services/system/cgroups.nix b/modules/services/system/cgroups.nix deleted file mode 100644 index 5d5777909e92..000000000000 --- a/modules/services/system/cgroups.nix +++ /dev/null @@ -1,146 +0,0 @@ -{ config, pkgs, ... }: - -with pkgs.lib; - -let - - cfg = config.services.cgroups; - - cgconfigConf = pkgs.writeText "cgconfig.conf" cfg.groups; - - cgrulesConf = pkgs.writeText "cgrules.conf" cfg.rules; - -in - -{ - - ###### interface - - options = { - - services.cgroups.enable = mkOption { - type = types.bool; - default = false; - description = '' - Whether to enable support for control groups, a Linux kernel - feature for resource management. It allows you to assign - processes to groups that share certain resource limits (e.g., - CPU or memory). The cgrulesengd daemon - automatically assigns processes to the right cgroup depending - on the rules defined in - . - ''; - }; - - services.cgroups.groups = mkOption { - type = types.string; - default = - '' - mount { - cpu = /sys/fs/cgroup/cpu; - } - ''; - example = - '' - mount { - cpu = /sys/fs/cgroup/cpu; - cpuacct = /sys/fs/cgroup/cpuacct; - } - - # Create a "www" cgroup with a lower share of the CPU (the - # default is 1024). - group www { - cpu { - cpu.shares = "500"; - } - } - ''; - description = '' - The contents of the cgconfig.conf - configuration file, which defines the cgroups. - ''; - }; - - services.cgroups.rules = mkOption { - type = types.string; - default = ""; - example = - '' - # All processes executed by the "wwwrun" uid should be - # assigned to the "www" CPU cgroup. - wwwrun cpu www - ''; - description = '' - The contents of the cgrules.conf - configuration file, which determines to which cgroups - processes should be assigned by the - cgrulesengd daemon. - ''; - }; - - }; - - - ###### implementation - - config = mkIf cfg.enable { - - environment.systemPackages = [ pkgs.libcgroup ]; - - environment.etc = - [ { source = cgconfigConf; - target = "cgconfig.conf"; - } - { source = cgrulesConf; - target = "cgrules.conf"; - } - ]; - - # The daemon requires the userspace<->kernelspace netlink - # connector. - boot.kernelModules = [ "cn" ]; - - jobs.cgroups = - { startOn = "startup"; - - description = "Control groups daemon"; - - path = [ pkgs.libcgroup pkgs.procps pkgs.utillinux ]; - - preStart = - '' - if [ -d /sys/fs/cgroup ]; then - if ! mountpoint -q /sys/fs/cgroup; then - mount -t tmpfs -o mode=755 /dev/cgroup /sys/fs/cgroup - fi - fi - - cgclear || true - - # Mount the cgroup hierarchies. Note: we refer to the - # store path of cgconfig.conf here to ensure that the job - # gets reloaded if the configuration changes. - cgconfigparser -l ${cgconfigConf} - - # Move existing processes to the right cgroup. - cgclassify --cancel-sticky $(ps --no-headers -eL o tid) || true - - # Force a restart if the rules change: - # ${cgrulesConf} - ''; - - # Run the daemon that moves new processes to the right cgroup. - exec = "cgrulesengd"; - - daemonType = "fork"; - - postStop = - '' - cgclear - ''; - }; - - - }; - -}