Agendamento de memória de pico

O HotPDF admite operações concorrentes de grande pegada através de um orçamento de bytes partilhado pelo processo, antes de estas alocarem os respetivos conjuntos de trabalho principais

Operações abrangidas

Cada operação reserva uma estimativa conservadora derivada do tamanho da origem, das dimensões de renderização, do DPI, do limiar de stream e do número de workers, e liberta a reserva no limite de telemetria existente da operação

Política de admissão

O caminho sem contenção não aloca nenhum evento de espera, enquanto as operações com contenção usam um evento privado e não fazem spin

Configuração

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 é por componente e pode contornar a admissão para trabalho isolado de confiança, enquanto PeakMemorySchedulerBudgetBytes configura o agendador partilhado ao nível do processo

Estatísticas

THPDFPeakMemorySchedulerStatistics informa os bytes reservados atuais e de pico, as reservas ativas atuais e de pico, os pedidos em espera atuais e de pico, as admissões totais e atrasadas, as admissões oversized, os cancelamentos e o tempo de espera agregado

THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds e MemorySchedulerDelayed atribuem o custo de agendamento à operação mais recente

APIs relacionadas