Planificación de memoria máxima
HotPDF admite operaciones competidoras de gran huella a través de un único presupuesto de bytes en todo el proceso antes de que asignen sus principales conjuntos de trabajo
Operaciones cubiertas
- Carga de documentos
- Renderizado de páginas síncrono, en caché y progresivo
- Renderizado paralelo por página, tile y banda
- Optimización selectiva de streams
- Optimización de imágenes paralela y acotada
Cada operación reserva una estimación conservadora derivada de su tamaño de origen, dimensiones de render, DPI, umbral de stream y recuento de workers, y después libera la reserva en el límite de telemetría de operación existente
Política de admisión
- El presupuesto predeterminado en todo el proceso es de
536870912bytes - Un valor de
0deshabilita la limitación de presupuesto - Los solicitantes en espera se admiten en orden FIFO para que las solicitudes pequeñas posteriores no puedan privar de recursos a una solicitud grande anterior
- Una solicitud mayor que el presupuesto configurado solo puede ejecutarse cuando no hay otra reserva activa
- Incrementar el presupuesto puede admitir trabajo en cola de inmediato, mientras que reducirlo nunca interrumpe el trabajo activo
- Las esperas en cola sondean el token de cancelación de la operación en intervalos acotados de 50 ms
La ruta sin contención no asigna ningún evento de espera, mientras que las operaciones con contención usan un único evento privado y no giran
Configuración
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 es por componente y puede omitir la admisión para trabajo aislado de confianza, mientras que PeakMemorySchedulerBudgetBytes configura el planificador compartido en todo el proceso
Estadísticas
THPDFPeakMemorySchedulerStatistics informa de los bytes reservados actuales y máximos, las reservas activas actuales y máximas, los solicitantes en espera actuales y máximos, las admisiones totales y diferidas, las admisiones de gran tamaño, las cancelaciones y el tiempo de espera agregado
THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds y MemorySchedulerDelayed atribuyen el coste de planificación a la operación más reciente