Planiranje vršne memorije
HotPDF prima konkurentne operacije sa velikim otiskom kroz jedan budžet bajtova u opsegu procesa pre nego što dodele svoje glavne radne skupove
Pokrivene operacije
- Učitavanje dokumenata
- Sinhrono, keširano i progresivno renderovanje stranica
- Paralelno renderovanje stranica, pločica i traka
- Selektivna optimizacija tokova
- Ograničena paralelna optimizacija slika
Svaka operacija rezerviše konzervativnu procenu izvedenu iz veličine izvora, dimenzija renderovanja, DPI, praga toka i broja radnika, zatim oslobađa rezervaciju na postojećoj granici telemetrije operacije
Politika prijema
- Podrazumevani budžet u opsegu procesa je
536870912bajtova - Vrednost
0isključuje ograničavanje budžeta - Čekajući se primaju po FIFO redosledu tako da kasniji mali zahtevi ne mogu izgladneti raniji veliki zahtev
- Zahtev veći od konfigurisanog budžeta može se izvršiti samo kada nijedna druga rezervacija nije aktivna
- Povećanje budžeta može odmah primiti rad u redu, dok smanjenje nikada ne prekida aktivan rad
- Zakasneli čekovi anketiraju token otkazivanja operacije u ograničenim intervalima od 50 ms
Put bez konkurencije ne dodeljuje događaj čekanja, dok konkurentne operacije koriste jedan privatni događaj i ne vrte se
Konfiguracija
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 je po komponenti i može da zaobiđe prijem za poverljiv izolovani rad, dok PeakMemorySchedulerBudgetBytes konfiguriše deljeni planer u opsegu procesa
Statistika
THPDFPeakMemorySchedulerStatistics prijavljuje trenutne i vršne rezervisane bajtove, trenutne i vršne aktivne rezervacije, trenutne i vršne čekajuće, ukupne i zakasnele prijeme, prevelike prijeme, otkazivanja i agregatno vreme čekanja
THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds i MemorySchedulerDelayed pripisuju cenu planiranja najskorijoj operaciji