다음을 통해 공유


컴퍼지션 스왑 체인 프로그래밍 가이드

컴퍼지션 스왑 체인 API는 애플리케이션이 콘텐츠를 렌더링하고 화면에 표시할 수 있는 DXGI 스왑 체인의 영적 후속 작업입니다. DXGI 스왑 체인을 통해 이 API를 사용하는 데는 몇 가지 이점이 있습니다. 스왑 체인의 상태에 관한 더 세분화된 제어가 애플리케이션에 제공되며 스왑 체인이 사용되는 방법에 관해서는 더 많은 자유가 제공됩니다. 또한 API는 정확한 현재 타이밍에 대한 더 나은 스토리를 제공합니다.

프레젠테이션이란?

프레젠테이션 은 화면에 그리기 작업의 결과를 표시하는 개념입니다. 프레젠테이션은 단일 프레젠테이션 인스턴스로, 화면에 있는 단일 버퍼에 그리기 작업의 결과를 표시하기 위한 요청입니다. 프레젠테이션에는 화면에 표시하는 방법을 설명하는 추가 특성이 포함될 수 있습니다. 이 API에서 현재는 현재가 표시되어야 하는 이상적인 시간을 설명하는 시스템 상대 타임스탬프(인터럽트 시간)인 대상 시간을 가질 수도 있습니다. 애플리케이션은 이를 사용하여 콘텐츠가 화면에 표시되는 속도를 보다 정확하게 제어하고 오디오 트랙과 같은 시스템의 다른 이벤트와 프레젠테이션을 동기화할 수 있습니다.

프레젠테이션의 핵심은 동기화입니다. 즉, 그리기 작업은 일반적으로 CPU와 달리 GPU에 의해 수행되며, 따라서 처음에 작업을 실행한 CPU의 비동기 타임라인에서 실행됩니다. 프레젠테이션은 버퍼가 화면에 표시되기 전에 이전에 실행된 그리기 작업이 완료되도록 GPU에 제출된 작업입니다.

애플리케이션은 일반적으로 시간이 지남에 따라 많은 선물을 발행하고, 선물을 발행할 때 선택할 수 있는 여러 텍스처가 있습니다. 애플리케이션은 이 API가 제공하는 동기화 메커니즘을 사용하여 버퍼를 그리면 해당 버퍼가 표시되고 이후의 새 버퍼로 대체될 때까지 해당 버퍼에 다시 그리지 않도록 해야 합니다. 그렇지 않으면 애플리케이션이 처음에 제공하려는 버퍼 콘텐츠를 화면에 표시되므로 덮어쓸 수 있습니다.

프레젠테이션 모드 - 컴퍼지션, 다중 평면 오버레이 및 독립 대칭 이동

애플리케이션에서 제공하는 버퍼는 시스템에서 몇 가지 다른 방법으로 표시할 수 있습니다.

기본값인 가장 간단한 방법은 현재가 DWM으로 전송되고 DWM이 제공된 버퍼에 따라 프레임을 렌더링하는 것입니다. 즉, DWM이 디스플레이에 보내는 백버퍼에 프레젠테이션 버퍼의 복사본(또는 더 정확하게 3D 렌더링)이 있습니다. 현재를 표시하는 이 메서드를 컴퍼지션이라고 합니다.

프레젠테이션을 표시하는 더 성능이 좋은 모드는 프레젠테이션 버퍼를 하드웨어로 직접 검색하고 발생하는 복사본을 제거하는 것입니다. 현재를 표시하는 이 메서드를 직접 검색이라고 합니다. 프레젠테이션을 처리할 때 DWM은 다중 평면 오버레이 평면(또는 MPO 평면)에 버퍼를 할당하거나 버퍼를 하드웨어(직접 대칭 이동이라고 함)로 직접 대칭 이동하여 프레젠테이션 버퍼에서 직접 검색하도록 하드웨어를 프로그래밍할 수 있습니다.

프레젠테이션을 표시하는 훨씬 더 성능이 뛰어난 방법은 그래픽 커널에서 직접 프레젠테이션을 표시하고 DWM을 완전히 우회하는 것입니다. 이 프레젠테이션 방법을 독립 대칭 이동(iflip)으로 알려져 있습니다. 다중 평면 오버레이와 iflip은 모두 최상의 성능을 위해 DXGI 대칭 이동 모델에 설명되어 있습니다.

