THotPDF Cache Admission Policies

압축된 raw source range, 디코딩된 이미지, 컴파일된 페이지 display list, 렌더링된 raster 페이지에 대해 cache admission을 독립적으로 제어합니다

선언

THPDFCacheLayerKind = (clkRawCompressed, clkDecoded,
  clkDisplayList, clkRaster);

THPDFCacheAdmissionPolicy = record
  Enabled: boolean;
  AdaptiveAdmission: boolean;
  MaxEntries: Integer;
  MaxTotalBytes: Int64;
  MaxEntryBytes: Int64;
end;

THPDFCacheAdmissionStatistics = record
  Enabled: boolean;
  AdaptiveAdmission: boolean;
  MaxEntries: Integer;
  MaxTotalBytes: Int64;
  MaxEntryBytes: Int64;
  EntryCount: Integer;
  CurrentBytes: Int64;
  HitCount: Int64;
  MissCount: Int64;
  AdmissionCount: Int64;
  RejectionCount: Int64;
  EvictionCount: Int64;
  FrequencyAdmissionCount: Int64;
  FrequencyRejectionCount: Int64;
  FrequencyAgingCount: Int64;
end;

procedure ResetCacheAdmissionPolicies;
procedure SetCacheAdmissionPolicy(Kind: THPDFCacheLayerKind;
  const Policy: THPDFCacheAdmissionPolicy);
function GetCacheAdmissionPolicy(Kind: THPDFCacheLayerKind;
  out Policy: THPDFCacheAdmissionPolicy): boolean;
function GetCacheAdmissionStatistics(Kind: THPDFCacheLayerKind;
  out Statistics: THPDFCacheAdmissionStatistics): boolean;

기본 한도

레이어항목 수전체 바이트항목당Adaptive
clkRawCompressed82 MiB256 KiB예
clkDecoded25632 MiB16 MiB예
clkDisplayList6464 MiB16 MiB예
clkRaster8128 MiB64 MiB예

admission 동작

활성화된 policy는 항목 수, 전체 바이트, 항목당 한도가 양수여야 하며, 항목당 한도는 전체 바이트 한도를 넘을 수 없습니다

한 레이어를 바꿔도 다른 레이어는 변하지 않고, 한도를 낮추면 해당 cache가 한도에 맞아질 때까지 least-recently-used 항목을 즉시 제거합니다

AdaptiveAdmission이 활성화되면 least-recently-used 순서가 빠른 recency 경로로 남고, 4-way bounded frequency sketch가 eviction 전에 새 후보를 필요한 모든 victim과 비교합니다

더 차가운 후보는 현재 요청을 방해하지 않고 retention을 건너뛰고, 빈도가 같으면 더 최신 후보를 선호하며, 주기적인 counter aging으로 바뀐 working set이 과거의 hot 항목을 대체할 수 있습니다

AdaptiveAdmission을 False로 설정하면 동일한 hard bound를 유지한 채 순수한 least-recently-used admission을 사용합니다

MaxEntryBytes보다 큰 항목은 현재 operation에 사용되지만 retention을 건너뛰므로, 큰 decoded 이미지, display list, 렌더링 페이지 하나가 재사용 가능한 작은 항목들을 밀어내지 못합니다

Enabled를 False로 설정하고 한도를 0으로 두면 해당 레이어의 retention이 꺼지며, ResetCacheAdmissionPolicies는 네 레이어의 기본값을 모두 복원합니다

통계

THPDFCacheAdmissionStatistics는 활성 한도, adaptive 모드, 현재 항목 및 바이트 점유, hit, miss, 승인된 admission, 거부된 admission, 용량 eviction, frequency 판정, aging 주기를 반환합니다

raw range 통계는 LoadFromRandomAccessSource가 만드는 자동 coalescing source를 기술하고, 명시적으로 제공한 THPDFCoalescingRandomAccessSource는 호출자가 선택한 구성을 유지합니다

호환성 속성

RenderCacheCapacity는 raster 항목 한도를, ImageCacheMaxBytes는 decoded 이미지 전체 바이트 한도를 같은 policy 검증 및 즉시 trimming 경로로 갱신합니다

참고: 확장 가능한 로딩, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource