git: 28a0d0b9dc - main - Status/2024Q3/kyua.adoc: Add report
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 25 Sep 2024 08:50:39 UTC
The branch main has been updated by igoro: URL: https://cgit.FreeBSD.org/doc/commit/?id=28a0d0b9dc6ea00555896f9d091e0de8abe1d7f7 commit 28a0d0b9dc6ea00555896f9d091e0de8abe1d7f7 Author: Igor Ostapenko <igoro@FreeBSD.org> AuthorDate: 2024-09-25 08:44:55 +0000 Commit: Igor Ostapenko <igoro@FreeBSD.org> CommitDate: 2024-09-25 08:44:55 +0000 Status/2024Q3/kyua.adoc: Add report Reviewed by: pauamma_gundo.com, salvadore, kp, markj Approved by: kp (mentor) Differential Revision: https://reviews.freebsd.org/D46688 --- .../en/status/report-2024-07-2024-09/kyua.adoc | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/website/content/en/status/report-2024-07-2024-09/kyua.adoc b/website/content/en/status/report-2024-07-2024-09/kyua.adoc new file mode 100644 index 0000000000..42e3f42ee3 --- /dev/null +++ b/website/content/en/status/report-2024-07-2024-09/kyua.adoc @@ -0,0 +1,40 @@ +=== Kyua Jail Support + +Contact: Igor Ostapenko <igoro@FreeBSD.org> + +The FreeBSD test suite is executed by the man:kyua[1] utility. +Kyua supports parallel execution of tests with `kyua -v parallelism=<n> test`, however many network tests leverage man:jail[8] features like man:VNET[9] and have conflicts with jail naming and network configuration. +As a result they are marked with the `is_exclusive=true` metadata property to prevent them from running at the same time and interfering with each other. +It creates a dilemma when a project aims to increase test coverage, but the accumulation of exclusive tests proportionally increases the time required to run them. +This, in turn, affects the development process from multiple angles. + +Kyua has recently got a change in 15-CURRENT to support a new concept called "execution environment". +By default, tests run in the so-called "host" execution environment, where they are executed as before. +A test can opt-in to use a brand new execution environment, the "jail" one. +In this case, kyua creates a jail before running the test, and then executes the test within the jail. +That opens up the opportunity to run more tests in parallel due to the extra isolation provided by the jail concept itself, and specifically by the VNET. +It depends on hardware and configuration, but there are reports that having the same environment [.filename]#netpfil/pf# tests can be run around 4 times faster -- a few minutes instead of half an hour. + +The following Makefile change is a quick demo of how [.filename]#netpfil/pf# tests were switched to run in parallel with jail execution environment: + + -# Tests reuse jail names and so cannot run in parallel. + -TEST_METADATA+= is_exclusive=true + +# Allow tests to run in parallel in their own jails + +TEST_METADATA+= execenv="jail" + +TEST_METADATA+= execenv_jail_params="vnet allow.raw_sockets" + +More details: + +* The key commit with detailed description: link:https://cgit.freebsd.org/src/commit/?id=257e70f1d5ee61037c8c59b116538d3b6b1427a2[257e70f1d5ee61037c8c59b116538d3b6b1427a2] +* The man pages covering the "execenv" feature: man:kyuafile[5], man:kyua.conf[5] + +This change also brings new sysctl read-only variables, which expose more details about current jail, and may be generally useful: + +* `security.jail.children.max: Maximum number of child jails` +* `security.jail.children.cur: Current number of child jails` + +A hint: the `sysctl -n security.jail.children.cur` run from `prison0` provides the number of all jails in the system. + +Further improvements to Kyua, such as requirements definition and automatic resolution, are currently in the design phase. +Potentially new metadata properties like `required_klds` and `required_pkgs` provide a clue to these topics. +Please contact Igor to discuss ideas and use cases that can help shape these upcoming Kyua enhancements.