Settings

Theme

How to Allocate Memory

geocar.sdf1.org

72 points by tosh 4 days ago · 7 comments

Reader

anonymousDan a day ago

Nice reference, thanks.

011101101 19 hours ago

HDD: sudo dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

5o1ecist a day ago

> The operating system often has a tool for allocating contiguous virtual memory space called pages.

"often". sheesh. *rolls eyes*

It does not apply for Windows.

You cannot reserve or commit 4k-pages in Windows. For historical reasons, the minimum amount of memory you can reserve/commit is 64k.

This also applies to mapping 4k-pages around, meaning you can't.

64k is the rather wastefull lower limit.

  • Just_Harry 20 hours ago

    And the historical reason why the allocation-granularity is 64 KB instead of 4 KB (or the page-size) is that it made DLL relocation very slightly faster on Alpha AXP processors. No, really! https://devblogs.microsoft.com/oldnewthing/20031008-00/?p=42...

  • binarycrusader 21 hours ago

    Can you clarify?

    As far as I'm aware, dwAllocationGranularity returned via GetSystemInfo determines the MEM_RESERVE alignment and size. Yes, in practice this is always 64KiB but may not always be true in the future.

    Additionally, dwPageSize returned via GetSystemInfo determines the alignment and size for MEM_COMMIT which in practice is 4KiB or 16KiB.

    Put differently, while an application might be stuck with allocation-granularity reservations, the actual commit is in units of page size, right?

    https://learn.microsoft.com/en-us/windows/win32/memory/reser...

    Page protections are also based on page size afaik, for example: https://www.softwareverify.com/blog/leaking-memory-with-virt...

    Or the way I read it, you might be stuck with a dwAllocationGranularity reservation, but the actual commit increment is in units of dwPageSize.

    • 5o1ecist 21 hours ago

      Ha! You're right! It applies to reservation and mapping, not to committing!

      Thank you, it's been a while!

  • dooglius 21 hours ago

    How does WSL1 do it then?

    Anyway, the section you are quoting makes no claim as the the permitted granularity.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection