Linux 입력 지연 측정: X11 대 Wayland, VRR, DXVK

3 hours ago 3
  • 500Hz 디스플레이에서 클릭부터 화면 밝기 변화까지 측정한 결과, X11·VRR·dxvk-low-latency를 모두 적용해도 기본 Wayland보다 종단 간 지연 중앙값이 0.72ms 낮아지는 데 그침
  • 네이티브 Wayland는 X11보다 0.14~0.22ms 느린 반면, XWayland는 네이티브 Wayland 대비 최대 3.13ms를 추가해 훨씬 큰 차이를 만듦
  • 가변 주사율(VRR) 은 모든 비교에서 지연을 0.26~0.45ms 줄였고, p5~p95 분포 폭도 2.6~3.0ms에서 2.1~2.2ms로 좁힘
  • dxvk-low-latency는 프레임 제한 시 0.10~0.29ms, 제한 해제 시 0.84ms를 줄였지만, 후자에서는 GPU 사용률을 100% 대신 95~97%로 유지하면서 FPS가 715에서 670으로 감소함
  • 결과는 안정적인 FPS와 CPU 병목이라는 최적 조건 및 특정 하드웨어·소프트웨어 조합에서 나온 것으로, 실제 플레이에서는 VRR의 지터 감소와 프레임 페이서의 렌더 큐 억제가 중앙값 이상의 차이를 만들 수 있음

최적화 조언을 직접 검증한 이유

  • Linux 게이밍에는 Wayland 대신 X11 사용, 합성 비활성화, 지연 최적화 DXVK 포크, 게임용 커널 스케줄러, gamescope·gamemode·환경변수 적용 등 수많은 최적화 조언이 존재함
  • 경쟁형 FPS에서는 낮은 지연, 일관된 프레임 시간, 높은 FPS가 중요하지만, 설정 변경이 실제 개선인지 플라세보 또는 역효과인지 확인하기 어려움
  • 측정 장치의 하드웨어, 인클로저, 펌웨어, 분석 코드와 원시 데이터는 click2photon GitHub 저장소에 공개돼 있음

클릭부터 화면 변화까지 재는 장치

  • 모니터에 장치를 부착하고 USB로 마우스 클릭을 발생시킨 뒤, 광센서가 화면 변화를 감지할 때까지 시간을 재서 종단 간 시스템 지연을 측정함
  • 초기 설계는 당시 이용할 수 있던 OSLTT의 회로도를 참고했으며, 완성 과정에서 m2p-latencyOpen-Source-LDAT의 아이디어도 통합함
  • 제작에는 마이크로컨트롤러, 납땜, Arduino 펌웨어, 적분 시간, 트랜스임피던스 증폭기, KiCad와 인클로저 설계가 필요했음
  • Adafruit QT Py RP2040이 1,000Hz 폴링 USB HID 마우스로 동작하며 클릭을 발생시킴
    • 클릭 전송 직후부터 약 24µs마다 광다이오드 표본을 수집함
    • 클릭마다 12,000개 표본을 직렬 연결로 호스트에 보내 CSV로 기록함
    • 호스트 도구는 클릭별 기준선을 계산하고, 기준선에서 일정 수준 이상 벗어난 첫 표본을 찾음
    • 12,000개 표본의 수집 시간이 고정돼 있어 클릭 전송부터 화면 밝기 변화까지 걸린 시간을 계산할 수 있음

비교한 화면·렌더링 구성

  • X11과 네이티브 Wayland를 비교해 Wayland가 체감상 느리다는 평가를 계측 결과와 대조함
  • G-Sync·FreeSync를 포함하는 가변 주사율(VRR) 의 활성화 여부를 비교함
  • dxvk-low-latency와 기본 DXVK의 차이를 측정함
    • 이 포크의 프레임 페이서는 공식 proton-cachyos 패키지에 통합됐으며, PROTON_DXVK_LOWLATENCY=1로 활성화함
  • 프레임 페이서가 프레임 시간 변동을 흡수하고 렌더 큐 누적을 막는지 확인하기 위해 FPS 제한 해제 사례 2개를 추가함
    • 정적인 게임 장면에서는 프레임 시간 변동이 없었고 테스트도 CPU 병목 조건이어서 실제 게임 세션을 완전히 반영하지 않음
    • 실제 세션에서는 게임 내부 상황이나 다른 프로세스의 자원 사용에 따라 프레임 시간이 달라질 수 있음
  • Wayland 테스트는 기본적으로 PROTON_ENABLE_WAYLAND=1을 사용한 네이티브 Wayland에서 실행했으며, 비교를 위해 VRR을 끈 XWayland 사례 2개도 측정함

