nixos/redis: disable transparent huge pages (TLP) before starting Redis
This commit is contained in:
parent
28dee92fff
commit
afd448a9fa
|
@ -40,7 +40,12 @@ in
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
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 {
|
package = mkOption {
|
||||||
|
@ -224,6 +229,16 @@ in
|
||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
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 =
|
systemd.services.redis =
|
||||||
{ description = "Redis Server";
|
{ description = "Redis Server";
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue