Scheduling del Picco di Memoria

HotPDF ammette le operazioni concorrenti ad alto ingombro attraverso un unico budget di byte a livello di processo prima che allochino i loro working set principali

Operazioni coperte

Ogni operazione riserva una stima conservativa derivata dalla dimensione della sorgente, dalle dimensioni di rendering, dal DPI, dalla soglia degli stream e dal numero di worker, poi rilascia la riserva al confine esistente di telemetria dell'operazione

Politica di ammissione

Il percorso senza contesa non alloca alcun evento di attesa, mentre le operazioni in contesa usano un evento privato e non fanno spin

Configurazione

PDF.PeakMemorySchedulerEnabled := True;
PDF.PeakMemorySchedulerBudgetBytes := 768 * 1024 * 1024;

PDF.ResetPeakMemorySchedulerStatistics;
if PDF.GetPeakMemorySchedulerStatistics(Stats) then
begin
  WriteLn(Stats.PeakReservedBytes);
  WriteLn(Stats.DelayedAdmissionCount);
  WriteLn(Stats.TotalWaitMilliseconds);
end;

PeakMemorySchedulerEnabled è per componente e può bypassare l'ammissione per lavoro isolato e fidato, mentre PeakMemorySchedulerBudgetBytes configura lo scheduler condiviso a livello di processo

Statistiche

THPDFPeakMemorySchedulerStatistics riporta byte riservati correnti e di picco, riserve attive correnti e di picco, waiter correnti e di picco, ammissioni totali e ritardate, ammissioni oversize, cancellazioni e tempo di attesa aggregato

THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds e MemorySchedulerDelayed attribuiscono il costo dello scheduling all'operazione più recente

API correlate