피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Rust 기반 Software KVM 구현을 통한 소프트웨어 오버헤드 1ms 미만 달성
Building a Software KVM in Rust: Why I Ditched Synergy and Rolled My Own
AI 요약
Context
Synergy, Barrier 등 기존 Software KVM의 잦은 연결 끊김과 OS 제약 사항으로 인한 사용자 경험 저하 발생. 특히 저지연성 확보와 크로스 플랫폼 환경에서의 안정적인 입력 장치 제어라는 기술적 병목 지점 존재.
Technical Solution
- GC Pause 및 Runtime 오버헤드 제거를 통한 입력 경로의 결정론적 할당과 1ms 미만의 소프트웨어 지연 시간 확보
- Ownership 모델을 활용한 Memory Safety 확보로 입력 장치 저수준 접근 시 발생 가능한 Data Race 및 Buffer Overflow 원천 차단
- TCP 핸드셰이크 비용 제거를 위한 UDP 기반 Transport 계층 설계 및 Noise 프로토콜 도입을 통한 저지연 보안 통신 구현
- OS별 전용 훅(SetWindowsHookEx, CGEventTap) 및 입력 주입 API(SendInput, CGEventPost)를 통한 Native 수준의 이벤트 캡처 및 리플레이
- mDNS 기반 자동 장치 탐색 구조 설계로 사용자 IP 설정 과정을 제거한 Zero-config 환경 구축
- OS별 상이한 클립보드 데이터 표현 방식 해결을 위한 데이터 정규화(Canonical Formats) 처리 로직 구현
Impact
- 소프트웨어 처리 오버헤드 1ms 미만 달성
- Wired LAN 환경 내 End-to-End 지연 시간 1ms 미만, Wi-Fi 환경 내 2~4ms 기록
- 바이너리 크기 10MB 미만 최적화로 즉각적인 실행 속도 확보
Key Takeaway
입력 장치 제어와 같은 극도의 저지연성이 요구되는 시스템에서는 런타임 오버헤드가 없는 언어 선택과 전송 계층의 프로토콜 최적화가 성능의 핵심 결정 요인임.
실천 포인트
1. 실시간성 요구 시스템 설계 시 GC 유무에 따른 Tail Latency 영향도 분석
2. 전송 효율 극대화를 위해 TCP 대신 UDP와 경량 암호화 프로토콜(Noise 등) 조합 검토
3. 크로스 플랫폼 구현 시 OS별 Low-level API 차이에 따른 데이터 정규화 계층 설계
4. 서비스 지속 가능성을 위한 오픈소스 모델과 유료 모델의 유지보수 비용 트레이드오프 고려