poolamc.c tidy up:
neater implementation of obj1pip (amcReclaimNailed)
neater implementation of amcResetTraceIdStats -- no need for a function any more
delete lots of obsolete temporary diagnostic (superseded by AMCTraceEnd_pageret)
a few more avers (especially on buffer empty)
also revert temporary diagnostic changes in arena.c, config.h, diag.c, global.c
diag.c: fix diag-buffer at 100 screenfuls (200000 chars).
zcoll.c: reinstate Make 50000 with occasional big objs.
Copied from Perforce
Change: 168688
ServerID: perforce.ravenbrook.com
zcoll:
- parameterize BigdropSmall for big-obj size and small-obj ref-type, eg "BigdropSmall(big 28000, small A)"
- Park, to avoid all those minor collections. Explanatory comments.
poolamc.c:
- diags: AMCTraceEnd, AMCTraceEnd_perc (new), AMCTraceEnd_pad_med (new),
- AMCTraceEnd: c Segs/Pages Whiten/Reclaim, cPagesRet(ained)
- AMCTraceEnd_perc: percentage of condemned pages retained by ambig refs
- AMCTraceEnd_pad_med: over-detailed calculations of Gain & Loss for Medium segs,
requiring knowledge of size of obj1 in each seg.
diag.c:
- Just show AMCTraceEnd_perc and AMCTraceEnd_pad_med, for zcoll/BigdropSmall's purposes.
Note: poolamc.c now has several episodes of experimental diagnostic in it.
It's time to re-baseline it from an un-hacked version.
Copied from Perforce
Change: 168512
ServerID: perforce.ravenbrook.com
Currently: whitenCount & reclaimCount, for diag at AMCTraceEnd.
(These aren't interesting in themselves; next task: calculate more interesting per-trace stats).
Copied from Perforce
Change: 168490
ServerID: perforce.ravenbrook.com
Tracer calls PoolTraceEnd() when the trace is TraceFINISHED.
AbstractPoolClass uses PoolTrivTraceEnd -- a NOOP. [mpm.h, mpmst.h, mpmtypes.h, pool.c, poolabs.c]
AMC overrides with AMCTraceEnd, to emit diagnostic on how well the trace went! [poolamc.c]
Copied from Perforce
Change: 168478
ServerID: perforce.ravenbrook.com
zcoll.c: BigSmall() command -- creates small, then big, then small object.
poolamc.c: AMCDescribe(): output AMC Seg maps, showing single big object -- a pad -- at end of large-segment.
arena/config/diag: allow output of AMC Seg maps.
Copied from Perforce
Change: 167763
ServerID: perforce.ravenbrook.com
More diag:
- new traceSetSignalEmergency;
- new AMCFix_amcSegCreateNailboard and AMCHeaderFix_amcSegCreateNailboard
(note: the other, unreported, route to becoming boarded is because of a (mutator) buffer);
- in traces: show SegBase and zone;
- in TraceStart: show genZoneSets;
- in amcReclaimNailed: show cbpip and cbpad.
zcoll.c:
- sizemethod 1 to Make command: occasionally makes >1MiB objects;
- declare root_table all MPS_RANK_AMBIG.
Copied from Perforce
Change: 167726
ServerID: perforce.ravenbrook.com
Add diagnostics to show ControlPool leak when deallocating nailboards with auto_header format.
See logfiles added in this changelist.
Copied from Perforce
Change: 164383
ServerID: perforce.ravenbrook.com
code (but badness was being masked by the shield cache; see
job001706). ShieldExpose(seg) once, and ShieldCover it once, so
that _all_ .exposed.seg statements are between Expose and Cover.
Copied from Perforce
Change: 163171
ServerID: perforce.ravenbrook.com
with ".exposed.seg" statements that require that "seg" (that is:
the 'from' seg) has been ShieldExposed. (Preparatory to fixing
job001706).
Copied from Perforce
Change: 163170
ServerID: perforce.ravenbrook.com
un-tagged diags, every diag should end with \n.
poolamc.c: fix spelling of amcScanNailed_loop diag.
Copied from Perforce
Change: 163125
ServerID: perforce.ravenbrook.com
to loop. (A rare event, which might prompt a rare defect to appear).
This is diag developed for job001548, but worth leaving on by default
(in diag varieties only, natch).
Copied from Perforce
Change: 162939
ServerID: perforce.ravenbrook.com
(plus some edits: integrations were not not verbatim)
poolamc.c: Count the loops of amcScanNailed.
If amcScanNailed looped, ss.unfixedSummary is
not accurate, so move all of the ScanStateSummary into
ss.fixedSumamry, so that trace.c's .verify.segsummary
does not erroneously fail.
This fixes job001548.
trace.c: (comment) explain .verify.segsummary
poolamc.c: AMCSegSketch: four character sketch of seg-state
Copied from Perforce
Change: 162150
ServerID: perforce.ravenbrook.com
when amcScanNailed loops. Highlight cases that would (previously)
have failed .verify.segsummary. Count the loops. Show whether it
wasTotal.
AMCSegSketch: correct it to show stalo and neo the right way round.
Copied from Perforce
Change: 162001
ServerID: perforce.ravenbrook.com
not accurate, so move all of the ScanStateSummary into ss.fixedSumamry,
so that <impl/trace/#verify.segsummary> does not erroneously fail.
See also log file a2nNailedLoopReset.txt.
Copied from Perforce
Change: 162000
ServerID: perforce.ravenbrook.com
find out what the summary really is, and check against SegSummary().
Initially, check this before each AMCScan. This check does *not* fire
when the unfixed assert does; see new a2kAllobjs.txt logfile.
Copied from Perforce
Change: 161995
ServerID: perforce.ravenbrook.com
Save sketches (abzSketchTotal and abzSketchTotalPrev) in amcseg,
which get Described when unfixedSummary is wrong: let's see whether
there's a pattern to the way the previous summary was created.
Copied from Perforce
Change: 161994
ServerID: perforce.ravenbrook.com
seg.c: SegDescribe: say "buffer: NULL" if it is (rather than saying nothing).
buffer.c: BufferDescribe: now interprets buffer->mode for you.
poolamc.c: amcSegCheck: check Nailboard present onlyif SegNailed for some trace;
AMCSegDescribe: correct SEG_SUPERCLASS (so we see GCSeg fields);
say whether seg is Mobile, Boarded (there's a nailboard), or Stuck;
clearer Map symbols, and print a key for them.
Copied from Perforce
Change: 161983
ServerID: perforce.ravenbrook.com