Skip to content

Release netCDF memory-map pages after each frame - #5463

Open
erikfransson wants to merge 1 commit into
MDAnalysis:developfrom
erikfransson:ncdf-release-mmap-pages
Open

Release netCDF memory-map pages after each frame#5463
erikfransson wants to merge 1 commit into
MDAnalysis:developfrom
erikfransson:ncdf-release-mmap-pages

Conversation

@erikfransson

@erikfransson erikfransson commented Aug 16, 2026

Copy link
Copy Markdown

Description

NCDFReader._read_frame now drops the pages of scipy's memory map once the frame has been copied into the Timestep. Nothing else unmaps them, so without this the resident memory of the process grows towards the size of the whole trajectory file while it is read, as documented in discussion here. (ping @orbeckst )

MADV_DONTNEED does not exist on Windows, so the call is guarded by hasattr(mmap, "MADV_DONTNEED") and the reader is unchanged there.

Changes made in this Pull Request:

  • NCDFReader._read_frame now drops the pages of scipy's memory map once the
    frame has been read into the Timestep.
  • Added a test that the pages are dropped when a frame is read.

LLM / AI generated code disclosure

LLMs or other AI-powered tools (beyond simple IDE use cases) were used in this contribution: yes test written by AI

PR Checklist

  • Issue raised/referenced?
  • Tests updated/added?
  • Documentation updated/added?
  • package/CHANGELOG file updated?
  • Is your name in package/AUTHORS?
  • I have read and understand the current AI Policy
  • LLM/AI disclosure was updated.

Developers Certificate of Origin

I certify that I can submit this code contribution as described in the Developer Certificate of Origin, under the MDAnalysis LICENSE.

NCDFReader._read_frame now drops the pages of scipy's memory map once
the frame has been copied into the Timestep. Nothing else unmaps them,
so without this the resident memory of the process grows towards the
size of the whole trajectory file while it is read.

The map is read only, so dropping is safe: pages are faulted back in if
the data are read again. MADV_DONTNEED does not exist on Windows, where
the call is skipped and the reader is unchanged.
@read-the-docs-community

Copy link
Copy Markdown

@codecov

codecov Bot commented Aug 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.88%. Comparing base (c882e5c) to head (48e0e7e).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #5463   +/-   ##
========================================
  Coverage    93.87%   93.88%           
========================================
  Files          182      182           
  Lines        22522    22526    +4     
  Branches      3206     3207    +1     
========================================
+ Hits         21143    21148    +5     
  Misses         917      917           
+ Partials       462      461    -1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant