mad*_*vic 1 ansible ansible-2.x
我正在尝试通过ansible禁用VHP上的THP,因为它会干扰Redis(如果启用了Redis,则会导致延迟和更多使用问题)禁用THP的命令是,"echo never > /sys/kernel/mm/transparent_hugepage/enabled"
但它似乎无法与简单的Shell角色一起使用如下所示。
- name: Disable THP support (causes latency and mem usage issues with redis)
shell: echo never {{ ">" }} /sys/kernel/mm/transparent_hugepage/enabled
become: yes
become_method: sudo
become_user: root
Run Code Online (Sandbox Code Playgroud)
这是ansible输出:
任务[Disable-THP:禁用THP支持(导致Redis的延迟和内存使用问题)] ***更改:[127.0.0.1] => {“ changed”:true,“ cmd”:“ echo never> / sys / kernel / mm / transparent_hugepage / enabled“,” delta“:” 0:00:00.003939“,” end“:” 2018-07-09 12:22:33.183451“,” rc“:0,” start“:” 2018 -07-09 12:22:33.179512“,” stderr“:”“,” stderr_lines“:[],” stdout“:”“,” stdout_lines“:[]}
在此之后,我将ssh放入虚拟机并启动redis-server,它仍然会给我警告消息。
警告您在内核中启用了透明大页面(THP)支持。这将在Redis中造成延迟和内存使用问题。要解决此问题,请以根用户身份运行命令“从不回显> / sys / kernel / mm / transparent_hugepage / enabled”,并将其添加到您的/etc/rc.local中,以便在重启后保留设置。禁用THP后,必须重新启动Redis。
我是否在使用ansible脚本时做错了事,或者有人可以帮助我解决这个简单的shell命令为何不起作用的问题?
Br,维克多
更新:我对ansible角色进行了少许修改,以检查文件的内容是否实际更改。该角色现在看起来像这样:
- name: Disable THP support (causes latency and mem usage issues with redis)
shell: |
echo "never" >> /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/enabled
become: true
become_user: root
become_method: sudo
Run Code Online (Sandbox Code Playgroud)
根据输出,启用的文件实际上将值更改为[never]。但是,当我SSH到VM并捕获已启用的文件时,它表明该值仍然[always]
任务[Disable-THP:禁用THP支持(导致Redis的延迟和内存使用问题)] ***更改:[127.0.0.1] => {“ changed”:true,“ cmd”:“ echo \” never \“ >> / sys / kernel / mm / transparent_hugepage / enabled \ n cat / sys / kernel / mm / transparent_hugepage / enabled“,” delta“:” 0:00:00.005309“,” end“:” 2018-07-10 10 :41:27.801697“,” rc“:0,”开始“:” 2018-07-10 10:41:27.796388“,” stderr“:”“,” stderr_lines“:[],” stdout“:”总是madvise [never]“,” stdout_lines“:[”始终疯狂[never]“]}
为什么文件的内容表明它已被更改,但是当我SSH到VM时,它似乎告诉我否则?
[vagrant@test ~]$ cd ..
[vagrant@test home]$ cd ..
[vagrant@test /]$ cd sys/kernel/mm/transparent_hugepage/
[vagrant@test transparent_hugepage]$ cat enabled
[always] madvise never
Run Code Online (Sandbox Code Playgroud)
基于此问题,您可以使用或模块安装软件包sysfs并设置sysfs.conf文件的配置。它具有幂等的优势。templatelineinfile
---
- hosts: target
become: yes
tasks:
- package:
name: sysfsutils
- lineinfile:
path: /etc/sysfs.conf
line: kernel/mm/transparent_hugepage/enabled = never
Run Code Online (Sandbox Code Playgroud)
当然,包名称可能会因您的分布而异。
您需要重新引导目标以考虑更改。
@clopez:sysfsutils不会在centOS中创建/etc/sysfs.conf。每次运行剧本时,您的“lineinfile”conf 也会添加相同的行。
这是我的配置 - 这也应该适用于基于 debian 的系统:
- name: install sysfsutils for disabling transparent huge pages
package:
name: sysfsutils
state: latest
- name: disable transparent huge pages for redis performance - persistent change
lineinfile:
path: /etc/sysfs.conf
create: true
regexp: '^kernel\/mm\/transparent\_hugepage\/enabled'
line: "kernel/mm/transparent_hugepage/enabled = never"
- name: disable transparent huge pages for redis performance - live change
shell: echo never {{ ">" }} /sys/kernel/mm/transparent_hugepage/enabled
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |