Skip to content

Commit 6d70eca

Browse files
committed
Add a variable to disable transparent hugepages on systemd debian installations
1 parent 0dd9e51 commit 6d70eca

File tree

6 files changed

+53
-0
lines changed

6 files changed

+53
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ mongodb_pymongo_pip_version: 3.6.1 # Choose PyMong version to inst
4343
mongodb_user_update_password: "on_create" # MongoDB user password update default policy
4444
mongodb_manage_service: true
4545

46+
# Disable transparent hugepages on systemd debian based installations
47+
mongodb_disable_transparent_hugepages: false
48+
4649
mongodb_user: "{{ 'mongod' if ('RedHat' == ansible_os_family) else 'mongodb' }}"
4750
mongodb_uid:
4851
mongodb_gid:

defaults/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ mongodb_pymongo_pip_version: 3.6.1
1414
mongodb_user_update_password: "on_create" # MongoDB user password update default policy
1515
mongodb_manage_service: true
1616

17+
mongodb_disable_transparent_hugepages: false
18+
1719
mongodb_user: "{{ 'mongod' if ('RedHat' == ansible_os_family) else 'mongodb' }}"
1820
mongodb_uid:
1921
mongodb_gid:
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description="Disable transparent hugepages"
3+
Before=mongodb.service
4+
5+
[Service]
6+
Type=oneshot
7+
ExecStart=/opt/disable-transparent-hugepages.sh
8+
9+
[Install]
10+
WantedBy=multi-user.target
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
3+
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
4+
thp_path=/sys/kernel/mm/transparent_hugepage
5+
else
6+
return 0
7+
fi
8+
9+
echo 'never' > ${thp_path}/enabled
10+
echo 'never' > ${thp_path}/defrag
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
- name: Install disable transparent hugepages helper
2+
copy:
3+
src: disable-transparent-hugepages.sh
4+
dest: /opt/disable-transparent-hugepages.sh
5+
owner: root
6+
group: root
7+
mode: 0700
8+
9+
- name: Create disable transparent hugepages init file
10+
copy:
11+
src: disable-transparent-hugepages.init
12+
dest: /etc/systemd/system/disable-transparent-hugepages.init
13+
owner: root
14+
group: root
15+
mode: 0644
16+
17+
- name: Enable init file
18+
systemd:
19+
name: disable-transparent-hugepages
20+
daemon-reload: yes
21+
enabled: yes
22+
state: started

tasks/install.debian.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111
mongodb_is_systemd: "{{ sbin_init.stat.islnk is defined and sbin_init.stat.islnk }}"
1212
mongodb_major_version: "{{ mongodb_version[0:3] }}"
1313

14+
- name: Disable transparent huge pages on systemd systems
15+
include_tasks: disable_transparent_hugepages.yml
16+
when:
17+
- mongodb_disable_transparent_hugepages
18+
- mongodb_is_systemd
19+
1420
- name: Add APT key
1521
apt_key:
1622
keyserver: "{{ mongodb_apt_keyserver }}"

0 commit comments

Comments
 (0)