A.13. VDSM Hook 示例


本节中提供的示例 hook 脚本严格不受红帽的支持。您必须确保安装到您的系统的任何和所有 hook 脚本(无论源如何)都已针对您的环境进行了全面的测试。

例 A.5. NUMA 节点调节

目的:

此 hook 脚本允许根据 numaset 自定义属性调整 NUMA 主机上的内存分配。如果 custom 属性没有设置任何操作。

配置字符串:

numaset=^(interleave|strict|preferred):[\^]?\d+(-\d+)?(,[\^]?\d+(-\d+)?)*$

使用的正则表达式,允许给定虚拟机的 numaset 自定义属性来指定分配模式(interleave, strict, preferred)以及使用的节点。这两个值用冒号(:)分隔。正则表达式允许将 nodeset 的规格设置为:

  • 特定节点(numaset=strict:1 )指定只使用节点 1,或者
  • 使用一系列节点(numaset=strict:1- 4)指定节点 1 到 4 的节点,或者
  • 未使用特定节点(numaset=strict:^3,指定不使用节点 3)或
  • 上述任意以逗号分隔的组合(numaset=strict:1-4,6,指定要使用的节点为节点 1 到 4 和节点 6)。

script:

/usr/libexec/vdsm/hooks/before_vm_start/50_numa

#!/usr/bin/python

import os
import sys
import hooking
import traceback

'''
numa hook
=========
add numa support for domain xml:

<numatune>
    <memory mode="strict" nodeset="1-4,^3" />
</numatune>

memory=interleave|strict|preferred

numaset="1" (use one NUMA node)
numaset="1-4" (use 1-4 NUMA nodes)
numaset="^3" (don't use NUMA node 3)
numaset="1-4,^3,6" (or combinations)

syntax:
    numa=strict:1-4
'''

if os.environ.has_key('numa'):
    try:
        mode, nodeset = os.environ['numa'].split(':')

        domxml = hooking.read_domxml()

        domain = domxml.getElementsByTagName('domain')[0]
        numas = domxml.getElementsByTagName('numatune')

        if not len(numas) > 0:
            numatune = domxml.createElement('numatune')
            domain.appendChild(numatune)

            memory = domxml.createElement('memory')
            memory.setAttribute('mode', mode)
            memory.setAttribute('nodeset', nodeset)
            numatune.appendChild(memory)

            hooking.write_domxml(domxml)
        else:
            sys.stderr.write('numa: numa already exists in domain xml')
            sys.exit(2)
    except:
        sys.stderr.write('numa: [unexpected error]: %s\n' % traceback.format_exc())
        sys.exit(2)
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.