- GNOME 46 주기에서 VTE 기반 터미널의 입력 지연이 크게 줄어, Fedora 40 테스트에서 빠른 기준선으로 쓰인 Alacritty에 거의 근접함
- 측정은 키 입력부터 화면 픽셀 변화까지의 종단 간 입력 지연을 하드웨어 센서로 재는 방식이라 커널·컴포지터·앱·모니터 응답 시간이 함께 반영됨
- 단순
cat > /dev/null입력과 복잡한 neovim 스크롤 모두에서 Console, VTE Test App, GNOME Terminal이 GNOME 45 대비 뚜렷하게 개선됨 - 핵심 변화는 VTE가 기존 40Hz repaint timer 대신 모니터와 동기화된 프레임마다 다시 그리는 방식으로 바뀐 점일 가능성이 큼
- VTE 0.76을 쓰는 GNOME 46 터미널은 체감 지연이 줄어들어, VTE 기반 터미널을 느리다는 이유로 피하던 사용자도 다시 시도해볼 만함
VTE 기반 터미널에서 일어난 변화
- VTE는 여러 GNOME 터미널 에뮬레이터의 기반이 되는 Virtual TErminal library임
- GTK 위젯으로 터미널 뷰를 제공함
- GNOME Terminal, Console, Black Box, Tilix, Terminator, Ptyxis 등에 사용됨
- Builder와 Workbench의 내장 터미널도 VTE를 사용함
- GNOME 46 주기 동안 VTE에 많은 성능 개선이 들어갔고, 사용자가 실제로 느끼는 입력 지연이 주요 확인 대상이 됨
입력 지연 측정 방식
- 입력 지연은 키보드 키를 누른 순간부터 모니터 픽셀 색이 바뀌는 순간까지의 시간임
- 지연이 낮을수록 앱이 더 즉각적으로 반응하는 것처럼 느껴짐
- 낮은 지연과 높은 지연을 번갈아 비교하면 차이가 더 잘 드러남
- 측정에는 소프트웨어 화면 캡처가 아니라 하드웨어 입력 지연 테스터를 사용함
- 광 센서를 Teensy 보드에 연결하고, 보드는 USB로 컴퓨터에 연결됨
- 센서는 터미널의 특정 문자 셀처럼 키 입력으로 밝기가 바뀌는 작은 화면 영역을 바라봄
- 보드가 Space 같은 키 입력을 보내고 광량 변화를 감지한 뒤, Backspace 같은 두 번째 키로 원래 상태로 되돌림
- 반복 사이에 임의의 대기 시간을 넣어 측정이 모니터 주사율에 고정되는 현상을 피함
- 이 방식은 커널, 컴포지터, 애플리케이션, 모니터 응답 시간을 포함한 종단 간 지연을 측정함
- 키보드 펌웨어 지연은 제외됨
- 현재 보드와 펌웨어에서는 초당 약 35,500개의 광 센서 값을 기록함
- 각 테스트는 120회 반복됨
- 점들의 분포가 모니터의 한 번 갱신 주기 정도로 균일하게 퍼지는 것이 기대되는 형태임
- 144Hz 모니터의 갱신 주기는 약 6.94ms이며, 예시 그래프의 점들은 7–8ms 범위에 퍼짐
- 높은 이상치나 더 넓은 분포는 테스트 대상 앱의 지연 또는 느린 처리를 나타낼 수 있음
테스트 환경과 비교 대상
- 테스트 시스템은 Lenovo Legion 7 Gen 7 AMD 노트북임
- CPU는 Ryzen 7 6800H
- GPU는 Radeon RX 6700M dGPU이며 MUX 스위치로 dGPU만 사용함
- 모니터는 Acer Nitro XV320QU, 2560×1440, 144Hz, 100% 스케일임
- 호스트는 Fedora 40 Silverblue Beta, Mesa 24.0.4
- 컴포지터는 raw Mutter 46.0임
- raw Mutter는 GNOME Shell 없이 Mutter만 실행한 단순한 테스트 환경임
mutter --display-server -- alacritty같은 명령으로 실행 가능함- GNOME Shell 오버헤드가 거의 없는 이상적인 조건에 가까움
- 비교 대상 터미널은 네 가지임
- Alacritty: VTE 기반이 아니며, 이전 테스트들에서 꾸준히 빠른 터미널이라 기준선 역할을 함
- Console: GTK 4 기반 GNOME 기본 터미널
- VTE Test App: VTE 저장소에 있는 GTK 4 테스트 터미널
- GNOME Terminal: GNOME 46에서는 GTK 3 앱이며, 여러 배포판에서 기본 제공됨
- GNOME 45와 GNOME 46 비교에는 Fedora 39와 Fedora 40
toolbox컨테이너를 사용함- 각 터미널은 Fedora 패키지 그대로 설치하고 추가 조정 없이 실행함
- 창은 모니터 왼쪽 위에 배치하고, 마우스 커서는 링크 감지 로직이 결과를 왜곡하지 않도록 창 밖에 둠
단순 입력과 neovim 스크롤 결과
- 첫 번째 테스트는
cat > /dev/null을 실행한 뒤 Space 입력으로 블록 커서가 오른쪽으로 한 칸 이동하는 시간을 측정함- readline 같은 추가 처리가 없는 최소 오버헤드 상황임
- Alacritty는 Fedora 39에서 Fedora 40으로 바뀌어도 예상대로 변화가 없음
- VTE 기반 터미널들은 GNOME 45 대비 GNOME 46에서 크게 개선되어 Alacritty와 거의 같은 수준에 도달함
- GTK 3 기반 GNOME Terminal도 매우 근접한 결과를 보임
- 큰 개선의 주요 원인은 Christian Hergert의 VTE 변경일 가능성이 큼
- 기존 40Hz VTE repaint timer에서 벗어남
- GTK 위젯답게 모니터와 동기화해 매 프레임 그리는 방식으로 바뀜
- Console에는 몇 개의 이상치가 있었고, 프로세스 추적 때문일 가능성이 있음
- 이 이상치는 새로 생긴 현상은 아님
- GNOME 47에서 살펴볼 수 있는 항목으로 남음
- 두 번째 테스트는 더 현실적인 neovim 구성을 사용함
- neovim 설정 스냅샷에서 Ptyxis README를 열고, 광 센서가 감지할 수 있도록 일부 텍스트를 Unicode full-block 문자로 바꿈
- Ctrl+D와 Ctrl+U를 반복해 텍스트 버퍼를 아래위로 스크롤함
- 터미널은 밑줄, undercurl, gutter 아이콘, 상태줄 등 화면 요소를 그려야 함
- neovim 테스트에서도 GNOME 46 터미널의 개선이 뚜렷함
- GNOME 46의 VTE 기반 터미널들은 여전히 Alacritty와 거의 비슷한 수준임
- Fedora 40 결과만 보면 neovim 테스트가 단순
cat테스트보다 지연을 늘리지만, 증가 폭은 모든 터미널에서 비슷함
vtebench가 보여준 나머지 차이
- vtebench는 입력 지연이 아니라 PTY 읽기와 파싱 성능을 측정하는 자동 벤치마크임
- 프레임레이트나 지연 같은 중요한 요소를 다루지 않으므로 터미널 성능 전체를 이해하기에는 충분하지 않음
- 터미널이 PTY에서 읽는 속도만 강하게 압박함
- repaint 시간은 vtebench 결과에도 영향을 줄 수 있음
- VTE처럼 PTY 읽기·파싱과 repaint 로직을 같은 스레드에서 실행하는 터미널에서 특히 영향이 커질 수 있음
- GNOME 46의 VTE는 vtebench에서도 개선됨
- 개선 폭은 입력 지연 테스트보다 더 다양함
- 읽기와 파싱을 렌더링과 별도 스레드에서 수행하는 Alacritty 수준에는 도달하지 못함
- 이 개선은 GNOME 46 주기 동안 VTE에 들어간 여러 최적화에서 나온 것으로 보임
dense_cells와unicode벤치마크는 기본 결과 그래프에서 제외됨- 두 항목은 vtebench의 주요 스트레스 테스트임
- VTE가 여전히 크게 흔들리는 결과를 보여 그래프의 가독성을 떨어뜨림
- 테스트 사례 기준으로 남은 차이는 거의 무시할 수 있는 수준에 가까움
- 일부 차이는 VTE가 접근성, 스크롤바 계산, 기타 기능을 위해 추가 작업을 하는 점으로 설명될 수 있음
- 접근성은 GNOME Terminal에서는 활성화되어 있고, GTK 4 터미널들에서는 현재 비활성화되어 있음
- VTE 0.76을 사용하면 GNOME 46의 개선을 포함한 성능을 얻을 수 있음