Frederick Zhang Frederick Zhang - 5 months ago 25
Linux Question

How to avoid transparent_hugepage/defrag warning from mongodb?

I'm receiving the following warning from mongodb about THP

2015-03-06T21:01:15.526-0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-03-06T21:01:15.526-0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'


But I did manage to turned THP off manually

frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]


I did the trick by adding
transparent_hugepage=never
to
GRUB_CMDLINE_LINUX_DEFAULT
in
/etc/default/grub
and adding

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi


to
/etc/rc.local


How on earth can I avoid the warning?

Answer

Official MongoDB documentation gives several solutions for this issue. You can also try this solution, which worked for me:

  1. Open /etc/init.d/mongod file.

  2. Add the lines below immediately after chown $DEAMONUSER /var/run/mongodb.pid and before end script.

  3. Restart mongod (service mongod restart).

Here are the lines to add to /etc/init.d/mongod:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

That's it!