컴퍼지션은 가장 쉽게 지원되지만 가장 효율적이지도 않습니다. 직접 스캔 또는 iflip에 적합하도록 표면을 특별히 할당해야 하며, 이러한 유형의 특수 할당에는 컴퍼지션 스왑 체인보다 더 엄격한 시스템 요구 사항이 있습니다. WDDM 3.0 이상 하드웨어에서만 사용할 수 있습니다. 따라서 애플리케이션은 컴퍼지션 전용 프레젠테이션에 대한 API 지원과 직접 스캔 아웃 또는 iflip에 대한 자격이 있는 프레젠테이션을 쿼리할 수 있습니다.

참고 항목

표면이 이러한 최적화된 프레젠테이션 모드를 자동으로 활용하려면 GPU에서 직접 표시할 수 있는 것으로 표면을 할당해야 합니다. Direct3D 11 표면의 경우 화면을 표시 가능한 것으로 할당해야 합니다. 표시 가능으로 할당되지 않은 표면은 여전히 화면의 시스템 작성기에서 합성할 수 있지만 독립적인 대칭 이동 모드의 이점을 얻을 수는 없습니다.

프레젠테이션 팩터리, 확인 기능 및 프레젠테이션 관리자

애플리케이션이 컴퍼지션 스왑 체인 API에서 사용하는 첫 번째 개체는 프레젠테이션 팩터리입니다. 프레젠테이션 팩터리는 애플리케이션에 의해 만들어지고 애플리케이션이 만들 호출에 전달하는 Direct3D 디바이스에 바인딩되므로 해당 디바이스와 연결된 비디오 어댑터에 대한 선호도가 있습니다.

프레젠테이션 팩터리는 현재 시스템 및 그래픽 디바이스가 컴퍼지션 스왑 체인 API를 사용할 수 있는지 여부를 확인하는 메서드를 노출합니다. IPresentationFactory::IsPresentationSupported와 같은 기능 메서드를 사용하여 시스템 지원을 확인할 수 있습니다. 기능 메서드가 API에 대한 시스템 지원을 나타내는 경우 프레젠테이션 팩터리를 사용하여 프레젠테이션 관리자만들 수 있습니다. 이 프레젠테이션 관리자는 프레젠테이션 기능을 수행하는 데 사용하는 개체이며, 프레젠테이션 팩터리를 만드는 데 사용된 것과 동일한 Direct3D 디바이스 및 비디오 어댑터에 바인딩됩니다.

현재 컴퍼지션 스왑 체인 API를 사용하기 위한 시스템 요구 사항은 WDDM(Windows 디바이스 드라이버 모델) 2.0 및 Windows 11(빌드 10.0.22000.194)을 지원하는 GPU 드라이버입니다. 컴퍼지션 스왑 체인 API를 가장 성능이 좋은 방식(직접 스캔 아웃 및 독립적인 대칭 이동 또는 iflip)으로 사용하려면 시스템에서 WDDM 3.0을 지원하는 GPU 드라이버가 필요합니다.

시스템에서 컴퍼지션 스왑 체인 API를 사용할 수 없는 경우 애플리케이션에는 DXGI 스왑 체인과 같은 이전 메서드를 사용하여 프레젠테이션을 처리하는 별도의 코드 경로가 있어야 합니다.

프레젠테이션에 프레젠테이션 버퍼 등록

프레젠테이션 관리자는 표시할 수 있는 버퍼를 추적합니다. Direct3D 텍스처를 표시하려면 애플리케이션에서 먼저 Direct3D를 사용하여 해당 질감을 만든 다음 프레젠테이션 관리자에 등록해야 합니다. 텍스처가 프레젠테이션 관리자에 등록되면 프레젠테이션 버퍼라고 하며, 해당 시점부터 해당 프레젠테이션 관리자가 화면에 표시할 수 있습니다. 단일 프레젠테이션 관리자(현재 31개)에 추가할 수 있는 최대 프레젠테이션 버퍼 수가 있지만 애플리케이션에서 원하는 대로 프레젠테이션 버퍼를 추가하고 제거할 수 있습니다. 이러한 프레젠테이션 버퍼는 개별 프레젠테이션 버퍼가 표시될 때 적용되는 다양한 크기와 형식일 수도 있습니다.

