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
- 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 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 do número de workers, e liberta a reserva no limite de telemetria existente da operação
Política de admissão
- O orçamento predefinido partilhado pelo processo é de
536870912bytes - Um valor de
0desativa a limitação por orçamento - Os pedidos em espera são admitidos por ordem FIFO, para que pedidos pequenos posteriores não deixem famintos pedidos grandes anteriores
- Um pedido maior do que o orçamento configurado só pode correr quando não houver nenhuma outra reserva ativa
- Aumentar o orçamento pode admitir imediatamente trabalho em fila, enquanto reduzi-lo nunca interrompe trabalho ativo
- As esperas em fila consultam o token de cancelamento da operação em intervalos limitados de 50 ms
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