Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Large hash tables can result in a feedback loop of collections and reallocations of the hash table #215

Closed
thejayps opened this issue May 2, 2023 · 2 comments · Fixed by #230
Labels
essential Will cause failure to meet customer requirements. Assign resources.

Comments

@thejayps
Copy link
Contributor

thejayps commented May 2, 2023

This issue is described here: https://www.ravenbrook.com/project/mps/custom/cet/main/manual/html/custom/cet/hasharray.html

A solution is also described above and has been implemented for a client's custom MPS.

@thejayps thejayps added the essential Will cause failure to meet customer requirements. Assign resources. label May 2, 2023
@thejayps
Copy link
Contributor Author

thejayps commented Jun 5, 2023

Further information on requirements from discussion with Configura:

  • Hash arrays are used pretty much "everywhere all the time" (quote from @thejayps notes).
  • The solution provided has been an effective functional workaround to the problem except for pathological situations (creating a hash table of every object in memory for a debugging tool)
  • Configura don't report any performance issues with the solution provided so far.

@rptb1
Copy link
Member

rptb1 commented Jun 6, 2023

The interface and implementation might be improved by providing a way to "reallocate" an object, in the sense that the client can inform the MPS that a new object has the same mortality properties as an existing object. In this case, the mutator would allocate the new hash array with the same props as the old one, and the MPS could place it in e.g. the same generation. This would be a general interface not restricted to the rehashing problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
essential Will cause failure to meet customer requirements. Assign resources.
Projects
None yet
2 participants