텍스처는 여러 프레젠테이션 관리자에 등록할 수 있습니다. 그러나 대부분의 경우 일반적인 사용으로 간주되지 않으며 애플리케이션이 관리해야 하는 복잡한 동기화 시나리오가 발생합니다.

표시할 콘텐츠 정의

일반적으로 표시되는 버퍼는 시각적 트리콘텐츠와 연결되어야 합니다. 따라서 애플리케이션 문제가 표시될 때 시각적 트리에서 표시되는 버퍼가 어디로 이동해야 하는지 명확하게 알 수 있도록 일종의 바인딩 을 정의해야 합니다. 이 바인딩 프레젠테이션 콘텐츠를 호출합니다.

제시된 콘텐츠는 여러 가지 형태를 취할 수 있습니다. 애플리케이션은 표시할 단일 버퍼를 표시하거나 왼쪽 및 오른쪽 눈 모두에 대한 버퍼가 포함된 스테레오 콘텐츠를 표시하려고 할 수 있습니다. 이 API의 초기 버전은 화면에 단일 버퍼를 표시하기 위한 지원을 제공합니다.

프레젠테이션 화면을 한 번에 하나의 버퍼가 표시되는 프레젠테이션 콘텐츠의 한 형태로 정의합니다. 프레젠테이션 화면은 시각적 트리에서 콘텐츠로 설정할 수 있으며 화면에 한 번에 하나의 프레젠테이션 버퍼를 표시할 수 있습니다. 프레젠테이션 관리자 프레젠테이션은 하나 이상의 프레젠테이션 화면에 표시되는 버퍼를 원자성으로 업데이트합니다.

프레젠테이션 관리자를 사용하여 지정된 컴퍼지션 화면 핸들에 대해 하나 이상의 프레젠테이션 화면을 만들 수 있습니다. 각 컴퍼지션 화면 핸들은 시각적 트리에서 하나 이상의 시각적 개체(Windows.UI.Composition DirectComposition API 설명서에 설명된 전략)에 바인딩되어 연결된 프레젠테이션 화면과 시각적 트리에 표시되는 위치 간의 관계를 정의할 수 있습니다. 애플리케이션은 시스템에 제출되고 다음 현재 작업에서 수행되는 하나 이상의 프레젠테이션 화면을 업데이트할 수 있습니다.

프레젠테이션 관리자는 원하는 모든 프레젠테이션 화면에 프레젠테이션 버퍼를 표시할 수 있습니다. 제한 사항은 없습니다. 그러나 프레젠테이션 화면에 표시되는 동안 해당 버퍼에 새 드로잉을 발급하지 않도록 하려면 애플리케이션에서 발급한 버퍼와 해당 버퍼를 추적해야 합니다.

프레젠테이션 화면에 속성 적용

프레젠테이션 화면에 표시할 버퍼를 지정하는 것 외에도 프레젠테이션 화면에 다양한 다른 속성을 지정할 수 있습니다. 여기에는 알파 모드 및 색 공간, 원본 텍스처를 변환 및 배치하는 방법, 보호된 콘텐츠에 대한 표시 또는 다시 쓰기 제한을 포함하여 원본 텍스처를 샘플링하는 방법을 정의하는 속성이 포함됩니다. 이러한 모든 항목은 애플리케이션에서 변경할 수 있는 프레젠테이션 화면에서 속성 setter 메서드로 노출되며, 버퍼 업데이트와 마찬가지로 애플리케이션이 있을 때 적용됩니다.

프레젠테이션 화면에 프레젠테이션

애플리케이션에서 프레젠테이션 화면을 만들고, 프레젠테이션 버퍼를 등록하고, 프레젠테이션 중에 발행할 업데이트를 지정한 후에는 프레젠테이션을 통해 이러한 속성을 적용할 수 있습니다. 애플리케이션이 프레젠테이션 관리자를 통해 프레젠테이션을 발급합니다. 해당 존재가 시스템에서 처리되면 모든 업데이트가 원자성으로 적용됩니다. 또한 애플리케이션은 필요한 이상적인 시간( 현재 대상 시간 ) 및 시스템에서 사용자 지정 새로 고침 모드를 사용하도록 설정하는 데 사용할 수 있는 의도된 콘텐츠 속도와 같은 기타 드문 속성과 같은 현재의 다른 속성을 지정할 수도 있습니다. 프레젠테이션은 지정된 시간에 예약할 수 있으므로 애플리케이션은 미리 여러 선물을 발행할 수 있습니다. 이러한 선물은 예약된 시간에 도달하면 하나씩 처리됩니다.

