On 2/8/25 15:11, Marek Marczykowski-Górecki wrote:
Hi,We've spent some time recently on improving qrexec performance, specifically lower the overhead on making a qrexec call. To have some visibility into effects, we started with adding simple performance tests: https://github.com/QubesOS/qubes-core-admin/pull/647 Here I'll focus on just one test that is making 500 calls and measure the total time in seconds - the lower the better. Here are the results: baseline (qrexec 4.3.1): fedora-41-xfce_exec 53.047245962000034[1] remove qubes-rpc-multiplexer[2] (qrexec 4.3.2): fedora-41-xfce_exec 21.449519581999994 [3] cache system info for policy[4]: fedora-41-xfce_exec 9.012277056000016[5] So, in total over 5x improvement :)
That sounds great and I look forward to that change. Thanks a lot in advance! :) However for an overall improvement in user experience not only the qrexec speed is relevant, but also the time to get the qrexec service running inside a newly started VM. For example on my machine a qrexec call on a running VM takes ~530ms (hopefully less in the future with the changes you mentioned) and one on a small non-running VM 6s, out of which the qubes-qrexec-agent.service takes 2,8s to start: qubes-qrexec-agent.service +20ms └─systemd-user-sessions.service @2.855s +18ms └─network.target @2.852s └─networking.service @2.750s +101ms └─network-pre.target @2.732s └─qubes-iptables.service @2.416s +315ms └─qubes-antispoof.service @2.210s +205ms └─basic.target @2.206s └─sockets.target @2.206s └─qubes-updates-proxy-forwarder.socket @2.206s └─sysinit.target @2.187s └─systemd-binfmt.service @1.860s +327ms └─proc-sys-fs-binfmt_misc.mount @2.114s +69ms └─systemd-journald.socket @1.015s └─-.mount @984ms └─-.slice @985ms So improving the speed at which any of these services in the qubes-qrexec-agent.service critical chain start or possibly getting rid of dependencies entirely should improve the overall Qubes OS performance. For example these numbers looked smaller in 4.1 on the same machine and a comparable VM [6]. [6] https://github.com/3hhh/qubes-performance/blob/master/samples/4.1/t530_debian-11_01.txt#L32-L40
And also, now it can do over 50 calls per second, I'd say it's way more than enough for its intended use. [1] https://openqa.qubes-os.org/tests/127227/logfile?filename=system_tests-perf_test_results.txt [2] https://github.com/QubesOS/qubes-issues/issues/9062 [3] https://openqa.qubes-os.org/tests/127864/logfile?filename=system_tests-perf_test_results.txt [4] https://github.com/QubesOS/qubes-issues/issues/9362 [5] https://openqa.qubes-os.org/tests/128145/logfile?filename=system_tests-perf_test_results.txt
-- You received this message because you are subscribed to the Google Groups "qubes-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to qubes-devel+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/qubes-devel/05498136-34cf-49a7-893f-83a94c823af8%40hackingthe.net.
OpenPGP_0x08DEA51AE90C3780.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature