From afd448a9fad78fc96a98489d3c49b63ca7b4f454 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 30 Aug 2019 15:44:01 +0200 Subject: nixos/redis: disable transparent huge pages (TLP) before starting Redis --- nixos/modules/services/databases/redis.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'nixos/modules/services/databases') 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"; -- cgit 1.4.1