CPU 管理
次の設定により、CPU 使用率を最適化できます。
CPU 管理設定
プロセスはすべてのコアで実行でき、CPU を必要なだけ使い果たすことができます。 Workspace Environment Management (WEM) の [ CPU 管理設定] では、個々のプロセスが使用できる CPU キャパシティを制限できます。 CPU スパイク保護は、全体的な CPU 使用量を減らすようには設計されていません。 これは、CPU 使用率を過剰に消費するプロセスによるユーザーエクスペリエンスへの影響を軽減するように設計されています。
CPU スパイク保護を有効にすると、プロセスが指定したしきい値に達すると、WEM はプロセスの優先度を一定時間自動的に下げます。 その後、新しいアプリケーションが起動されると、優先順位の低いプロセスよりも優先順位が高く、システムはスムーズに動作し続けます。
CPU スパイク保護は、各プロセスを簡単な「スナップショット」で検査します。プロセスの平均負荷が指定されたサンプル時間内に指定された使用制限を超えると、そのプロセスの優先度は直ちに低下します。 指定した時間が経過すると、プロセスの CPU 優先度は前の値に戻ります。 プロセスは「調整」されません。 CPU Clampingとは異なり、優先度のみが低下します。
CPU スパイク保護は、個々のプロセスの少なくとも 1 つのインスタンスがしきい値を超えるまでトリガーされません。 つまり、CPU の合計消費量が指定されたしきい値を超えた場合でも、少なくとも 1 つのプロセスインスタンスがしきい値を超えない限り、CPU スパイク保護はトリガーされません。 しかし、そのプロセスインスタンスが CPU スパイク保護をトリガーすると、「インテリジェントな CPU 最適化を有効にする」オプションを有効にすると、同じプロセスの新しいインスタンスが (CPU) 最適化されます。
特定のプロセスが CPU スパイク保護をトリガーするたびに、イベントはエージェントのローカルデータベースに記録されます。 エージェントは、各ユーザーのトリガーイベントを個別に記録します。 つまり、user1 の特定のプロセスの CPU 最適化は、user2 の同じプロセスの動作には影響しません。
たとえば、Internet ExplorerがCPUの50~ 60% を消費することがある場合には、CPUスパイク保護を使用して、VDAのパフォーマンスを脅かすようなiexplore.exe インスタンスのみをターゲットにすることができます。 (対照的に、CPU クランプはすべてのプロセスに適用されます。 )
サンプル時間を試して、同じVDAにログオンしている他のユーザーに影響を与えない環境に最適な値を決定することをお勧めします。
CPUスパイク保護
注意:
- 以下の設定の CPU 使用率 は、物理マシンまたは仮想マシンの 論理プロセッサ に基づいています。 論理プロセッサの合計数は、物理マシンまたは仮想マシンのシステム情報から取得できます。 物理マシンまたは VM に合計 48 個の論理プロセッサがある場合、物理マシンまたは VM 上の CPU スパイク保護をトリガーするプロセスがコアの半分を使用するように制限し、CPU コアの使用量の制限を 24 に設定します。
CPU スパイク保護を有効にします。 一定期間( アイドル優先度時間 フィールドで指定)の CPU 使用率が指定されたパーセンテージを超えた場合、一定期間( 制限サンプル時間 フィールドで指定)のプロセスの CPU 優先度を下げます。
-
CPU スパイクを自動防ぐ。 CPU を過負荷にするプロセスの CPU 優先度を自動的に下げるには、このオプションを使用します。 このオプションは、論理プロセッサ (CPU コア) の数に基づいて CPU スパイク保護をトリガーするしきい値を自動的に計算します。 たとえば、コアが 4 つあるとします。 このオプションを有効にすると、全体の CPU 使用率が 23% を超えると、CPU リソース全体の 15% 以上を消費するプロセスの CPU 優先順位が自動的に低下します。 同様に、8コアの場合、全体のCPU使用率が 11% を超えると、CPUリソースの 8% 以上を消費するプロセスのCPU優先順位が自動的に低下します。
-
CPUスパイク保護をカスタマイズします。 CPU スパイク保護の設定をカスタマイズできます。
- CPU 使用量の制限。 CPU スパイク保護をトリガーするためにプロセスインスタンスが到達する必要がある CPU 使用率の割合。 この制限は、サーバ内のすべての論理プロセッサでグローバルであり、インスタンスごとに決定されます。 同じプロセスの複数のインスタンスでは、CPU スパイク保護トリガーを決定するときに、CPU 使用率の割合は加算されません。 プロセスインスタンスがこの制限に達しない場合、CPU スパイク保護はトリガーされません。 たとえば、サーバーVDAで複数の同時セッションで、多数の iexplore.exe インスタンスが存在するとします。 各インスタンスは、一定期間中約 35% の CPU 使用率でピークに達しているため、累積的に、iexplore.exe は CPU 使用率の一貫して高い割合を消費しています。 ただし、CPU 使用率制限を 35% 以下に設定しない限り、CPU スパイク保護はトリガーされません。
- サンプル時間を制限します。 プロセスが CPU プライオリティを下げる前に CPU 使用率の制限を超える必要がある時間。
-
アイドル優先時間。 プロセスの CPU プライオリティが低下する時間の長さ。 この時間が経過すると、優先順位は次のいずれかに戻ります。
- [CPU の優先度] タブでプロセスの優先順位が指定されておらず、[ インテリジェント **CPU最適化を有効にする** ] オプションが選択されていない場合のデフォルトレベル (標準 )。
- [ インテリジェントな CPU 最適化を有効にする ] オプションが選択されているかどうかにかかわらず、[ CPU の優先度 ] タブでプロセスの優先順位が指定されている場合に、指定したレベル。
- プロセスの動作に応じてランダムなレベル。 このケースは、[ CPU 優先度] タブでプロセスの優先順位が指定されておらず 、[ インテリジェント CPU 最適化を有効にする ] オプションが選択されている場合に発生します。 プロセスが CPU スパイク保護をトリガーする頻度が高くなるほど、CPU 優先度は低くなります。
CPU コア使用量の制限を有効にします。 CPU スパイク保護をトリガーするプロセスを、マシン上の指定された数の論理プロセッサに制限します。 1 ~ X の範囲の整数を入力します。 X はコアの総数です。 X より大きい整数を入力すると、WEM は分離されたプロセスの最大消費量を既定で X に制限します。
- CPU コア使用量を制限します。 CPU スパイク保護をトリガーするプロセスが制限される論理プロセッサの数を指定します。 VM の場合、入力する値によって、基盤となる物理ハードウェアではなく、VM 内の論理プロセッサの数にプロセスが制限されます。
インテリジェントな CPU 最適化を有効にします。 有効にすると、エージェントは CPU スパイク保護をトリガーするプロセスの CPU 優先度をインテリジェントに最適化します。 CPU スパイク保護を繰り返しトリガーするプロセスには、正しく動作するプロセスよりも起動時の CPU 優先度が徐々に低くなります。 WEM は、次のシステムプロセスに対して CPU 最適化を実行しません。
- Taskmgr
- System Idle Process
- System
- Svchost
- LSASS
- Wininit
- services
- csrss
- audiodg
- MsMpEng
- NisSrv
- mscorsvw
- VMWareResolutionset
インテリジェントな I/O 最適化を有効にします。 有効にすると、エージェントは CPU スパイク保護をトリガーするプロセスのプロセス I/O 優先度をインテリジェントに最適化します。 CPU スパイク保護を繰り返しトリガーするプロセスには、正しく動作するプロセスよりも起動時の I/O 優先度が徐々に低くなります。
指定したプロセスを除外する。 デフォルトでは、WEM CPU管理は、最も一般的なCitrixおよびWindowsコアサービスプロセスのすべてを除外します。 ただし、このオプションを使用して、CPU **スパイク保護の実行名による除外リストからプロセスを追加または削除できます** (例:notepad.exe)。 通常、ウイルス対策プロセスは除外されます。
ヒント:
- セッションでディスク I/O を引き継ぐアンチウイルススキャンを停止するには、アンチウイルスプロセスの静的な I/O 優先度を [低] に設定することもできます。 I/O 管理を参照してください。
- プロセスが CPU スパイク保護をトリガーし、プロセスの CPU 優先度が下がると、WEM はプロセスの CPU 優先度が下がるたびに警告を記録します。 イベントログの [アプリケーションとサービスログ] の [Norskale Agent Service] で、[プロセスのプロセス制限スレッドを初期化中] を探します。
CPU スパイク保護オプション
CPU スパイク保護を適用する方法を選択してください。
-
CPU スパイクを自動的に防止します。 このオプションを使用すると、システムの CPU 使用率 (単一の CPU コアに対する相対値) が 90% を超え、プロセスの CPU 使用率 (単一の CPU コアに対する相対値) が 80% を超えたときに、エージェントが CPU スパイク保護を実行できるようになります。
-
CPU スパイク保護をカスタマイズします。 CPU スパイク保護の設定をカスタマイズできます。
- CPU 使用率の上限。 CPU スパイク保護をトリガーするためにプロセスインスタンスが到達する必要がある CPU 使用率の割合。 この制限は、サーバー上のすべての論理プロセッサーに共通で、インスタンスごとに決定されます。 1 つの CPU コアを基準にして制限を構成するには、「 単一 CPU コアに対する制限の設定 」オプションを使用します。
注意:
- 整数値と非整数値の両方がサポートされています。 整数値以外の値 (たとえば 37.5%) を入力すると、8 コアのプラットフォームで 3 つ以上のコアを使用するプロセスを制限できます。
- 1 つの CPU コアに対する制限を設定します。 1 つの CPU コアを基準として CPU 使用量の制限を設定できます。 値は 100% より大きくすることができます (たとえば 200% や 250%)。 例:値を 200% に設定すると、エージェントは 2 つ以上の CPU コアを使用するプロセスを最適化します。 整数値と非整数値の両方がサポートされています。 WEM Web コンソールでのみ、 単一 CPU コアに対する制限の設定を構成できます 。
- Customize CPU スパイク保護を設定すると 、グローバル CPU 使用率制限または単一の CPU コアに対する CPU 使用率制限のいずれか早い方に達したときに、CPU スパイク保護がトリガーされます。
CPU スパイク保護をトリガーするプロセスでは、エージェントは次の操作を実行できます。
- [CPU コア使用量制限を有効にする ] オプションが選択されていない場合:エージェントはそれらのプロセスの CPU 優先度を下げます。
- [CPU コア使用量制限を有効にする ]オプションが選択されている場合:エージェントはそれらのプロセスの CPU 優先度を下げ、マシン上の指定された数の論理プロセッサに制限します。
CPU スパイク保護を設定するときは、次の点に注意してください。
- 同じプロセスの複数のインスタンスでは、CPU スパイク保護トリガーを決定するときに、CPU 使用率の割合は加算されません。 プロセスインスタンスがこの制限に達しない場合、CPU スパイク保護はトリガーされません。 たとえば、複数の同時セッションを持つマルチセッションVDAの場合、複数の chrome.exe プロセスがあります。 CPU 使用率を計算するときに、それらの CPU 使用量は合計されません。
CPU スパイク保護のサンプリング時間
サンプルの時間制限。 CPU スパイク保護が強制される前に、プロセスが CPU 使用率制限を超える必要がある時間の長さ。
CPU スパイク保護の優先度低下時間
アイドル優先時間。 プロセスの CPU プライオリティが低下する時間の長さ。 この時間が経過すると、優先順位は次のいずれかに戻ります。
プロセスの優先度が「 CPU 優先度 」タイル内に指定されておらず、「 インテリジェントな CPU 最適化を有効にする 」オプションが選択されていない場合のデフォルト レベル (通常)。 インテリジェントな CPU 最適化を有効にする オプションが選択されているかどうかに関係なく、プロセスの優先度が CPU 優先度 タイルに指定されている場合は、指定されたレベルになります。 プロセスの動作に応じて計算されるランダム レベル。 この状況は、[CPU 優先度] タイルでプロセスの優先順位が指定されておらず、 [インテリジェント CPU 最適化を有効にする ] オプションが選択されている場合に発生します。 プロセスが CPU スパイク保護をトリガーする頻度が高くなるほど、CPU 優先度は低くなります。
その他のオプション
CPU コアの使用制限を有効にします。 このオプションを使用すると、CPU スパイク保護をトリガーするプロセスを、マシン上の特定の数の論理プロセッサーに制限できます。
CPU プライオリティ
これらの設定は、プロセスがリソースと競合している場合に有効になります。 これにより、特定のプロセスの CPU 優先度レベルを最適化できるため、CPU プロセッサ時間に対して競合しているプロセスがパフォーマンスのボトルネックを引き起こさないようになります。 プロセスが互いに競合する場合、優先順位の低いプロセスは、優先順位の高い他のプロセスの後に処理されます。 したがって、CPU 全体の消費量の大きなシェアを消費する可能性は低くなります。
ここで設定するプロセスの優先順位は、プロセス内のすべてのスレッドの「基本優先順位」を確立します。 スレッドの実際の「現在の」優先順位は高くなる可能性があります(ただし、ベースよりも低いことはありません)。 コンピューター上で多数のプロセスが実行されている場合、プロセッサ時間は CPU の優先度レベルに基づいてそれらの間で共有されます。 プロセスの CPU 優先度レベルが高いほど、プロセッサ時間が割り当てられます。
注意:
特定のプロセスで CPU の優先度を低く設定した場合、全体の CPU 消費量は必ずしも減少しません。 CPU 使用率の割合に影響する他のプロセス(CPU プライオリティが高い)がある可能性があります。
[プロセスの優先度] を有効にします。 オンにすると、プロセスの CPU プライオリティを手動で設定できます。
プロセスを追加するには
- [ 追加 ] をクリックし、[ プロセス CPU 優先度の追加 ] ダイアログボックスに詳細を入力します。
- [OK] をクリックしてダイアログボックスを閉じます。
-
[ Apply ] をクリックして設定を適用します。 ここで設定したプロセス CPU の優先順位は、エージェントが新しい設定を受け取り、プロセスが再起動されたときに有効になります。
プロセス名。 拡張子のないプロセスの実行可能ファイル名です。 たとえば、Windows エクスプローラー (explorer.exe) の場合は、「エクスプローラー」と入力します。
CPUプライオリティ。 プロセス内のすべてのスレッドの「ベース」優先度。 プロセスの優先度レベルが高いほど、プロセッサ時間が長くなります。 [リアルタイム]、[高]、[通常以上]、[通常以下]、[低] から選択します。
プロセスを編集するには
プロセスを選択し、[ Edit] をクリックします。
プロセスを削除するには
プロセスを選択し、[ Remove] をクリックします。
CPU アフィニティ
プロセスアフィニティを有効にします。 有効にすると、プロセスで使用する「論理プロセッサ」の数を定義できます。 たとえば、VDAで起動されるメモ帳のすべてのインスタンスを、定義されたコア数に制限できます。
CPU クランプ
CPU クランプにより、CPU の処理能力の、指定した割合を超えるプロセスが使用されるのを防ぐことができます。 WEM は、設定した指定された CPU パーセンテージに達したときに、そのプロセスを「スロットル」(または「クランプ」)します。 これにより、プロセスが大量の CPU を消費するのを防ぐことができます。
注意:
- CPUクランプは、演算費用のかかるブルートフォースアプローチです。 面倒なプロセスの CPU 使用率を人為的に低く抑えるには、静的 CPU 優先順位と CPU アフィニティをそのようなプロセスに割り当てると同時に、CPU スパイク保護を使用する方がよいでしょう。 CPUクランプは、リソース管理では悪く悪名高いが、優先順位を落とすことができないプロセスを制御するために最もよく予約されています。
- CPUの処理能力のパーセンテージをプロセスに適用し、後で同じプロセスに異なる割合を設定したら、[ Agent Host Settings] を選択して変更を有効にします 。
設定したクランピングパーセンテージは、サーバ内の個々の CPU の総電力に適用されます。 サーバに含まれる個々のコアには適用されません。 (つまり、クアッドコアCPUの 10% は、1つのコアの 10% ではなく、CPU全体の 10% です)。
プロセスクランプを有効にします。 プロセスクランピングを有効にします。
追加。 実行可能名 (notepad.exe など) でプロセスを追加します。
[削除]。 強調表示されたプロセスをクランプリストから削除します。
編集。 特定のプロセスに入力された値を編集します。
ヒント:
- WEM がプロセスをクランプしているとき、WEM クライアントが初期化するウォッチリストにそのプロセスを追加します。 これを表示すると、プロセスがクランプされていることを確認できます。
- また、CPU クランプが機能していることを確認するには、プロセスモニターを見て、CPU 消費量がクランプ率を上回らないことを確認します。