Twoje polecenie jest nieco niepoprawne:echo
działa jako root, ale samo przekierowanie (>
) działa jako użytkownik, więc nie może pisać /sys/
.
Poniższe polecenie działa dobrze oba na container-vm (oparte na debianie) i gci (oparte na chromeos):
sudo sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
Utrzymywanie tego ustawienia w kontenerze-VM
Dodaj ten parametr wiersza poleceń jądra do /etc/default/grub
(nie zapomnij uruchomić sudo update-grub
i sudo reboot
potem):
GRUB_CMDLINE_LINUX="... transparent_hugepage=never"
Utrzymywanie tego ustawienia w gci
Najpierw za pomocą konsoli w chmurze skopiuj szablon instancji, który jest używany przez pulę węzłów.
Po drugie, pod metadanymi zmień wartość danych użytkownika:
#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
Po trzecie, zmień szablon instancji na nowo utworzony:
gcloud compute instance-groups managed set-instance-template \
gke-YOUCLUSTER-YOURPOOL-grp \
--template=YOURNEWTEMPLATENAME \
--zone=...
Następnie odtwórz instancje:
gcloud compute instance-groups managed recreate-instances \
gke-YOUCLUSTER-YOURPOOL-grp \
--zone=... \
--instances=...
Instancje stracą wszystkie dane i wymyśl z wyłączonym THP. Wszystkie nowe instancje również będą miały wyłączone THP (w tej puli węzłów).