gc: Poor Richard's Memory Manager

[ bsd3, data, library ] [ Propose Tags ] [ Report a vulnerability ]

This package implements a form of Poor Richard's Memory Manager by Hertz, Kane, Keudel, Bai, Ding, Gu and Bard in user-space in GHC.

Usage:

import System.Mem.Manager
main = do
  _ <- selfishManager
  ...

Now, the background thread that was spawned by selfishManager will watch for signs that the host operating system is starting to cause the current process to page out to disk and respond with more aggressive garbage collection.

This empowers your code to try to avoid the inevitable death spiral that follows when GC has to happen with paged out data.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0, 0.0.1, 0.0.2, 0.0.3, 0.1
Change log CHANGELOG.markdown
Dependencies base (>=4.8 && <5) [details]
Tested with ghc ==7.10.3, ghc ==8.0.2, ghc ==8.2.2, ghc ==8.4.4, ghc ==8.6.5, ghc ==8.8.4, ghc ==8.10.4, ghc ==9.0.1
License BSD-3-Clause
Copyright Copyright (C) 2015-2021 Edward A. Kmett
Author Edward A. Kmett
Maintainer Edward A. Kmett <ekmett@gmail.com>
Revised Revision 1 made by EdwardKmett at 2021-04-13T22:46:03Z
Category Data
Home page http://github.com/ekmett/gc/
Bug tracker http://github.com/ekmett/gc/issues
Source repo head: git clone git://github.com/ekmett/gc.git
Uploaded by EdwardKmett at 2021-04-13T18:58:35Z
Distributions NixOS:0.1
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 3365 total (9 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for gc-0.1

[back to package description]

gc

Build Status

Experimenting with building Poor Richard's Memory Manager in Haskell user space.

import System.Mem.Manager

main = do
  _ <- selfishManager
  ...

Now an oracle would look for signs of memory pressure from the host operating system and attempt more aggressive garbage collection in response. The current implementation matches the 'GenMS+Selfish' scheme from the original paper due to lack of information from GHC about how many pages have been returned to the OS.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.

-Edward Kmett