프레젠테이션 동기화

애플리케이션은 버퍼에 렌더링되고 문제가 표시될 때 현재 다른 미해결 이전 버전에서 참조되지 않는 렌더링할 버퍼를 선택해야 합니다. 이렇게 하면 해당 버퍼 내용이 의도한 버퍼 콘텐츠를 덮어쓸 수 있습니다. 또한 응용 프로그램이 현재 스캔 아웃 하드웨어의 프레젠테이션 화면에 표시되는 버퍼에 렌더링하는 문제가 발생하는 경우 Direct3D는 전면 버퍼 렌더링을 허용하지 않으므로 렌더링이 무기한 중단될 수 있습니다.

컴퍼지션 스왑 체인 API는 애플리케이션이 제시한 버퍼의 적절한 동기화를 연습할 수 있도록 하는 몇 가지 메커니즘을 제공합니다.

버퍼를 참조하는 미해결 선물이 없고 현재 시스템에서 표시되지 않는 경우 버퍼를 사용할 수 있다고 합니다. 그렇지 않으면 사용할 수 없습니다. API는 버퍼를 사용할 수 있는지 여부를 나타내는 각 프레젠테이션 버퍼에 대한 이벤트를 제공합니다. 애플리케이션에서 사용할 수 있는 가장 간단한 동기화 방법입니다. 버퍼에 그리기 전에 애플리케이션에서 사용 가능한 이벤트가 신호를 받을 수 있도록 할 수 있습니다. 특정 버퍼에 사용할 수 있는 이벤트는 API의 프레젠테이션 화면에 바인딩된 순간 서명되지 않고 현재가 사용 중지될 때까지 계속 서명되지 않은 상태로 유지됩니다.

둘째, 프레젠테이션 관리자는 현재 사용 중지된 단일 펜스 를 추적하여 프레젠테이션이 완료된 애플리케이션과 통신합니다. 펜스 값은 아래 수명 주기 섹션에서 설명한 대로 수명 주기의 사용 중지 단계를 시작한 마지막 현재 항목의 현재 식별자에 해당합니다. 현재가 이 단계에 들어가면 후속 선물로 대체된 버퍼를 다시 사용할 수 있다고 가정해도 안전합니다.

이 동기화 방법은 더 고급이지만 워크플로 제한을 보다 세부적으로 제어할 수 있으며 현재 큐의 깊이와 관련하여 시스템 상태에 대해 더 많은 정보를 제공합니다. 현재 수명 주기에 대한 개요는 아래 섹션을 참조하세요.

프레젠테이션의 수명 주기

프레젠테이션 관리자 선물은 현재 큐의 일부로 시스템에 큐에 대기됩니다. 시스템 프로세스는 대기 중인 순서로 표시됩니다. 또한 각 프레젠테이션에는 프레젠테이션 관리자와 연결된 고유한 현재 식별자가 있으며, 이는 현재에 할당된 증분 값으로, 첫 번째 현재에 대해 1부터 시작하여 이후의 각 현재에 대해 1씩 증가합니다. 이 현재 식별자는 동기화 기본 형식 및 프레젠테이션 통계와 같은 API의 다양한 부분에서 해당 특정 현재를 참조하는 데 사용됩니다.

애플리케이션 문제는 각각 여기에 설명된 대로 특정 수명 주기를 따릅니다.

응용 프로그램에서 프레젠테이션의 일부로 변경 내용을 설정하면 프레젠테이션 관리자를 사용하여 현재를 실제로 발급합니다. 이 시점에서 현재는 보류 중이라고 합니다.