테스트 하드웨어와 소프트웨어

  • 테스트 중에는 디스플레이 한 대만 연결했으며 하드웨어 구성은 다음과 같음
    • AMD Ryzen 7 5800X3D
    • NVIDIA GeForce RTX 4070 SUPER
    • DDR4 3,200MHz 8GB 모듈 2개
    • MSI MAG 272QP QD-OLED X50, 2560×1440, 500Hz
    • MSI B450 GAMING PRO CARBON AC
  • 소프트웨어 스택은 CachyOS, Kernel 7.1.3-2-cachyos, NVIDIA driver 610.43.03-1, KDE Plasma 6.7.2-1.1, xorg-server 21.1.24-1.1로 구성함
    • proton-cachyos-native 1:11.0.20260602-3와 dxvk 3.0을 사용함
    • CachyOS 기본 커널 스케줄러를 유지함

디스플레이와 DXVK 설정

  • 시스템 주사율은 500Hz로 설정함
  • X11에서는 nvidia-settings로 플립 모드와 VRR을 활성화했으며, VRR 변경에는 재부팅이 필요함
  • Wayland에서는 KDE 설정으로 VRR을 활성화하며 재부팅은 필요하지 않음
  • Wayland의 플립 모드 또는 직접 스캔아웃은 사용자가 직접 설정하지 않고 컴포지터가 프레임마다 결정함
    • KWin Debug Console의 Effects 탭에서 showcompositing을 활성화함
    • 게임만 전체 화면에 표시하고 완전히 포커스된 상태에서 가장자리에 빨간 테두리가 없으면 플립 모드로 판별함
  • 비교 조건별로 최적화한 dxvk.conf를 사용함
    • VRR 비활성화 시 dxgi.maxFrameRate = 500
    • VRR 활성화 및 dxvk-low-latency 비활성화 시 dxgi.maxFrameRate = 497
    • VRR과 dxvk-low-latency를 함께 활성화할 때는 다음 설정으로 500Hz용 저지연 VRR 프레임 페이싱을 사용함
dxgi.maxFrameRate = 480 dxvk.lowLatencyOffset = 70 dxvk.framePace = "low-latency-vrr-500" dxvk.lowLatencyAllowCpuFramesOverlap = False
  • 모든 구성에 d3d11.cachedDynamicResources = "c"를 적용함

게임 환경과 반복 측정 절차

  • 테스트 게임은 Heroic과 Proton으로 실행한 DirectX 11 게임 Diabotical
  • 네이티브 해상도와 100% 렌더 배율을 사용하고 Vsync를 끈 뒤, 나머지 영상 설정은 가능한 한 낮춤
  • UI를 잠시 숨기는 숨겨진 명령을 /bind mouse_left testlatency로 왼쪽 클릭에 연결하고, 큰 흰색 상자를 표시하는 HUD를 구성해 클릭 시 밝기 차이를 키움
  • 각 테스트는 동일한 조건으로 반복함
    • 불필요한 소프트웨어를 닫고 같은 모드와 맵의 로컬 서버를 시작함
    • 지정된 위치에서 마우스를 특정 지형 표식에 맞춤
    • 약 2분 동안 100회 클릭하는 과정을 총 3회 반복함
    • 봇, 다른 플레이어, 이동, 라운드 재시작 없이 정적인 장면을 유지함
    • 유의미한 다른 프로세스가 실행되지 않도록 하고 측정 장치의 위치도 모든 테스트에서 고정함

전체 구성의 지연 범위

  • 프레임 제한을 적용한 모든 사례가 목표 FPS를 안정적으로 유지했고, 게임은 테스트 내내 CPU 병목 상태였음
  • 모든 사례는 큰 이상치 없이 종 모양 분포를 보였으며, p5에서 p95까지의 폭은 약 2~3ms였음
  • 주요 8개 구성의 중앙값은 4.21~4.93ms로, 전체 격차가 0.72ms에 불과했음
  • XWayland는 대응하는 네이티브 Wayland 구성보다 중앙값이 최대 3.13ms 높았으며, 각각 8.06ms와 4.93ms를 기록함
  • FPS 제한 해제 사례에서는 dxvk-low-latency가 기본 DXVK보다 지연을 0.84ms 줄임

X11과 네이티브 Wayland의 작은 차이

  • X11이 모든 구성에서 빨랐지만 차이는 0.14~0.22ms로 작아, Wayland가 훨씬 느리게 느껴진다는 평가를 설명하기에는 부족함
    • low-latency와 VRR 활성화: X11 4.21ms, Wayland 4.38ms, 차이 +0.17ms
    • low-latency만 활성화: X11 4.64ms, Wayland 4.83ms, 차이 +0.19ms
    • VRR만 활성화: X11 4.45ms, Wayland 4.67ms, 차이 +0.22ms
    • 둘 다 비활성화: X11 4.79ms, Wayland 4.93ms, 차이 +0.14ms
  • 두 디스플레이 서버의 지연 분포 형태도 매우 비슷했음

