Programación de memoria pico
HotPDF admite operaciones competidoras de gran footprint a través de un único presupuesto de bytes a nivel de proceso antes de que asignen sus principales working sets
Operaciones cubiertas
- Carga de documentos
- Renderizado de páginas síncrono, cacheado y progresivo
- Renderizado paralelo de páginas, tiles y bands
- Optimización selectiva de streams
- Optimización de imágenes paralela acotada
Cada operación reserva una estimación conservadora derivada de su tamaño de origen, dimensiones de renderizado, DPI, umbral de stream y conteo de workers, y luego libera la reserva en la frontera existente de telemetría de la operación
Política de admisión
- El presupuesto predeterminado a nivel de proceso es de
536870912bytes - Un valor de
0deshabilita la limitación por presupuesto - Los waiters se admiten en orden FIFO para que las solicitudes pequeñas posteriores no provoquen starvation de una solicitud grande anterior
- Una solicitud mayor que el presupuesto configurado puede ejecutarse solo cuando no hay ninguna otra reserva activa
- Aumentar el presupuesto puede admitir trabajo en cola de inmediato, mientras que disminuirlo nunca interrumpe el trabajo activo
- Las esperas en cola hacen polling del cancellation token de la operación a intervalos acotados de 50 ms
La ruta sin contención no asigna ningún wait event, mientras que las operaciones con contención usan un evento privado y no hacen spin
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 confiable, mientras que PeakMemorySchedulerBudgetBytes configura el scheduler compartido a nivel de proceso
Estadísticas
THPDFPeakMemorySchedulerStatistics reporta los bytes reservados actuales y pico, las reservas activas actuales y pico, los waiters actuales y pico, las admisiones totales y retrasadas, las admisiones sobredimensionadas, las cancelaciones y el tiempo de espera agregado
THPDFOperationTelemetry.ScheduledMemoryBytes, MemorySchedulerWaitMilliseconds y MemorySchedulerDelayed atribuyen el costo de programación a la operación más reciente