보류 중이면 프레젠테이션 관리자의 현재 큐에 프레젠테이션이 배치되어 두 가지 중 하나가 발생할 때까지 유지됩니다.

  • 현재가 취소됩니다. 프레젠테이션 관리자를 사용하면 응용 프로그램에서 이전에 발행한 선물을 취소할 수 있습니다. 이 경우 현재는 취소된 다음 즉시 사용 중지됩니다. 이 전환 시 취소된 현재에 대해 사용 가능한 관련 버퍼 이벤트가 업데이트되지만 이전에 표시된 존재(취소된 선물 이전)가 계속 표시되므로 현재 사용 중지된 펜스는 신호를 받지 않습니다. 이러한 이유로 애플리케이션은 현재 사용 중지된 펜스를 사용하여 취소된 프레젠테이션을 확인할 수 없습니다. 대신 취소된 각 현재 항목에 대해 다시 제공되는 현재 상태 통계에서 이를 학습해야 합니다. 애플리케이션에서 버퍼 사용 가능한 이벤트를 사용하여 취소 후 표시할 사용 가능한 버퍼를 찾는 것이 좋습니다. 현재가 표시되면 이전 현재는 사용 중지 프로세스를 시작하고 현재 사용 중지된 펜스를 업데이트합니다.
  • 취소하지 않으면 현재는 결국 처리할 준비가 됩니다. 준비하려면 두 가지 주요 조건을 충족해야 합니다.
    • 현재가 호출되기 전에 Direct3D 컨텍스트에 발급된 모든 그리기 작업을 완료해야 합니다. 이렇게 하면 애플리케이션의 드로잉이 완료되기 전에 버퍼가 표시되지 않습니다.
    • 현재 대상 시간을 지정한 경우 현재를 표시할 수 있을 것으로 예상되는 현재 시스템 상대 시간이 애플리케이션이 현재에 적용한 요청된 대상 시간을 충족합니다.

시스템에서 화면에 표시할 선물을 찾기로 결정하면 표시할 준비가마지막 선물을 선택합니다. 준비된 선물이 여러 번 있는 경우 최신(즉, 현재 식별자가 가장 큰 현재)을 제외한 모든 항목이 건너뛰고 즉시 사용 중지된 상태로 전환됩니다. 이때 버퍼 사용 가능한 이벤트는 신호를 받지만 건너뛴 현재는 표시된 상태에서 전환되지 않으므로 현재 사용 중지된 펜스는 신호를 받지 않습니다.

준비한 현재가 표시되도록 선택되면 시스템에서 화면에 표시하기 위한 작업을 시작합니다. 즉, DWM 프레임의 일부로 버퍼를 렌더링한 다음 하드웨어에 해당 프레임을 화면에 표시하도록 요청하거나 iflip의 경우 버퍼를 직접 스캔 아웃 하드웨어로 보내는 것을 의미할 수 있습니다. 이 경우 현재는 대기 중이라고 합니다. 높은 수준에서, 즉, 그것은 표시 되 고 그것의 방법에.

하드웨어가 현재를 표시하기 위해 주위에 도착하면, 그 현재가 표시되었다고합니다. 그 곳에 는 후속 선물이 들어와서 교체 될 때까지 화면에 표시됩니다.

이후의 현재 상태가 큐에 대기되면 하드웨어가 결국 현재 현재 표시를 중지할 것임을 알 수 있습니다. 이 시점에서 현재는 은퇴했다고합니다.

그 이후의 현재가 표시되면 현재 현재는 사용 중지되었다고 합니다.

프레젠테이션 관리자는 사용 중지 상태로 들어갈 때 각 프레젠테이션의 현재 식별자에 신호를 전송하는 현재 사용 중지 펜스 노출합니다. 이 신호는 이전의 현재를 손상시키지 않고 현재와 연결된 버퍼에 렌더링 작업을 실행해도 안전해졌다는 것을 애플리케이션에 나타냅니다. 애플리케이션이 현재 사용 중지 상태 동안 렌더링 작업을 실행하는 경우 현재 상태가 사용 중지된 상태가 될 때까지 렌더링 작업이 큐에 대기됩니다. 이 시점에서 렌더링 작업이 실행됩니다. 현재 작업이 사용 중지된 후 렌더링 작업이 실행되면 즉시 실행됩니다.

다음은 이 상태 변경의 다이어그램입니다.

선물의 수명 주기

버퍼, 표면 및 프레젠테이션 다이어그램

다음은 프레젠테이션 관리자, 프레젠테이션 버퍼, 프레젠테이션 화면, 프레젠테이션 및 업데이트와 관련된 다이어그램입니다.

버퍼, 표면 및 프레젠테이션 다이어그램

