IoPageLock Limit Question

By 40 oz.
Mar 11, 2002
  1. The setting for IO page lock limit in the registry is supposed to be set in bytes or kilobytes for win 2k? I'm confused because the 3ds tweak tells me to set it in bytes but the values are for kilobytes. When i use Cacheman and set the value, the value is set in bytes so for instance if i use cache man the value in decimals would be 100663296 for a 96meg setting, while the 3ds setting would be 96256 for a 96meg setting. Which one is correct?
  2. TS | Thomas

    TS | Thomas TS Rookie Posts: 1,319

    Kilobytes is correct, I'll fix that;

    This DWORD value limits the maximum amount of kilobytes that can be locked for I/O operations. Right click on this setting & select Modify, then select the Decimal button.
    Set the value in KB there
  3. Mictlantecuhtli

    Mictlantecuhtli TS Evangelist Posts: 4,345   +11

    I don't know if Cacheman warns you about this, but I do:
    Some CD-burners will make coasters if you alter this setting.
  4. jeh

    jeh TS Rookie

    A few FACTS, not speculation...

    First off, it's most definitely in bytes, not kilobytes. (The first thing the code does with it is shift it right 12 bits, to turn the number into number of pages. If you have a debugger hooked up you can see the result in the global MmLockPagesLimit...)

    Second, if you set it to something less than 524,288 (512K), the system will just set it to 524,288 before converting it to pages and storing the result. Also, if you set it too large for the available memory, the system will, you guessed it, set it back down to 512K. Since lots of "tweak" sites are saying that the value is expressed in KB, this results in very small numbers in the registry value, resulting in the default value being used internally.

    Third, very few setups are going to even use a fraction of the 512K default. Setting it larger will not make anything run faster unless you're already running into the limit. This value sets a quota on how much memory can be temporarily page-locked for the duration of currently-pending DMA IO requests. You need to understand that most of the time you have only one IO request pending per disk device, and most of those requests are 64Kbytes or less in size. (Use PerfMon and see.) Most systems never bump into this limit and if they do, the result is FAILURE of I/O requests, not poor performance.

    Fourth, IoPageLockLimit is ignored as of Win2K SP1, SP2, and Windows XP. Fergetaboutit, unless you're running a very old version of the OS. You can prove this by running Mark Russinovich's "strings" on ntoskrnl.exe, and noting that the string "IoPageLockLimit" is gone as of SP1, or by using his "regmon" and noticing that the value is no longer being read.

    All indications to the contrary are placebo effect, i.e. "I tweaked this and the result was so and so," but that doesn't prove that the tweak CAUSED so-and-so. Basic post hoc fallacy.
Topic Status:
Not open for further replies.

Similar Topics

Add your comment to this article

You need to be a member to leave a comment. Join thousands of tech enthusiasts and participate.
TechSpot Account You may also...