Ryll Documentation¶
What is Ryll?¶
Ryll is a purpose-built SPICE VDI test client, written in Rust. It exists to support performance testing of the Kerbside SPICE proxy.
Background¶
Kerbside is a SPICE protocol native proxy that sits between SPICE clients and servers. Unlike layer 4 proxies that simply pass through unparsed traffic, Kerbside understands the SPICE protocol itself, allowing it to make intelligent routing and optimization decisions.
Getting Kerbside integrated into OpenStack has been a long process (see kerbside-patches), and now the focus has started to shift to performance validation.
What's With The Name?¶
Honestly, I am not super into Star Wars or anything, but "ryll" was the first good spice pun I came across. To quote the excellently named Wookieepedia:
Ryll was a precious ore harvested from the mines of Ryloth, and could also be found in the Krost Mountains on Aaloth. It had military and scientific applications, but could also be used as a drug in the form of refined spice, which was less effective than glitterstim.
I guess I should think of a project to name "glitterstim" now too.
Why Build a Custom Client?¶
Existing SPICE clients like remote-viewer (spice-gtk) are designed for
end-user use. They work well for connecting to VMs, but they're not designed
to be instrumented for performance testing.
Ryll was built to:
- Generate controlled traffic - Predictable workloads for benchmarking
- Measure latency precisely - Track time from keystroke to display update
- Run headless - Automated testing without GUI overhead
- Be fully instrumented - Every metric needed for proxy performance analysis
The Testing Setup¶
┌─────────┐ ┌───────────┐ ┌─────────────┐
│ ryll │────────▶│ kerbside │────────▶│ SPICE server│
│ (client)│ │ (proxy) │ │ (QEMU) │
└─────────┘ └───────────┘ └─────────────┘
│ │ │
│ │ │
▼ ▼ ▼
Metrics: Metrics: Metrics:
- Latency - Throughput - Server-side
- Frame rate - Connection time processing
- Bytes in/out - Protocol overhead
With ryll, we can:
- Measure end-to-end latency through the proxy
- Compare performance with and without the proxy
- Identify bottlenecks in the proxy implementation
- Validate that the proxy doesn't degrade user experience
Future Direction¶
It's likely that a custom SPICE server will also be needed, to control both ends of the traffic through the proxy. This would allow:
- Generating specific display patterns (gradients, text, video-like content)
- Precise timing of server-side events
- Controlled latency injection for testing
- Complete instrumentation of the entire path
Documentation Index¶
- Binary Portability - How to share built binaries
- Configuration - CLI options and .vv file format
- macOS Development - Build and test locally on macOS
- Troubleshooting - Common issues and debugging
Project Files¶
- README - Quick start and usage
- ARCHITECTURE - Technical design details
- AGENTS - Guide for AI coding assistants