44ec023c17
The new C test takes 25 seconds on QEMU-RISC-V, wheras the shell version takes 332 seconds. Even with the latest optimizations to atf-sh this test still takes a few seconds to startup in QEMU. Re-writing it in C reduces the runtime for a single test from about 2-3 seconds to less than .5 seconds. Since there are ~80 tests, this adds up to about 3-4 minutes. This may not seem like a big speedup, but before the recent optimizations to avoid atf_get_srcdir, each test took almost 100 seconds on QEMU RISC-V instead of 3. This also significantly reduces the time it takes to list the available test cases, which speeds up running the tests via kyua: ``` root@qemu-riscv64-alex:~ # /usr/bin/time kyua test -k /usr/tests/sbin/pfctl/Kyuafile pfctl_test_old ... 158/158 passed (0 failed) 332.08 real 42.58 user 286.17 sys root@qemu-riscv64-alex:~ # /usr/bin/time kyua test -k /usr/tests/sbin/pfctl/Kyuafile pfctl_test 158/158 passed (0 failed) 24.96 real 9.75 user 14.26 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test pf1001 pfctl_test: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Running pfctl -o none -nvf /usr/tests/sbin/pfctl/./files/pf1001.in --- binat on em0 inet6 from fc00::/64 to any -> fc00:0:0:1::/64 binat on em0 inet6 from any to fc00:0:0:1::/64 -> fc00::/64 --- passed 0.17 real 0.06 user 0.08 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_old pf1001 pfctl_test_old: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test_old: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Id Refs Name 141 1 pf Executing command [ pfctl -o none -nvf - ] passed 1.73 real 0.25 user 1.41 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_old -l > /dev/null 24.36 real 2.26 user 21.86 sys root@qemu-riscv64-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test -l > /dev/null 0.04 real 0.02 user 0.01 sys ``` The speedups are even more noticeable on CHERI-RISC-V (since QEMU runs slower when emulating CHERI instructions): ``` root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_new -l > /dev/null 0.51 real 0.49 user 0.00 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test -l > /dev/null 34.20 real 32.69 user 0.16 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test pf1001 pfctl_test: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Id Refs Name 147 1 pf Executing command [ pfctl -o none -nvf - ] passed 5.74 real 5.41 user 0.03 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # /usr/bin/time ./pfctl_test_new pf1001 pfctl_test_new: WARNING: Running test cases outside of kyua(1) is unsupported pfctl_test_new: WARNING: No isolation nor timeout control is being applied; you may get unexpected failures; see atf-test-case(4) Running pfctl -o none -nvf /usr/tests/sbin/pfctl/./files/pf1001.in --- binat on em0 inet6 from fc00::/64 to any -> fc00:0:0:1::/64 binat on em0 inet6 from any to fc00:0:0:1::/64 -> fc00::/64 --- passed 0.68 real 0.66 user 0.00 sys root@qemu-cheri-alex:/usr/tests/sbin/pfctl # ``` Reviewed By: kp Differential Revision: https://reviews.freebsd.org/D26779 |
||
---|---|---|
.. | ||
adjkerntz | ||
bectl | ||
bsdlabel | ||
camcontrol | ||
ccdconfig | ||
clri | ||
comcontrol | ||
conscontrol | ||
ddb | ||
decryptcore | ||
devd | ||
devfs | ||
devmatch | ||
dhclient | ||
dmesg | ||
dump | ||
dumpfs | ||
dumpon | ||
etherswitchcfg | ||
fdisk | ||
ffsinfo | ||
fsck | ||
fsck_ffs | ||
fsck_msdosfs | ||
fsdb | ||
fsirand | ||
gbde | ||
geom | ||
ggate | ||
growfs | ||
gvinum | ||
hastctl | ||
hastd | ||
ifconfig | ||
init | ||
ipf | ||
ipfw | ||
iscontrol | ||
kldconfig | ||
kldload | ||
kldstat | ||
kldunload | ||
ldconfig | ||
md5 | ||
mdconfig | ||
mdmfs | ||
mknod | ||
mksnap_ffs | ||
mount | ||
mount_cd9660 | ||
mount_fusefs | ||
mount_msdosfs | ||
mount_nfs | ||
mount_nullfs | ||
mount_udf | ||
mount_unionfs | ||
natd | ||
newfs | ||
newfs_msdos | ||
nfsiod | ||
nos-tun | ||
nvmecontrol | ||
pfctl | ||
pfilctl | ||
pflogd | ||
ping | ||
ping6 | ||
quotacheck | ||
rcorder | ||
reboot | ||
recoverdisk | ||
resolvconf | ||
restore | ||
route | ||
routed | ||
rtsol | ||
savecore | ||
sconfig | ||
setkey | ||
shutdown | ||
spppcontrol | ||
swapon | ||
sysctl | ||
tests | ||
tunefs | ||
umount | ||
veriexec | ||
zfsbootcfg | ||
Makefile | ||
Makefile.amd64 | ||
Makefile.arm | ||
Makefile.i386 | ||
Makefile.inc | ||
Makefile.mips | ||
Makefile.powerpc64 |