検索

A.11. VDSM フックの例

download PDF

このセクションで提供されているフックスクリプトの例は、Red Hat では厳密にはサポートされていません。ソースにかかわらず、システムにインストールするすべてのフックスクリプトは、環境に対して徹底的にテストされているか確認する必要があります。

例A.5 NUMA ノードのチューニング

目的:

このフックスクリプトを使用すると、numaset カスタムプロパティーに基づいて NUMA ホストのメモリー割り当てを調整できます。カスタムプロパティーが設定されていない場合、アクションは実行されません。

設定文字列:

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

使用される正規表現により、特定の仮想マシンの numaset カスタムプロパティーで、割り当てモード (interleavestrictpreferred) と使用するノードの両方を指定できます。2 つの値はコロン (:) で区切られます。正規表現を使用すると、nodeset を次のように指定できます。

  • 特定のノード (numaset=strict:1 はノード 1 のみの使用を指定)、または
  • 使用するノードの範囲 (numaset=strict:1-4 はノード 1 から 4 の使用を指定)、または
  • 使用しない特定のノード (numaset = strict:^ 3 はノード 3 を使用しないことを指定)、または
  • 上記の組み合わせをコンマ区切りで指定 (numaset=strict:1-4,6 はノード 1 から 4、および 6 の使用を指定)。

スクリプト:

/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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.