ピークメモリスケジューリング
HotPDF は、競合する高フットプリント操作が主な作業セットを割り当てる前に、1 つのプロセス全体のバイト予算を通じてそれらを受け入れます
対象操作
- ドキュメントの読み込み
- 同期・キャッシュ・プログレッシブのページレンダリング
- 並列のページ・タイル・バンドレンダリング
- 選択的ストリーム最適化
- 上限付きの並列画像最適化
各操作は、ソースサイズ・レンダリング寸法・DPI・ストリームしきい値・ワーカー数から導いた保守的な見積もりを予約し、既存の操作テレメトリ境界でその予約を解放します
受付ポリシー
- デフォルトのプロセス全体の予算は
536870912バイト 0の値は予算制限を無効にします- 待機者は FIFO 順で受け入れられるため、後の小さな要求が前の大きな要求を飢えさせることはありません
- 設定済み予算より大きい要求は、他の予約がアクティブでない場合にのみ実行できます
- 予算を増やすとキューに入った作業がすぐに受け入れられますが、減らしてもアクティブな作業は中断されません
- キュー待機は、50 ms 間隔の境界で操作キャンセルトークンをポーリングします
無競合パスは待機イベントを割り当てませんが、競合する操作は 1 つのプライベートイベントを使用し、スピンしません
設定
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 は、スケジューリングコストを最新の操作に帰属させます