-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On Sun, Feb 09, 2025 at 12:04:20PM +0100, David Hobach wrote: > 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
Ouch. 500sms to set up networking is way too slow, and it looks like setting up the root filesystem is also slow. dev-mapper-dmroot.device takes 1.310s to start up, which is nearly half of the 2.170s spent in userspace on the VM I used to write this message. I suspect this is largely a problem with the Xen toolstack, which is not optimized, to put it mildly. Replacing it with an optimized toolstack like the one Edera uses would make things much, much faster. > > And also, now it can do over 50 calls per second, I'd say it's way more than > > enough for its intended use. _Not_ fast enough for an internet-facing qrexec-call-per-request service, though, unless one checks authentication before the call to revent denial of service attacks. - -- Sincerely, Demi Marie Obenour (she/her/hers) Invisible Things Lab -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmepTjoACgkQszaHOrMp 8lNCXg/6AjQ2iX3D7GTiueNm5/59PzxR/YPgeFHr6ehSReTDRvXIYfUp6KudTE8h Y5xjQY5tDkg6nogUshtdNdiHHNY3gniBG+XHTpNebpM9O4EVXUEadgxjBQErIhaM Ua+ORHLnAYY9d60a4aUdgocOiygOTd3NDU39r3HfVimDdlX7Q0RbEBUzaNlqH2U6 gJ+iQ58OqxuKtV6+3XlQep/5Ea+2NNqO8g9TwsfRQ4m026NTJDGJIyP+HceZvkUl hr+1quFjhDp+DJjzPpUsqX4EqsCrOKgDvlfF3cTmun9ydqvdM+kydInVHJT93jNN E2XNlmghNdLx+UggcP/e4wosrcbjvZpkzXl9u2dZe4zF0Iuk1SGqGtJ3iyKIZW0q IazvAEP3fySM8x0jQmJ654Sb0MyUTn+p74EL0VfgCa8jFg0nQVEuAtVfIqYoWr2b 93ATX7mCb2UKQnb3hUqW0pV1Wt2HWLf4ajEUwbp7keJZArvWg6zyIqCKE7Y9lyHz +49hdBClYrzzVpWVtRbh1iW+1YyddEjV4LICdCryFiPG9l5+hhdfS47isUjDZ8wE pdcBa4uBtXVxacgH/G6wFLYiltkViBeBYukeu5bx0O9xMy9i9X54zTUSQk/swsB3 gnql+EA6FT7YYKH1nF+iIImsXTjzQNuUHsg+DOVpPaRzyWNoeYY= =3Vli -----END PGP SIGNATURE----- -- 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/Z6lOPziG5pJul2GB%40itl-email.