|Title||Tract tables are inflexible|
|Assigned user||Gareth Rees|
|Description||A tract is the unit of allocation from the arena and so segments must be made up of tracts. But this is inflexible: we want to be able to allocate in large units (so that there is less space and time overhead in maintaining the allocation table -- see job003823) but we want segments to be small (so that remembered sets are more accurate).|
|Analysis||Tracts are used for allocation, for address lookup, for the arena's ring of spare pages, and by the MFS and MV pool classes. So these concerns need to be separated. |
Plan is as follows:
1. Fix job003554 so that we don't have to worry about chunks.
Fixed by branch/2014-01-17/cbs-tract-alloc  and branch/2014-05-17/chunk-tree .
2. Eliminate the duplicate white set from the tract table and use the segment's white set instead. This adds an extra lookup in some cases in _mps_fix2, so evaluate the performance.
Fixed by branch/2016-03-30/tract-white-elim .
3. Eliminate the tract utility pointer from MFS by storing the extents on a ring.
Fixed by 2018-07-03/mfs-tractp .
4. Eliminate the use of tracts for the arena's ring of spare pages by storing the spare memory in a land.
5. Improve the performance of MVFF so that it is competitive with MV and so suitable for use as the arena's control pool.
Fixed by branch/2018-07-04/mvff-perf .
6. Use MVFF as the arena's control pool.
Fixed by branch/2016-03-01/mvff-control .
7. Deprecate and remove the MV pool class.
Fixed by branch/2018-08-01/rm-mv .
8. Eliminate the tract's pool utility pointer.
Fixed by branch/2016-03-30/tract-p-elim .
9. Create a new module that handles tract/page lookup *only*, separating out the allocation purpose of the current tract table.
10. Swap this in for tract lookup.
11. Evaluate performance.
12. Rip out old tract table.
|Created by||Gareth Rees|
|Created on||2014-05-15 19:48:51|
|Last modified by||Gareth Rees|
|Last modified on||2020-08-30 17:12:20|
|History||2014-05-15 GDR Created.|
|194869||open||2018-08-02 14:43:29||Gareth Rees||Merge branch/2018-08-01/rm-mv into the master sources.|
|194716||open||2018-07-23 11:31:47||Gareth Rees||Merge branch/2016-03-30/tract-p-elim into the master sources.|
|194638||open||2018-07-13 13:09:26||Gareth Rees||Merge branch/2016-03-30/tract-white-elim into the master sources.|
|194442||open||2018-07-05 13:37:01||Gareth Rees||Merge branch/2016-03-01/mvff-control into the master sources.|
|194439||open||2018-07-05 12:54:16||Gareth Rees||Merge branch/2018-07-04/mvff-perf into the master sources.|
|194414||open||2018-07-04 17:13:53||Gareth Rees||Merge branch/2018-07-03/mfs-tractp into the master sources.|
|186564||open||2014-06-13 14:31:31||Gareth Rees||Merge branch/2014-05-17/chunk-tree into the master sources.|
|184783||open||2014-03-13 15:28:06||Richard Brooksby||Merging branch/2014-01-17/cbs-tract-alloc into master.|