Peak Memory Scheduling
HotPDF slipper konkurrerende høj-fodaftryk-operationer igennem ét procesvid bytebudget, før de allokerer deres hovedarbejdssæt
Covered operations
- Document loading
- Synkron, cached og progressiv siderendering
- Parallel side-, flise- og bånd-rendering
- Selective stream optimisation
- Bounded parallel image optimisation
Hver operation reserverer et konservativt estimat afledt af sin kildestørrelse, render-dimensioner, DPI, stream-tærskel og arbejderantal og frigiver reservationen ved den eksisterende operationstelemetri-grænse
Admission policy
- Standardprocesbudgettet er
536870912bytes - A value of
0disables budget limiting - Ventende anmodninger får adgang i FIFO-rækkefølge, så senere små anmodninger ikke kan udsulte en tidligere stor anmodning
- En anmodning, der er større end det konfigurerede budget, må kun køre, når ingen anden reservation er aktiv
- Forøgelse af budgettet kan slippe køet arbejde igennem straks, mens formindskelse aldrig afbryder aktivt arbejde
- Køede ventetider poller operationens annulleringstoken med afgrænsede 50 ms-intervaller
Den ukontesterede sti allokerer ingen ventehændelse, mens kontesterede operationer bruger én privat hændelse og ikke spinner
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 er per komponent og kan omgå adgang for betroet isoleret arbejde, mens PeakMemorySchedulerBudgetBytes konfigurerer den delte procesvide scheduler
Statistics
THPDFPeakMemorySchedulerStatistics rapporterer aktuelle og maksimale reserverede bytes, aktuelle og maksimale aktive reservationer, aktuelle og maksimale ventere, samlede og forsinkede adgange, overdimensionerede adgange, annulleringer og samlet ventetid
THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds og MemorySchedulerDelayed tilskriver planlægningsomkostningen til den senest udførte operation