From 554c086b798755eeaec213cf4db05af178d39fa3 Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Thu, 20 Oct 2022 14:38:12 +0200 Subject: [PATCH] redis: variable to disable transparent hugepage (default: do nothing) --- CHANGELOG.md | 1 + redis/defaults/main.yml | 4 ++++ redis/handlers/main.yml | 5 +++++ redis/tasks/main.yml | 24 ++++++++++++++---------- redis/tasks/thp.yml | 34 ++++++++++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 redis/tasks/thp.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index da7c4dbc..a7435530 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ The **patch** part changes is incremented if multiple releases happen the same m * lxc-solr: set homedir and port at install * minifirewall: whitelist deb.freexian.com * redis: some values should be quoted +* redis: variable to disable transparent hugepage (default: do nothing) * squid: whitelist deb.freexian.com ### Fixed diff --git a/redis/defaults/main.yml b/redis/defaults/main.yml index 1a86c95c..b5547597 100644 --- a/redis/defaults/main.yml +++ b/redis/defaults/main.yml @@ -61,5 +61,9 @@ redis_sentinel_install: False redis_default_server_disabled: False +# Set to Null to leave as is +# Set to "always", "madvise" or "never" for custom value +redis_sysctl_transparent_hugepage_enabled: Null + general_alert_email: "root@localhost" log2mail_alert_email: Null diff --git a/redis/handlers/main.yml b/redis/handlers/main.yml index d85dcbf8..6d870b39 100644 --- a/redis/handlers/main.yml +++ b/redis/handlers/main.yml @@ -23,3 +23,8 @@ service: name: log2mail state: restarted + +- name: restart sysfsutils + service: + name: sysfsutils + state: restarted diff --git a/redis/tasks/main.yml b/redis/tasks/main.yml index 871ab3eb..d9a57bb2 100644 --- a/redis/tasks/main.yml +++ b/redis/tasks/main.yml @@ -3,7 +3,19 @@ - set_fact: redis_restart_handler_name: "{{ redis_restart_if_needed | bool | ternary('restart redis', 'restart redis (noop)') }}" -- name: Redis is installed. +- name: Linux kernel overcommit memory setting is enabled + sysctl: + name: "vm.overcommit_memory" + value: "1" + sysctl_file: "/etc/sysctl.d/evolinux-redis.conf" + state: present + reload: yes + +- name: Customize Kernel Transparent Huge Page + include: thp.yml + when: redis_sysctl_transparent_hugepage_enabled is not none + +- name: Redis is installed apt: name: - redis-server @@ -13,7 +25,7 @@ - redis - packages -- name: Redis Sentinel is installed. +- name: Redis Sentinel is installed apt: name: "redis-sentinel" state: present @@ -22,14 +34,6 @@ - packages when: redis_sentinel_install | bool -- name: Linux kernel overcommit memory setting is enabled - sysctl: - name: "vm.overcommit_memory" - value: "1" - sysctl_file: "/etc/sysctl.d/evolinux-redis.conf" - state: present - reload: yes - - name: Get Redis version shell: "redis-server -v | grep -Eo '(v=\\S+)' | cut -d'=' -f 2 | grep -E '^([0-9]|\\.)+$'" changed_when: false diff --git a/redis/tasks/thp.yml b/redis/tasks/thp.yml new file mode 100644 index 00000000..7a0dce27 --- /dev/null +++ b/redis/tasks/thp.yml @@ -0,0 +1,34 @@ +--- + +- name: sysfsutils is installed + apt: + name: + - sysfsutils + state: present + tags: + - redis + - packages + - kernel + +- name: Check possible values for THP + assert: + that: redis_sysctl_transparent_hugepage_enabled is in ['always', 'madvise', 'never'] + msg: "redis_sysctl_transparent_hugepage_enabled has incorrect value : '{{ redis_sysctl_transparent_hugepage_enabled }}' not in ['always', 'madvise', 'never']" + tags: + - redis + - kernel + +- name: "Set THP to {{ redis_sysctl_transparent_hugepage_enabled }} at boot" + lineinfile: + path: /etc/sysfs.conf + line: kernel/mm/transparent_hugepage/enabled = {{ redis_sysctl_transparent_hugepage_enabled }} + regexp: "kernel/mm/transparent_hugepage/enabled" + tags: + - redis + - kernel + +- name: "Set THP to {{ redis_sysctl_transparent_hugepage_enabled }} for this boot" + shell: "echo '{{ redis_sysctl_transparent_hugepage_enabled }}' >> /sys/kernel/mm/transparent_hugepage/enabled" + tags: + - redis + - kernel \ No newline at end of file