World Map
Java Service Wrapperは、御社Javaアプリケーション製品の安定した信頼性を高める最短最善の方法です。
  • Free Trial
  • Buy Now
プロセッサアフィニティ

プロセッサアフィニティの概要

バージョン3.5.27より、WrapperプロセスとそれにコントロールされているJVMプロセスの両方のプロセッサアフィニティの設定が可能です。

プロセッサアフィニティはすべての中央処理装置(CPU)ではなく、指定のCPUのみでプロセスを実行するように設定できます。

各WrapperプロセスとJVMプロセスはプロセッサアフィニティの設定ができる各自プロパティを持っていますが、Wrapperのみのプロパティを設定するとJVMプロセスも同じ設定を受け継がれ、自動的にWrapperプロセスと同じCPU(複数可)で実行されます。

注意

  • CPUを設定できる機能はバージョン3.5.27でWindowsやLinuxに追加されました。
  • バージョン 3.5.28からAIX、FreeBSD、HP-UXやSolarisでCPUアフィニティの設定ができるようになりました。 ただし、HP-UXとSolarisでは、各プロセスに一つのCPUを縛ることが出来ません(Wrapper、もしくはJVMプロセス)。
  • Mac OSXはプロセッサを認識するインターフェイスを抽出しないため、現在、このシステムにはプロセスアフィニティを実施することが出来ません。
  • 64のロジカルプロセッサを持つシステムにはプロセスアフィニティ機能をテストしていません。

Wrapperプロセスのプロセッサアフィニティに使用されているプロパティは下記に記載されています。

JVMプロセスのプロセッサアフィニティに使用されているプロパティは下記に記載されています。

<n> コンポネント:

上記プロパティの"<n>"コンポネントは "1" からカウントされ、特定のCPUを指定する整数です。 実際に存在するCPUの数以下でなければなりません。

注意

システムレベルでCPUアフィニティを設定すると(例えば、タスクマネジャ、もしくはコマンドプロンプトから)、最初のCPUがインデックス0を割り当てられることがあります。 実際にはCPUがインデックスされる基本はないため、オペレーティングシステムにより、0から、もしくは1からインデックスされることがあります。 私たちはWrapperを設定するときに最初のCPUをインデックス1からカウントされるように設定しました。

Wrapperプロセスのプロセッサアフィニティのプロパティ

wrapper.cpu_affinity.set

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

Wrapperのプロセッサアフィニティを有効にするか無効になっているかどうかを定義します。 規定値はFALSEで、WrapperはどんなCPUでも実行できます。

WrapperレベルでプロパティをTRUEに設定すると、アフィニティ設定を有効にします。

例:
wrapper.cpu_affinity.set=TRUE

wrapper.cpu_affinity.default

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

このプロパティをTRUEに設定するとWrapperに最初から全てのCPUを許可できます。FALSEに設定すると最初からすべてのCPUをブロックします。 規定値はFALSE

このプロパティは個々のCPUの例外を作成するために最低でもwrapper.cpu_affinity.<n>の一つのプロパティに上書きされるためにあります。

例1 (デフォルトですべてのCPUを無効にする):
wrapper.cpu_affinity.default=FALSE
例2 (デフォルトですべてのCPUを有効にする):
wrapper.cpu_affinity.default=TRUE

注意

もしwrapper.cpu_affinity.defaultTRUEに設定しても、wrapper.cpu_affinity.<n> のプロパティはFALSEに設定するとプロセッサアフィニティを無効になっていると同じ効果になります。

逆にもしwrapper.cpu_affinity.defaultFALSEに設定されていて、wrapper.cpu_affinity.<n>のプロパティがTRUE になっていると、Wrapperがその機械のCPUのどれでも走らせなくなるため、例外が出てきます。(wrapper.cpu_affinity.strictを参照。 )

wrapper.cpu_affinity.<n>

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

こちらのプロパティのセットはWrapperプロセスに個々のCPUを許可/ブロックにするために使われています。対象となるCPUごとに一行を追加することで一つ、もしくは複数のプロセッサを許可/ブロックすることが出来ます。

上記プロパティの"<n>"コンポネントは"1"からカウントアップし、特定のCPUを指定する整数です。 この整数はWrapperが実行されるマシン上に存在するCPUの実際の数以下ではければなりません。

例1 (WrapperはCPU1とCPU2にしか実行する許可をしません):
wrapper.cpu_affinity.default=FALSE
wrapper.cpu_affinity.1=TRUE
wrapper.cpu_affinity.2=TRUE
例2 (WrapperをCPU1とCPU3に実行されることを防ぐ):
wrapper.cpu_affinity.default=TRUE
wrapper.cpu_affinity.1=FALSE
wrapper.cpu_affinity.3=FALSE

注意

HP-UXとSolarisの場合、Wrapperに一つのCPUとしか結合できません。構成で複数のCPUが有効になっている場合、Wrapperは規定で停止します。また、wrapper.cpu_affinity.strictFALSEに設定されている場合、最初の有効なCPUを選択します。

wrapper.cpu_affinity.strict

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

このプロパティのデフォルト値はTRUEで、Wrapperの設定がマシン上の実際のCPUと一致しない場合、Wrapperが例外を記録し、最終的に停止します。 その例外をクロックせず、継続実行するにはwrapper.cpu_affinity.strictFALSEに設定することが出来ます。そうするとWrapperは「警告」ステータスをメッセージログに記録します。

