Peak Memory Scheduling

HotPDF admits competing high-footprint operations through one process-wide byte budget before they allocate their main working sets

Covered operations

Fiecare operație rezervă o estimare prudentă, derivată din dimensiunea sursei, dimensiunile de randare, DPI, pragul de stream și numărul de workeri, apoi eliberează rezervarea la limita existentă de telemetrie a operației

Admission policy

Calea fără contenție nu alocă niciun event de așteptare, iar operațiile aflate în contenție folosesc un singur event privat și nu fac spin

Configuration

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 se setează per componentă și poate ocoli admisia pentru munca izolată de încredere, în timp ce PeakMemorySchedulerBudgetBytes configurează scheduler-ul partajat la nivel de proces

Statistics

THPDFPeakMemorySchedulerStatistics raportează octeții rezervați curenți și de vârf, rezervările active curente și de vârf, waiter-ii curenți și de vârf, admisiile totale și cele întârziate, admisiile supradimensionate, anulările și timpul agregat de așteptare

THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds și MemorySchedulerDelayed atribuie costul de planificare ultimei operații

API-uri asociate