|Title||Reservoir refuses to supply memory|
|Assigned user||Gareth Rees|
|Description||If you follow these steps:|
1. Create an AMC pool with default arguments and an AP.
2. Create a low-memory reservoir with plenty of space.
3. Set the arena commit limit.
4. Allocate from the AP until allocation fails.
5. Allocate from the AP with the reservoir permit.
Then the allocation at step 5 fails, even though the reservoir has plenty of memory. This causes MMQA test function/132.c to fail.
|Analysis||This is because the low-memory reservoir can only withdraw a grain at a time. In ReservoirWithdraw :|
/* @@@@ As a short-term measure, we only permit the reservoir to */
/* allocate single-page regions. */
/* See .improve.contiguous & change.dylan.jackdaw.160125 */
if (size != ArenaGrainSize(arena))
This affects any pool whose EXTEND_BY is greater than the arena grain size. Since change 186832  the default EXTEND_BY for the AMC pool class is 8192, but the default arena grain size is 4096, so this fails.
Test function/132.c passes if it creates the AMC pool with EXTEND_BY set to 4096, but this isn't a solution: it just hides the problem.
|Created by||Gareth Rees|
|Created on||2014-10-07 23:50:46|
|Last modified by||Richard Brooksby|
|Last modified on||2016-03-15 05:23:43|
|History||2014-10-07 GDR Created.|
|190000||closed||2016-03-13 20:34:01||Richard Brooksby||Basic removal of the reservoir pool from code and design.
Imported from Git
Author: Richard Brooksby <firstname.lastname@example.org> 1457901144 +0000
Committer: Richard Brooksby <email@example.com> 1457901144 +0000