峰值記憶體排程
HotPDF 透過單一的程序級位元組預算,在高佔用操作配置主要工作集之前先進行准入調節
涵蓋的操作
- 文件載入
- 同步、快取與漸進式頁面轉譯
- 平行頁面、圖磚與條帶轉譯
- 選擇性串流最佳化
- 有界的平行影像最佳化
每個操作依來源大小、轉譯尺寸、DPI、串流門檻與工作者數量推導出保守估計並保留額度,然後在既有的操作遙測邊界釋放保留
准入原則
- 預設的程序級預算是
536870912位元組 - 值為
0時停用預算限制 - 等待者按 FIFO 順序准入,後到的小請求不會餓死先到的大請求
- 超過設定預算的請求只有在沒有其他保留生效時才能執行
- 調大預算可立即准入排隊的工作,調小則絕不中斷進行中的工作
- 排隊等待以有界的 50 ms 間隔輪詢操作取消權杖
無爭用路徑不配置等待事件,有爭用的操作使用一個私有事件且不空轉
設定
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 是元件層級的,可讓受信任的隔離工作跳過准入,PeakMemorySchedulerBudgetBytes 則設定共享的程序級排程器
統計
THPDFPeakMemorySchedulerStatistics 回報目前與峰值保留位元組、目前與峰值生效保留數、目前與峰值等待者、總准入與延遲准入數、超額准入、取消與彙總等待時間
THPDFOperationTelemetry.ScheduledMemoryBytes、MemorySchedulerWaitMilliseconds 與 MemorySchedulerDelayed 把排程成本歸給最近一次操作