Fabian Thorand (43f4bbc3) at 04 Aug 14:20
Add regression test for IO manager lock-up
Fabian Thorand (41c29c70) at 12 Jun 12:39
Handle exceptions from IO manager backend
Fabian Thorand (9001b10f) at 12 Jun 12:34
Handle exceptions from IO manager backend
Fabian Thorand (9d1a8d87) at 12 Jun 12:26
Remove redundant case statement in rts/js/mem.js.
... and 2271 more commits
Fabian Thorand (99cc3ad8) at 12 Jun 12:26
Document subtleties of multi-threaded file descriptor usage
... and 2273 more commits
Fabian Thorand (24a69b62) at 26 Aug 16:19
Implement compact region inheritance
... and 849 more commits
Ben Gamari (982e71e4) at 19 Apr 04:52
Add note about inefficiency in returnMemoryToOS
... and 3 more commits
Ben Gamari (1e7d9a5b) at 13 Apr 20:05
Add note about inefficiency in returnMemoryToOS
... and 201 more commits
Fabian Thorand (f80263f9) at 18 Mar 16:13
Add note about inefficiency in returnMemoryToOS
... and 1 more commit
Wrong repo :/
Fixes ghc/ghc#19897 in the following way:
O(n log n)
) and perform a single merge pass to merge it into the actual free list (O(n)
)That way, we are asymptotically faster compared to the situation explained in the above issue, where every individual free call incurs a linear search on the free list, resulting in O(n^2)
runtime in the worst case.
You can see the difference in runtime of the final measured GC of the reproducer from the original issue in the following graph:
The overall runtime of the reproducer also slightly improved:
I also added a comment about another potential case of "accidentally quadratic" that I didn't tackle in this PR, because it didn't occur (yet) in practice.
Fixes ghc/ghc#19897 in the following way:
O(n log n)
) and perform a single merge pass to merge it into the actual free list (O(n)
)That way, we are asymptotically faster compared to the situation explained in the above issue, where every individual free call incurs a linear search on the free list, resulting in O(n^2)
runtime in the worst case.
You can see the difference in runtime of the final measured GC of the reproducer from the original issue in the following graph:
The overall runtime of the reproducer also slightly improved:
I also added a comment about another potential case of "accidentally quadratic" that I didn't tackle in this PR, because it didn't occur (yet) in practice.
Fabian Thorand (981a1d24) at 18 Mar 15:35
Add note about inefficiency in returnMemoryToOS
... and 1 more commit
Fabian Thorand (4c8b94a3) at 18 Mar 15:14
Move actual freeing to the right place
... and 1137 more commits
Fabian Thorand (213254f6) at 17 Jan 10:45
fixup! Defer freeing of mega block groups
... and 3 more commits
Ben Gamari (09a54303) at 24 Sep 19:15
Remove special case for large objects in allocateForCompact
... and 69 more commits
Ben Gamari (2ef5c4b0) at 14 Sep 00:56
Remove special case for large objects in allocateForCompact
... and 407 more commits