Peter Maydell <peter.mayd...@linaro.org> writes:
> "make check-acceptance" takes way way too long. I just did a run > on an arm-and-aarch64-targets-only debug build and it took over > half an hour, and this despite it skipping or cancelling 26 out > of 58 tests! > > I think that ~10 minutes runtime is reasonable. 30 is not; > ideally no individual test would take more than a minute or so. > > Output saying where the time went. The first two tests take > more than 10 minutes *each*. I think a good start would be to find > a way of testing what they're testing that is less heavyweight. > > (01/58) tests/acceptance/boot_linux.py:BootLinuxAarch64.test_virt_tcg_gicv2: > PASS (629.74 s) > (02/58) tests/acceptance/boot_linux.py:BootLinuxAarch64.test_virt_tcg_gicv3: > PASS (628.75 s) So I've done some digging and tried some alternative images but I'm running into two things: - -cpu max is slow without ,pauth-impdef=on - for some reason the distro cloud images cause 2 orders of magnitude more TB invalidates For example a very simple Alpine boot: Translation buffer state: gen code size 810926227/1073659904 TB count 1514678 TB avg target size 17 max=2048 bytes TB avg host size 292 bytes (expansion ratio: 16.8) cross page TB count 0 (0%) direct jump count 1035828 (68%) (2 jumps=772419 50%) TB hash buckets 439751/524288 (83.88% head buckets used) TB hash occupancy 42.96% avg chain occ. Histogram: [0,10)%|▄▁█▁▁▇▁▅▁▂|[90,100]% TB hash avg chain 1.056 buckets. Histogram: 1|█▁ ▁▁|10 Statistics: TB flush count 0 TB invalidate count 550632 TLB full flushes 0 TLB partial flushes 1488833 TLB elided flushes 12085180 [TCG profiler not compiled] which unsurprisingly has this at the top of the perf profile: 20.17% qemu-system-aar qemu-system-aarch64 [.] do_tb_phys_invalidate 3.60% qemu-system-aar qemu-system-aarch64 [.] helper_lookup_tb_ptr Versus my Debian Bullseye testing image (with all of systemd): Translation buffer state: gen code size 899208739/1073577984 TB count 1599725 TB avg target size 18 max=2048 bytes TB avg host size 318 bytes (expansion ratio: 17.2) cross page TB count 0 (0%) direct jump count 1067312 (66%) (2 jumps=826284 51%) TB hash buckets 816402/1048576 (77.86% head buckets used) TB hash occupancy 36.57% avg chain occ. Histogram: [0,10)%|▅ █ ▆▁▃▁▂|[90,100]% TB hash avg chain 1.027 buckets. Histogram: 1|█▁▁ ▁|9 Statistics: TB flush count 0 TB invalidate count 7763 TLB full flushes 0 TLB partial flushes 1066791 TLB elided flushes 973569 [TCG profiler not compiled] with a more reasonable balance: 4.21% qemu-system-aar qemu-system-aarch64 [.] get_phys_addr_lpae 4.16% qemu-system-aar qemu-system-aarch64 [.] helper_lookup_tb_ptr I'm open to ideas as to what might cause that. -- Alex Bennée