about summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorPeter Simons <simons@cryp.to>2019-09-01 08:49:25 +0200
committerGitHub <noreply@github.com>2019-09-01 08:49:25 +0200
commit0808f5ad1d8377bfb4653b6d502ee97a2bd9335c (patch)
treea1e3d6f1e7a9c6567288a089af464df2c6d6d78d /nixos
parentf7a856e4c5773e9dbdd2d725a26cd99a0102c7ff (diff)
parentafd448a9fad78fc96a98489d3c49b63ca7b4f454 (diff)
downloadnixlib-0808f5ad1d8377bfb4653b6d502ee97a2bd9335c.tar
nixlib-0808f5ad1d8377bfb4653b6d502ee97a2bd9335c.tar.gz
nixlib-0808f5ad1d8377bfb4653b6d502ee97a2bd9335c.tar.bz2
nixlib-0808f5ad1d8377bfb4653b6d502ee97a2bd9335c.tar.lz
nixlib-0808f5ad1d8377bfb4653b6d502ee97a2bd9335c.tar.xz
nixlib-0808f5ad1d8377bfb4653b6d502ee97a2bd9335c.tar.zst
nixlib-0808f5ad1d8377bfb4653b6d502ee97a2bd9335c.zip
Merge pull request #67768 from peti/t/redis
nixos/redis: disable transparent huge pages (TLP) before starting Redis
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/databases/redis.nix17
1 files changed, 16 insertions, 1 deletions
diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix
index 3f2857100f52..37cc179023ab 100644
--- a/nixos/modules/services/databases/redis.nix
+++ b/nixos/modules/services/databases/redis.nix
@@ -40,7 +40,12 @@ in
       enable = mkOption {
         type = types.bool;
         default = false;
-        description = "Whether to enable the Redis server.";
+        description = ''
+          Whether to enable the Redis server. Note that the NixOS module for
+          Redis disables kernel support for Transparent Huge Pages (THP),
+          because this features causes major performance problems for Redis,
+          e.g. (https://redis.io/topics/latency).
+        '';
       };
 
       package = mkOption {
@@ -224,6 +229,16 @@ in
 
     environment.systemPackages = [ cfg.package ];
 
+    systemd.services.disable-transparent-huge-pages = {
+      enable = config.services.redis.enable;
+      description = "Disable Transparent Huge Pages (required by Redis)";
+      after = [ "sysinit.target" "local-fs.target" ];
+      before = [ "redis.service" ];
+      wantedBy = [ "redis.service" ];
+      script = "echo never >/sys/kernel/mm/transparent_hugepage/enabled";
+      serviceConfig.Type = "oneshot";
+    };
+
     systemd.services.redis =
       { description = "Redis Server";