Планирование пиковой памяти

HotPDF допускает конкурирующие ресурсоёмкие операции через единый байтовый бюджет на весь процесс до того, как они выделят свои основные рабочие наборы

Охватываемые операции

Каждая операция резервирует консервативную оценку, вычисленную из размера источника, размеров рендеринга, DPI, порога stream и числа воркеров, а затем снимает резерв на существующей границе телеметрии операции

Политика допуска

В бесконфликтном случае событие ожидания не аллоцируется вовсе, а при конкуренции операция использует одно приватное событие и не крутится в цикле ожидания

Конфигурация

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 действует на уровне компонента и позволяет обходить допуск для доверенной изолированной работы, а PeakMemorySchedulerBudgetBytes настраивает общий планировщик на весь процесс

Статистика

THPDFPeakMemorySchedulerStatistics сообщает текущие и пиковые значения зарезервированных байтов, активных резервов и очереди ожидания, общее и отложенное число допусков, допуски oversized-запросов, отмены и суммарное время ожидания

THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds и MemorySchedulerDelayed относят стоимость планирования к самой последней операции

Связанные API