VRR이 지연과 분포에 미친 효과

  • VRR은 비교 항목 가운데 가장 큰 영향을 보였으며, 모든 조합에서 0.26~0.45ms 빨랐음
    • X11과 low-latency: 4.64ms에서 4.21ms로 0.43ms 감소함
    • X11 기본 DXVK: 4.79ms에서 4.45ms로 0.34ms 줄어듦
    • Wayland와 low-latency: 4.83ms에서 4.38ms로 0.45ms 감소함
    • Wayland 기본 DXVK: 4.93ms에서 4.67ms로 0.26ms 줄어듦
  • p95와 p5 사이의 폭은 VRR 사용 시 2.1~2.2ms, 미사용 시 2.6~3.0ms로 나타나 지연 분포도 좁아짐
  • VRR에서는 프레임이 다음 스캔아웃 슬롯을 기다리지 않고 준비되는 즉시 스캔아웃되므로, 측정 결과가 동작 방식과 일치함

dxvk-low-latency의 효과와 비용

  • FPS 제한 사례에서 dxvk-low-latency는 모든 조합의 지연을 줄였으며, 평균 개선 폭은 0.20ms로 X11과 Wayland의 평균 차이 0.18ms와 비슷함
    • X11과 VRR: 4.45ms에서 4.21ms로 0.24ms 감소함
    • X11과 VRR 비활성화: 4.79ms에서 4.64ms로 0.15ms 줄어듦
    • Wayland와 VRR: 4.67ms에서 4.38ms로 0.29ms 감소함
    • Wayland와 VRR 비활성화: 4.93ms에서 4.83ms로 0.10ms 줄어듦
  • FPS 제한 해제 조건에서는 페이서가 렌더 큐 누적을 막고 불균일한 프레임 페이싱을 완화하는 효과가 더 크게 나타남
    • GPU를 완전히 포화시키지 않고 GPU 병목에 가까운 상태로 유지함
    • GPU 사용률은 기본 DXVK에서 100%, dxvk-low-latency에서 95~97%였음
    • 지연은 5.27ms에서 4.43ms로 0.84ms 감소함
    • FPS는 715에서 670으로 45FPS 줄어듦

XWayland가 추가한 큰 지연

  • Heroic Launcher의 Enable Wine-Wayland (Experimental) 또는 PROTON_ENABLE_WAYLAND=1을 끄면 게임이 XWayland를 통해 실행됨
  • XWayland는 네이티브 Wayland보다 큰 지연을 추가함
    • low-latency 활성화: 4.83ms에서 5.95ms로 1.12ms 증가함
    • 기본 DXVK: 4.93ms에서 8.06ms로 3.13ms 늘어남
  • 기본 DXVK에서 추가된 3.13ms는 측정한 다른 모든 효과를 합친 것보다 컸으며, 일부 나쁜 프레임이 평균을 높인 것이 아니라 전체 분포가 이동함
  • XWayland에서 dxvk-low-latency를 추가하면 지연이 2.11ms 감소해 모든 사례 중 가장 큰 개선을 기록함

결과의 적용 범위와 실전 해석

  • 측정 결과는 안정적인 제한 FPS, CPU 병목, 정적인 장면이라는 최적 조건과 특정 하드웨어·소프트웨어 스택에 한정됨
  • 다른 환경에서는 절대 지연 값이 달라질 수 있지만, 각 구성에서 발생한 증감은 대체로 이전될 수 있다고 봄
  • 주사율이 더 낮은 디스플레이에서는 VRR과 저지연 페이서의 개선 폭이 더 커질 가능성이 있음
  • X11은 Wayland보다 0.14~0.22ms 빨랐지만 KWin 최적화 작업으로 차이가 좁혀질 수 있으며, 다른 Wayland 컴포지터는 이미 더 나을 가능성도 열려 있음
  • XWayland를 제외하고 X11·VRR·dxvk-low-latency를 모두 적용하면 기본 Wayland 구성보다 중앙값이 0.72ms 낮아짐
  • 중앙값 차이는 작지만 VRR은 지연 지터를 줄이고, dxvk-low-latency는 실제 게임에서 발생하는 프레임 시간 저하와 GPU 병목 상황을 완화함

유사한 입력 지연 측정 프로젝트

Read Entire Article