<!-- llms-explorer concept facts · https://llms-explorer.com/tree/allocation-path-behind-mtlresourcestoragemodesha/ · pack 2026-10-05 · ~353 tokens -->

# Allocation path behind MTLResourceStorageModeShared buffers (IOGPU vs IOSurface)

> The macOS `footprint` tool lists MLX Metal allocations under a region named "IOAccelerator (graphics)", so the allocation is accounted as graphics (IOAccelerator) memory, not as a plain malloc or IOSurface region.

Parent: [Mac local LLMs: Memory and wired limits](https://llms-explorer.com/tree/mac-local-llms-memory-and-wired-limits/) · 1 facets · 5 facts · page: https://llms-explorer.com/tree/allocation-path-behind-mtlresourcestoragemodesha/

## Facts

- The macOS `footprint` tool lists MLX Metal allocations under a region named "IOAccelerator (graphics)", so the allocation is accounted as graphics (IOAccelerator) memory, not as a plain malloc or IOSurface region. — [source](https://github.com/ml-explore/mlx/issues/3896)
- The same tool output marked those pages "all DIRTY, 0 reclaimable". — [source](https://github.com/ml-explore/mlx/issues/3896)
- Whether an IOSurface sits underneath is not stated in any source read. — source: `asserted`
- `footprint <pid>` on an M5 Max running MLX 0.32.0 showed 109 GB under "IOAccelerator (graphics)", all dirty, with phys_footprint 110 GB. — [source](https://github.com/ml-explore/mlx/issues/3896)
- The existing dossier's allocation-path open question is narrowed to the IOAccelerator (graphics) family; IOSurface is not named in this footprint listing. — source: `asserted`
