JOBOBJECT_IO_RATE_CONTROL_INFORMATION構造体 (jobapi2.h)

ジョブの I/O レートを制御するために使用される情報が含まれます。 この構造体は、 SetIoRateControlInformationJobObject 関数と QueryIoRateControlInformationJobObject 関数によって使用されます。

構文

typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION {
  LONG64 MaxIops;
  LONG64 MaxBandwidth;
  LONG64 ReservationIops;
  PCWSTR VolumeName;
  ULONG  BaseIoSize;
  ULONG  ControlFlags;
} JOBOBJECT_IO_RATE_CONTROL_INFORMATION;

メンバー

MaxIops

1 秒あたりの I/O 操作の I/O レートの上限 (IOPS)。 制限を指定しない場合は、0 に設定します。

MaxIopsMaxBandwith の両方を設定すると、オペレーティング システムによって I/O レートが到達する最初の制限が適用されます。

MaxBandwidth

1 秒あたりの I/O レートの最大制限 (バイト単位)。 制限を指定しない場合は、0 に設定します。

MaxBandwithMaxIops の両方を設定すると、オペレーティング システムによって I/O レートが到達する最初の制限が適用されます。

ReservationIops

オペレーティング システムがジョブに予約する最小 I/O レートを設定します。 ジョブの予約を行うには、この値を 0 に設定します。

オペレーティング システムを使用すると、ジョブは可能であれば、この速度で I/O 操作を実行できます。 すべてのジョブの最小レートの合計がオペレーティング システムの容量を超えた場合、オペレーティング システムが各ジョブで I/O 操作を実行できる速度は、ジョブの予約に比例します。

VolumeName

I/O レートのポリシーを適用するボリュームの NT デバイス名。 NT デバイス名の詳細については、「 NT デバイス名」を参照してください。

このメンバーが NULL の場合、I/O レートのポリシーはオペレーティング システムのすべてのボリュームに適用されます。 たとえば、このメンバーが NULLMaxIops メンバーが 100 の場合、100 IOPS のすべてのボリュームで I/O レートの集計制限を設定するのではなく、各ボリュームの I/O レートの上限は 100 IOPS に設定されます。

BaseIoSize

正規化された I/O ユニットの基本サイズ (バイト単位)。 たとえば、 BaseIoSize メンバーが 8,000 の場合、8,000 バイトごとに 1 つの I/O ユニットとしてカウントされます。 この例では 4,000 バイトも 1 つの I/O 単位ですが、8,001 バイトは 2 つの I/O ユニットです。

この基本 I/O サイズの値は、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\コントロール\QoSStorageBaseIOSize 値を使用して設定できます

レジストリ キー。

BaseIoSize メンバーの値には、次の制約があります。

  • SetIoRateControlInformationJobObject 関数では、関数に渡すJOBOBJECT_IO_RATE_CONTROL_INFORMATION構造体の BaseIoSize メンバーが 0 である必要があります。
  • VolumeName メンバーが指定するボリュームが I/O レートの制御をサポートしていない場合、QueryIoRateControlInformationJobObject メソッドは、この構造体の BaseIoSize メンバーを 0 に設定します。
  • VolumeName メンバーが指定するボリュームで I/O レートの制御がサポートされている場合、QueryIoRateControlInformationJobObject メソッドは、この構造体の BaseIoSize メンバーを正規化された I/O 単位の基本サイズに設定します。
ジョブを作成せずに正規化された I/O ユニットの基本サイズを照会するには、ジョブに関連付けられていないプロセスから hJob パラメーターを NULL に設定して QueryIoRateControlInformationJobObject を呼び出します。

ControlFlags

I/O レートを制御するためのポリシー。 このメンバーには、次のいずれかの値を指定できます。

説明
JOB_OBJECT_IO_RATE_CONTROL_ENABLE
0x1
この構造体が SetIoRateControlInformationJobObject 関数に渡されるときに、ジョブの I/O レートの制御をオンにします。 QueryIoRateControlInformationJobObject 関数でこの構造体を使用すると、ジョブの I/O レートの制御が有効になっていることを示します。

解説

大事なWindows 10 バージョン 1607 以降では、この構造体はサポートされなくなりました。
 
入れ子になったジョブの階層内のジョブに対して設定できる I/O レート制御は 1 つだけです。 指定した設定は、そのジョブとそのジョブの階層内の子ジョブに適用されます。 この設定は、親ジョブから階層の最上位までのジョブのチェーンには適用されません。 I/O レート制御を設定した階層内の元のジョブの設定は、引き続き変更できます。 ただし、親ジョブを含む階層内の他のジョブの I/O レートの制御に値を設定しようとすると失敗します。

要件

   
サポートされている最小のクライアント Windows 10 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2016 [デスクトップ アプリのみ]
Header jobapi2.h

関連項目

QueryIoRateControlInformationJobObject

SetIoRateControlInformationJobObject