Peak Memory Scheduling
O HotPDF admite operações concorrentes de alto consumo por meio de um orçamento de bytes em todo o processo antes que elas aloquem seus principais conjuntos de trabalho
Operações cobertas
- Carregamento de documentos
- Renderização de páginas síncrona, em cache e progressiva
- Renderização paralela de páginas, tiles e bandas
- Otimização seletiva de streams
- Otimização paralela e limitada de imagens
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 da contagem de workers, e libera a reserva na fronteira existente de telemetria da operação
Política de admissão
- O orçamento padrão no escopo do processo é de
536870912bytes - Um valor de
0desativa a limitação por orçamento - Os que esperam são admitidos em ordem FIFO, para que requisições pequenas posteriores não causem inanição a uma requisição grande anterior
- Uma requisição maior que o orçamento configurado só pode rodar quando nenhuma outra reserva está ativa
- Aumentar o orçamento pode admitir imediatamente trabalho na fila, enquanto diminuí-lo nunca interrompe trabalho ativo
- Esperas na fila fazem polling do token de cancelamento da operação em intervalos limitados de 50 ms
O caminho sem contenção não aloca evento de espera, enquanto operações com contenção usam um evento privado e não giram
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 é por componente e pode ignorar a admissão para trabalho isolado confiável, enquanto PeakMemorySchedulerBudgetBytes configura o scheduler compartilhado no escopo do processo
Statistics
THPDFPeakMemorySchedulerStatistics reporta bytes reservados atuais e de pico, reservas ativas atuais e de pico, esperas atuais e de pico, admissões totais e atrasadas, admissões superdimensionadas, cancelamentos e tempo agregado de espera
THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds e MemorySchedulerDelayed atribuem o custo de agendamento à operação mais recente