Skip to content

[ExecuTorch][MmapDataLoader] Issue F_RDADVISE on Apple platforms in UseMadvise path#19554

Open
kimishpatel wants to merge 2 commits into
gh/kimishpatel/241/basefrom
gh/kimishpatel/241/head
Open

[ExecuTorch][MmapDataLoader] Issue F_RDADVISE on Apple platforms in UseMadvise path#19554
kimishpatel wants to merge 2 commits into
gh/kimishpatel/241/basefrom
gh/kimishpatel/241/head

Conversation

@kimishpatel
Copy link
Copy Markdown
Contributor

@kimishpatel kimishpatel commented May 13, 2026

Stack from ghstack (oldest at bottom):

In the MmapDataLoader UseMadvise codepath, after the existing
madvise(MADV_WILLNEED | MADV_SEQUENTIAL) calls, also issue fcntl(F_RDADVISE)
on Apple platforms (iOS/macOS). F_RDADVISE is more aggressive than madvise
for cold starts: it schedules read-ahead on the file descriptor itself,
bringing pages into the unified buffer cache so first-touch faults during
inference are serviced from RAM instead of storage.

F_RDADVISE closes part of the gap between lazy mmap and eager file read,
while still allowing pages to be evicted under memory pressure (unlike
mlock, which pins pages and counts against RLIMIT_MEMLOCK).

Differential Revision: D104318326

…seMadvise path

In the MmapDataLoader UseMadvise codepath, after the existing
madvise(MADV_WILLNEED | MADV_SEQUENTIAL) calls, also issue fcntl(F_RDADVISE)
on Apple platforms (iOS/macOS). F_RDADVISE is more aggressive than madvise
for cold starts: it schedules read-ahead on the file descriptor itself,
bringing pages into the unified buffer cache so first-touch faults during
inference are serviced from RAM instead of storage.

F_RDADVISE closes part of the gap between lazy mmap and eager file read,
while still allowing pages to be evicted under memory pressure (unlike
mlock, which pins pages and counts against RLIMIT_MEMLOCK).

Differential Revision: [D104318326](https://our.internmc.facebook.com/intern/diff/D104318326/)

[ghstack-poisoned]
@pytorch-bot
Copy link
Copy Markdown

pytorch-bot Bot commented May 13, 2026

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/19554

Note: Links to docs will display an error until the docs builds have been completed.

❗ 1 Active SEVs

There are 1 currently active SEVs. If your PR is affected, please view them below:

❌ 1 Unclassified Failure

As of commit 6cdb879 with merge base 3a5e285 (image):

UNCLASSIFIED FAILURE - DrCI could not classify the following job because the workflow did not run on the merge base. The failure may be pre-existing on trunk or introduced by this PR:

  • Check Labels / Check labels (gh) (this job did not run on the merge base, so DrCI cannot tell whether the failure is pre-existing)
    RuntimeError: GraphQL query

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label May 13, 2026
@kimishpatel kimishpatel added the release notes: api Changes to public facing apis (any interfaces, pybinded runtime methods, etc.) label May 13, 2026
…tforms in UseMadvise path"

In the MmapDataLoader UseMadvise codepath, after the existing
madvise(MADV_WILLNEED | MADV_SEQUENTIAL) calls, also issue fcntl(F_RDADVISE)
on Apple platforms (iOS/macOS). F_RDADVISE is more aggressive than madvise
for cold starts: it schedules read-ahead on the file descriptor itself,
bringing pages into the unified buffer cache so first-touch faults during
inference are serviced from RAM instead of storage.

F_RDADVISE closes part of the gap between lazy mmap and eager file read,
while still allowing pages to be evicted under memory pressure (unlike
mlock, which pins pages and counts against RLIMIT_MEMLOCK).

Differential Revision: [D104318326](https://our.internmc.facebook.com/intern/diff/D104318326/)

[ghstack-poisoned]
kimishpatel added a commit that referenced this pull request May 13, 2026
…seMadvise path

Pull Request resolved: #19554

In the MmapDataLoader UseMadvise codepath, after the existing
madvise(MADV_WILLNEED | MADV_SEQUENTIAL) calls, also issue fcntl(F_RDADVISE)
on Apple platforms (iOS/macOS). F_RDADVISE is more aggressive than madvise
for cold starts: it schedules read-ahead on the file descriptor itself,
bringing pages into the unified buffer cache so first-touch faults during
inference are serviced from RAM instead of storage.

F_RDADVISE closes part of the gap between lazy mmap and eager file read,
while still allowing pages to be evicted under memory pressure (unlike
mlock, which pins pages and counts against RLIMIT_MEMLOCK).

Differential Revision: [D104318326](https://our.internmc.facebook.com/intern/diff/D104318326/)
ghstack-source-id: 381778987
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported meta-exported release notes: api Changes to public facing apis (any interfaces, pybinded runtime methods, etc.)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants