gpt4 book ai didi

redis - gke 无法禁用透明大页面...权限被拒绝

转载 作者:IT王子 更新时间:2023-10-29 05:57:58 29 4
gpt4 key购买 nike

我正在尝试在 gke 中运行一个 redis 镜像。它有效,除了我收到可怕的“透明大页面”警告:

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.

Redis 目前太慢而无法使用...所以我关闭了 THP:

sheena@gke-projectwaxd-cluster-default-pool-23593a74-wxrv ~ $ cat  /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never
sheena@gke-projectwaxd-cluster-default-pool-23593a74-wxrv ~ $ echo never > /sys/kernel/mm/transparent_hugepage/enabled
-bash: /sys/kernel/mm/transparent_hugepage/enabled: Permission denied
sheena@gke-projectwaxd-cluster-default-pool-23593a74-wxrv ~ $ sudo echo never > /sys/kernel/mm/transparent_hugepage/enabled
-bash: /sys/kernel/mm/transparent_hugepage/enabled: Permission denied

这些权限错误令人不安。 Redis 希望 THP 关闭,以便它可以正常工作。

我做了一些挖掘,发现谷歌使用了一个特殊的操作系统镜像,使/sys/成为只读路径。有一个基于 Debian 7 的替代镜像。它让我很兴奋,但最后我遇到了完全相同的问题。

那么如何阻止 redis 受到 Google 容器引擎上 THP 的影响?

这不像是我在做一些独特的事情。在容器中运行数据库是很正常的。启用 THP 时数据库出现故障是很正常的。那么...我在这里缺少什么?

最佳答案

您的命令有点不正确:echo 以 root 身份运行,但重定向本身 (>) 以用户身份运行,因此它不能写入 /sys/.

以下命令在 container-vm(基于 debian)和 gci(基于 chromeos)上工作良好:

sudo sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'

在 container-vm 上保留此设置

将此内核命令行参数添加到 /etc/default/grub(不要忘记运行 sudo update-grubsudo reboot 之后):

GRUB_CMDLINE_LINUX="... transparent_hugepage=never"

在 gci 上保留此设置

首先,使用云控制台复制节点池正在使用的实例模板。

其次,在元数据下更改用户数据的值:

#cloud-config

write_files:
- path: /etc/systemd/system/hugepage.service
permissions: 0644
owner: root
content: |
[Unit]
Description=Disable THP

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"

[Install]
WantedBy=kubernetes.target
...
runcmd:
- ...
- systemctl enable hugepage.service
- systemctl start kubernetes.target

第三,将实例模板更改为新创建的实例模板:

gcloud compute instance-groups managed set-instance-template \
gke-YOUCLUSTER-YOURPOOL-grp \
--template=YOURNEWTEMPLATENAME \
--zone=...

第四,重新创建实例:

gcloud compute instance-groups managed recreate-instances \
gke-YOUCLUSTER-YOURPOOL-grp \
--zone=... \
--instances=...

这些实例将丢失所有数据并关闭 THP。所有新实例也将禁用 THP(在此节点池中)。

关于redis - gke 无法禁用透明大页面...权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032406/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com