JOBOBJECT_IO_RATE_CONTROL_INFORMATION structure (jobapi2.h)
Contains information used to control the I/O rate for a job. This structure is used by the SetIoRateControlInformationJobObject and QueryIoRateControlInformationJobObject functions.
Syntax
typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION {
LONG64 MaxIops;
LONG64 MaxBandwidth;
LONG64 ReservationIops;
PCWSTR VolumeName;
ULONG BaseIoSize;
ULONG ControlFlags;
} JOBOBJECT_IO_RATE_CONTROL_INFORMATION;
Members
MaxIops
The maximum limit for the I/O rate in I/O operations per second (IOPS). Set to 0 if to specify no limit.
When you set both MaxIops and MaxBandwith, the operating system enforces the first limit that the I/O rate reaches.
MaxBandwidth
The maximum limit for the I/O rate in bytes per second. Set to 0 to specify no limit.
When you set both MaxBandwith and MaxIops, the operating system enforces the first limit that the I/O rate reaches.
ReservationIops
Sets a minimum I/O rate which the operating system reserves for the job. To make no reservation for the job, set this value to 0.
The operating system allows the job to perform I/O operations at this rate, if possible. If the sum of the minimum rates for all jobs exceeds the capacity of the operating system, the rate at which the operating system allows each job to perform I/O operations is proportional to the reservation for the job.
VolumeName
The NT device name for the volume to which you want to apply the policy for the I/O rate. For information about NT device names, see NT Device Names.
If this member is NULL, the policy for the I/O rate applies to all of the volumes for the operating system. For example, if this member is NULL and the MaxIops member is 100, the maximum limit for the I/O rate for each volume is set to 100 IOPS, instead of setting an aggregate limit for the I/O rate across all volumes of 100 IOPS.
BaseIoSize
The base size of the normalized I/O unit, in bytes. For example, if the BaseIoSize member is 8,000, every 8,000 bytes counts as one I/O unit. 4,000 bytes is also one I/O unit in this example, while 8,001 bytes is two I/O units.
You can set the value of this base I/O size by using the StorageBaseIOSize value of the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\QoS
registry key.The value of the BaseIoSize member is subject to the following constraints:
- The SetIoRateControlInformationJobObject function requires that the BaseIoSize member of the JOBOBJECT_IO_RATE_CONTROL_INFORMATION structure that you pass to the function is 0.
- The QueryIoRateControlInformationJobObject method sets the BaseIoSize member of this structure to 0 if the volume that the VolumeName member specifies does not support the control of the I/O rate.
- The QueryIoRateControlInformationJobObject method sets the BaseIoSize member of this structure to the base size of the normalized I/O unit if the volume that the VolumeName member specifies does support the control of the I/O rate.
ControlFlags
The policy for control of the I/O rate. This member can be one of the following values.
Value | Meaning |
---|---|
|
Turns on control of the I/O rate for the job when this structure is passed to the SetIoRateControlInformationJobObject function. Indicates that control of the I/O rate for the job is turned on when this structure is used with the QueryIoRateControlInformationJobObject function. |
Remarks
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10 [desktop apps only] |
Minimum supported server | Windows Server 2016 [desktop apps only] |
Header | jobapi2.h |