0

我正在使用下面的代码来禁用 THP Enabled using puppet

file_line { 'disable-THP-enabled':
  ensure => present,
  path   => '/sys/kernel/mm/transparent_hugepage/enabled',
  line   => 'never',
}

但我收到以下错误消息:

Error: Could not set 'present' on ensure: Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled at 43:/home/Sandeep_Kanabar/devops/puppet/modules/profile/manifests/setup_os_params.pp 
Error: Could not set 'present' on ensure: Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled at 43:/home/Sandeep_Kanabar/devops/puppet/modules/profile/manifests/setup_os_params.pp 
Wrapped exception: 
Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled 
Error: /Stage[main]/Profile::Setup_os_params/File_line[disable-THP-enabled]/ensure: change from absent to present failed: Could not set 'present' on ensure: Invalid argument - /sys/kernel/mm/transparent_hugepage/enabled at 43:/home/Sandeep_Kanabar/devops/puppet/modules/profile/manifests/setup_os_params.pp

这仅在实际启用 THP 时发生。例如

# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never.

如果禁用 THP,则不会发生此错误。例如

# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

将 swappiness 设置为 0 时,类似的 puppet 代码会起作用。

file_line { 'set-swappiness':
  ensure => present,
  path   => '/proc/sys/vm/swappiness',
  line   => '0',
}

有人可以指出我可能遗漏了什么或做错了什么吗?我正在使用独立的木偶版本 3.8.6。这是 CentOS 7.2 上的无主设置

4

3 回答 3

0

我认为问题在于 file_line 的工作方式与 sysfs 文件系统的工作方式不兼容。例如,您不能真正使用文本编辑器打开所述文件并尝试将修改写入其中,但您可以编写一个全新的文件来完全替换旧内容。

也许这会起作用:

文件{'/sys/kernel/mm/transparent_hugepage/enabled':内容=>'从不',}

或使用 puppet-sysfs 模块..

于 2016-10-12T21:15:35.393 回答
0

除非在资源文件中使用的想法确实失败了。但!它可以用 exec 中的 onlyif 来实现。

exec { 'thp-status':                                                                                                                                                           
  command  => "echo ${thp_status} > /sys/kernel/mm/transparent_hugepage/enabled",                                                                                            
  provider => shell,                                                                                                                                                         
  onlyif   => "egrep -q  '\\[${thp_status}\\]' /sys/kernel/mm/transparent_hugepage/enabled || echo THP-enabled should be corrected",                                         
}                                                                                                                                                                              

实际上可以在没有onlyif的情况下做到这一点

exec { 'thp-status':                                                                                                                                                           
   command  => "egrep -q  '\\[${thp_status}\\]' /sys/kernel/mm/transparent_hugepage/enabled || echo ${thp_status} > /sys/kernel/mm/transparent_hugepage/enabled",             
   provider => shell,                                                                                                                                                         
}                                                                                                                                                                              
于 2020-10-21T15:31:37.547 回答
-1

在此处输入图像描述

尝试这个。我希望这应该有效。

于 2019-02-21T02:30:33.393 回答