Peak Memory Scheduling
HotPDF admits competing high-footprint operations through one process-wide byte budget before they allocate their main working sets
Covered operations
- Încărcarea documentelor
- Încărcarea documentelor
- Randare de pagini sincronă, memorată în cache și progresivă
- Optimizare selectivă a fluxurilor
- Optimizare paralelă limitată a imaginilor
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
- Bugetul implicit la nivel de proces este de
536870912octeți - O valoare de
0dezactivează limitarea bugetului - Waiter-ii sunt admiși în ordine FIFO, astfel încât cererile mici ulterioare să nu poată bloca (starve) o cerere mare anterioară
- O cerere mai mare decât bugetul configurat poate rula doar când nicio altă rezervare nu este activă
- Creșterea bugetului poate admite imediat munca în coadă, în timp ce scăderea lui nu întrerupe niciodată munca activă
- Așteptările în coadă interoghează token-ul de anulare a operației la intervale limitate de 50 ms
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