例:
wrapper.cpu_affinity.strict=FALSE

警告

例外は次の通りです。

  • CPUのいずれかが'wrapper.cpu_affinity.<n>'をで定義されていたが、実際にマシンに存在しない。 wrapper.cpu_affinity.strict=FALSEに設定すると、Wrapperは存在しないCPUを無視します。
  • Wrapperはマシン上の全てのCPUで実行不可に設定されています。 wrapper.cpu_affinity.strict=FALSEに設定すると、Wrapperはマシン上のすべてのCPUで実行できるようになります(プロセッサアフィニティが無効になっていると同様)。
  • 何らかの理由でオペレーティングシステムは指定されたCPUのいずれも割り当てることはできません。 wrapper.cpu_affinity.strict=FALSEに設定すると、Wrapperはマシン上のすべてのCPUで実行できるようになります(プロセッサアフィニティが無効になっていると同様)。

JVMプロセス用のプロセッサアフィニティのプロパティ

wrapper.java.cpu_affinity.set

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

JVMプロセス用のプロセッサアフィニティを有効、もしくは無効にします。 デフォルト値はFALSEで、JVMプロセスは全てのCPUで実行できます。

JVMのアフィニティ設定を有効にするにはTRUEに設定してください。

例:
wrapper.java.cpu_affinity.set=TRUE

wrapper.java.cpu_affinity.default

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

最初から全てのCPUをJVMプロセスで許可するにはこのプロパティをTRUEに設定してください。FALSEに設定すると、最初からJVMプロセスのすべてのCPUをブロックします。 デフォルト値はFALSE.

個々のCPUの例外を作成するために、このプロパティは最低でも一つのwrapper.cpu_affinity.<n>のプロパティに上書きされるためにあります。

例1 (デフォルトですべてのCPUを無効にする):
wrapper.java.cpu_affinity.default=FALSE
例2 (デフォルトですべてのCPUを有効にする):
wrapper.java.cpu_affinity.default=FALSE

注意

もしwrapper.java.cpu_affinity.defaultTRUEに設定されていても、wrapper.java.cpu_affinity.<n> のプロパティはどれもFALSEにされていなければ、JVMプロセスはすべてのCPUで実行できます。

逆に、wrapper.java.cpu_affinity.defaultFALSEに設定されていて、wrapper.java.cpu_affinity.<n> のプロパティはどれもTRUEになっていなければ、 JVMプロセスはどんなマシン上のすべてのCPUで実行できなくなるため、例外が発生します。(wrapper.java.cpu_affinity.strictを参照)。

wrapper.java.cpu_affinity.<n>

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

このプロパティのセットはJVMプロセスの個々のCPUを許可ブロックするためにあります。対象となるプロセッサーごとに一行を追加することで一つ、もしくは複数のプロセッサを許可ブロックすることが出来ます。

上記プロパティの"<n>"コンポネントは"1"からカウントアップし、特定のCPUを指定する整数です。 この整数はWrapperが実行されるマシン上に存在するCPUの実際の数以下ではければなりません。

例1 (JVMプロセスとCPU1とCPU2だけに実行できる):
wrapper.java.cpu_affinity.default=FALSE
wrapper.java.cpu_affinity.1=TRUE
wrapper.java.cpu_affinity.2=TRUE
例2 (JVMプロセスをCPU1とCPU3で実行することを防ぐ):
wrapper.java.cpu_affinity.default=TRUE
wrapper.java.cpu_affinity.1=FALSE
wrapper.java.cpu_affinity.3=FALSE

注意

HP-UXとSolarisの場合、Wrapperに一つのCPUとしか結合できません。構成で複数のCPUが有効になっている場合、Wrapperは規定で停止する、もしくはwrapper.java.cpu_affinity.strictFALSEに設定されている場合、最初の有効なCPUを選択します。

wrapper.java.cpu_affinity.strict

対応バージョン :3.5.27
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSX (未対応)LinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OS (未対応)IBM z/Linux

このプロパティのデフォルト値はTRUEで、Wrapperの設定がマシン上の実際のCPUと一致しない場合、Wrapperが例外を記録し、最終的に停止します。 その例外をクロックせず、継続実行するにはwrapper.java.cpu_affinity.strictFALSEに設定することが出来ます。そうするとWrapperは「警告」ステータスをメッセージログに記録します。

例:
wrapper.java.cpu_affinity.strict=FALSE

警告

例外は次の通りです。

  • CPUのいずれかが'wrapper.java.cpu_affinity.<n>'をTRUEに定義されていたが、実際にマシンに存在しない。 wrapper.java.cpu_affinity.strict=FALSEに設定すると、Wrapperは存在しないCPUを無視します。
  • Wrapperはマシン上の全てのCPUで実行することが出来ないように設定されている。 wrapper.java.cpu_affinity.strict=FALSEに設定すると、Wrapperはマシン上のすべてのCPUで実行できるようになります(プロセッサアフィニティが無効になっていると同様)。
  • 何らかの理由で、オペレーティングシステムは、指定されたCPUのいずれも割り当てることはできません。 wrapper.java.cpu_affinity.strict=FALSEに設定すると、Wrapperはマシン上のすべてのCPUで実行できるようになります(プロセッサアフィニティが無効になっていると同様)。