이 다이어그램은 프레젠테이션 관리자를 보여 줍니다. 프레젠테이션 화면 2개와 프레젠테이션 버퍼 3개가 있으며, 지금까지 발행된 두 개의 프레젠테이션이 있습니다. 즉, 처음 표시된 표면 1에는 버퍼 1, 표면 2에는 버퍼 2가 표시됩니다. 두 번째 현재는 프레젠테이션 버퍼 3을 표시하도록 Surface 2를 업데이트했으며 Surface 1의 바인딩을 변경하지 않았습니다. 현재 2가 표시되면 Surface 1은 버퍼 1을 표시하고, Surface 2는 프레젠테이션 관리자에서 개체의 현재 상태에서 볼 수 있는 버퍼 3을 표시합니다. 큐에 있는 각 큐는 시스템에서 처리될 때 적용됩니다.

참고 항목

Present 2가 Surface 1의 버퍼를 변경하지 않았기 때문에 Surface 1은 이전의 버퍼 1에 바인딩된 상태로 남아 있습니다. 이러한 의미에서 현재 2의 버퍼 1에 대해 "암시적" 참조가 있습니다. 표면 1은 현재 2가 표시된 후 버퍼 1에 바인딩된 상태로 유지되므로

시각적 트리에 프레젠테이션 화면 추가

프레젠테이션 화면은 컴퍼지션 시각적 트리의 일부로 존재하는 콘텐츠입니다. 각 프레젠테이션 화면은 컴퍼지션 표면 핸들바인딩됩니다. Windows.UI.Composition에서 기존 컴퍼지션 표면 핸들에 대한 표면 브러시를 만들고 스프라이트 시각적 개체에 바인딩할 수 있습니다. DirectComposition에서 컴퍼지션 표면은 기존 컴퍼지션 표면 핸들에서 만들어지고 시각적 개체에 콘텐츠로 바인딩될 수 있습니다. 자세한 내용은 각 API에 대한 각 설명서를 참조하세요.

이 API를 사용하도록 빌드된 Windows Media Foundation과 같은 API는 프레젠테이션 화면에 미리 바인딩될 컴퍼지션 표면 핸들을 노출합니다. 또한 애플리케이션은 자체 컴퍼지션 표면 핸들을 만들어 프레젠테이션 화면에 바인딩하고 DCompositionCreateSurfaceHandle을 호출하여 시각적 트리에 추가할 수도 있습니다.

프레젠테이션 통계 읽기

컴퍼지션 스왑 체인 API는 특정 존재가 처리된 방법에 대한 다양한 정보를 설명하는 프레젠테이션 통계를 노출합니다. 이 정보는 일반적으로 DWM 프레임에서 프레젠테이션 화면이 사용된 방법, 표시되는 시점, 표시 여부 등을 설명할 수 있습니다.

다양한 유형의 프레젠테이션 통계가 있으며 이후 버전의 API에서 확장할 수 있도록 설계되었습니다. 애플리케이션은 프레젠테이션 관리자를 사용하여 등록하여 관심 있는 통계 유형을 받습니다. 그런 다음 이러한 통계는 프레젠테이션 관리자의 통계 큐로 푸시됩니다. 프레젠테이션 관리자는 통계 큐에 읽을 수 있는 통계 항목이 있는 경우를 나타내는 이벤트 핸들인 애플리케이션에 사용 가능한 통계 이벤트를 노출합니다. 이렇게 하면 애플리케이션이 큐에서 첫 번째 통계 항목을 큐에서 제거하고 읽고 처리할 수 있습니다. 프레젠테이션 관리자는 애플리케이션이 현재 큐에 있는 모든 통계를 읽은 경우 사용 가능한 통계 이벤트를 다시 설정합니다. 애플리케이션은 일반적으로 사용 가능한 통계 이벤트가 다시 설정될 때까지 루프에서 통계를 읽고 처리합니다. 애플리케이션은 프레젠테이션을 발행하는 데 사용하는 것과 동일한 작업 루프에서 이 통계 큐를 처리하는 것이 일반적입니다. 제안된 사용 패턴은 큐가 오버플로되지 않도록 새 선물 발행보다 처리 통계의 우선 순위를 지정하는 것입니다.

큐에는 추적할 최대 통계 수가 있으며 이는 512-1024 통계의 순서에 따라 달라집니다. 최대 큐 깊이는 일반적인 경우 최대 5초 분량의 통계를 저장하기에 충분해야 합니다. 통계 큐가 가득 차서 더 많은 통계가 보고되면 정책은 가장 오래된 통계가 공간을 확보하기 위해 사용 중지된다는 것입니다.