重新启动linux (ubuntu16.04redis 4.011)
/var/log/redis.log显示
# WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.所以我知道
way1:
/etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi当重新启动机器时
the /var/log/redis.log shows the THP warning still.但当我用
$cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
$cat /sys/kernel/mm/transparent_hugepage/defrag
always defer madvise [never]我有权利
$systemctl restart redis
the /var/log/redis.log shows no THP warning.但这是不正确的问题,因为当机器重新启动仍然有THP警告。
所以我尝试way2:先删除/etc/rc.local if...fi语句
$apt install sysfsutils将这两行添加到/etc/sysfs.conf:
kernel/mm/transparent_hugepage/enabled = never
kernel/mm/transparent_hugepage/defrag = never重新启动
/var/log/redis.log got no any new message???我怎样才能再得到我的日志呢?糖浆吃了吗?
$systemctl status redis红星是活跃的。
$cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
$cat /sys/kernel/mm/transparent_hugepage/defrag
always defer [madvise] never我有?
然后
$systemctl restart redis
$cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
$cat /sys/kernel/mm/transparent_hugepage/defrag
always defer [madvise] never又来了?为碎片的选择不是对的??!
当我更改/etc/sysfs.conf上的已启用和defrag时,这是非常困难的:
kernel/mm/transparent_hugepage/defrag = never
kernel/mm/transparent_hugepage/enabled = never 我得到了正确的猫结果$systemctl重新启动redis $cat /sys/ $cat /mm/透明_sys/启用始终建议$cat/sys/内核/mm/透明_sys/defrag总是推迟
但是,在重新启动linux时,仍然没有向我的/var/log/redis.log添加任何消息。
但是,当我命令"systemctl重新启动redis“时,可以添加新消息。
为什么情况这么奇怪?哪一种是正确的,如何解决?
发布于 2021-05-13 04:03:13
所以当你问我这个问题时,我去了github和论坛寻找答案,实际上它是由所有这些问题混合而成的。
我认为你走的很好,但是每个人都要做的主要错误是在应用新的THP规则之后不重新启动redis服务。
首先,在ubuntu20.04上,默认情况下rc.local不存在,我按照这些步骤(参考)修正了这个问题。
作为根
提供系统服务
添加/etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target touch /etc/rc.local
chmod +x /etc/rc.local
systemctl enable rc-local 1.2.1在该文件(rc.local)中,可以添加
#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
systemctl restart redis-server.service
exit 0 发布于 2023-01-25 20:08:21
使用更简单:
# cat /etc/tmpfiles.d/disable-thp.conf
#Type Path Mode UID GID Age Argument
w /sys/kernel/mm/transparent_hugepage/enabled - - - - never
w /sys/kernel/mm/transparent_hugepage/defrag - - - - never
# systemd-tmpfiles --create --prefix=/sys/kernel/mm/transparent_hugepage/ /etc/tmpfiles.d/disable-thp.conf
# grep -E . /sys/kernel/mm/transparent_hugepage/defrag /sys/kernel/mm/transparent_hugepage/enabled
/sys/kernel/mm/transparent_hugepage/defrag:always defer defer+madvise madvise [never]
/sys/kernel/mm/transparent_hugepage/enabled:always madvise [never]当然,不需要总是手动运行systemd-tmpfiles,它将在引导时由systemd-tmpfiles-setup.service运行。
https://askubuntu.com/questions/1075039
复制相似问题