Szeregowanie pamięci szczytowej
HotPDF dopuszcza konkurujące operacje o dużym śladzie pamięciowym przez jeden procesowy budżet bajtów, zanim zaalokują swoje główne zbiory robocze
Objęte operacje
- Ładowanie dokumentów
- Renderowanie stron synchroniczne, z pamięci podręcznej i progresywne
- Równoległe renderowanie stron, kafli i pasów
- Selektywna optymalizacja strumieni
- Ograniczona równoległa optymalizacja obrazów
Każda operacja rezerwuje konserwatywną estymatę wyliczoną z rozmiaru źródła, wymiarów renderowania, DPI, progu strumienia i liczby workerów, a potem zwalnia rezerwację na istniejącej granicy telemetrii operacji
Polityka wstępu
- Domyślny budżet procesowy to
536870912bajtów - Wartość
0wyłącza ograniczanie budżetem - Czekający są wpuszczani w kolejności FIFO, więc późniejsze małe żądania nie mogą zagłodzić wcześniejszego dużego
- Żądanie większe od skonfigurowanego budżetu może działać tylko wtedy, gdy żadna inna rezerwacja nie jest aktywna
- Zwiększenie budżetu może natychmiast wpuścić zakolejkowaną pracę, a zmniejszenie nigdy nie przerywa aktywnej pracy
- Zakolejkowane oczekiwania odpytują token anulowania operacji w ograniczonych odstępach 50 ms
Ścieżka bez konkurencji nie alokuje zdarzenia oczekiwania, a operacje skonfliktowane używają jednego prywatnego zdarzenia i nie wykonują aktywnego czekania (spin)
Konfiguracja
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 dotyczy pojedynczego komponentu i może omijać wstęp dla zaufanej izolowanej pracy, a PeakMemorySchedulerBudgetBytes konfiguruje współdzielony szeregowiec procesowy
Statystyki
THPDFPeakMemorySchedulerStatistics raportuje bieżące i szczytowe zarezerwowane bajty, bieżące i szczytowe aktywne rezerwacje, bieżących i szczytowych oczekujących, wpuszczenia łącznie i opóźnione, wpuszczenia przewymiarowane, anulowania i zagregowany czas oczekiwania
THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds i MemorySchedulerDelayed przypisują koszt szeregowania do najnowszej operacji