Skip to content

Refresh preloaded disposables on outdated volumes#707

Merged
marmarek merged 1 commit intoQubesOS:mainfrom
ben-grande:preload-refresh
Aug 8, 2025
Merged

Refresh preloaded disposables on outdated volumes#707
marmarek merged 1 commit intoQubesOS:mainfrom
ben-grande:preload-refresh

Conversation

@ben-grande
Copy link
Contributor

@ben-grande ben-grande commented Jul 22, 2025

Fixes: QubesOS/qubes-issues#10026
For: QubesOS/qubes-issues#1512


Missing unit tests.

@ben-grande ben-grande force-pushed the preload-refresh branch 4 times, most recently from b1a4cde to 0e44908 Compare July 22, 2025 16:29
@ben-grande
Copy link
Contributor Author

Integration test is working and that was easy, the unit tests are more difficult to get the magic right.

@ben-grande ben-grande marked this pull request as ready for review July 22, 2025 19:12
@ben-grande ben-grande force-pushed the preload-refresh branch 4 times, most recently from bc7bbff to 4d56b5f Compare July 24, 2025 14:42
@codecov
Copy link

codecov bot commented Jul 24, 2025

Codecov Report

❌ Patch coverage is 50.00000% with 38 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.37%. Comparing base (c2bd753) to head (fcbbac9).
⚠️ Report is 17 commits behind head on main.

Files with missing lines Patch % Lines
qubes/vm/mix/dvmtemplate.py 34.28% 23 Missing ⚠️
qubes/vm/dispvm.py 70.00% 9 Missing ⚠️
qubes/vm/qubesvm.py 40.00% 3 Missing ⚠️
qubes/vm/templatevm.py 50.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #707      +/-   ##
==========================================
- Coverage   70.53%   70.37%   -0.16%     
==========================================
  Files          61       61              
  Lines       13546    13587      +41     
==========================================
+ Hits         9554     9562       +8     
- Misses       3992     4025      +33     
Flag Coverage Δ
unittests 70.37% <50.00%> (-0.16%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

# TODO: ben: cleanup with delay? Delay can help because the
# cleanup is not relevant to this run.
asyncio.ensure_future(qube.cleanup())
dispvm = qube
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This loop doesn't stop checking. There should be some break/continue to stop at first non-outdated.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Comment on lines +499 to +502
dispvm = qube
break
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be under else:? otherwise you will try to use a dispvm that you just scheduled to be cleaned up...
Or maybe add continue after scheduling cleanup?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't test the latest version since the TODOs yet, focusing on the benchmark PR to test delays on different stages (somehow put a delay in those places).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anyway. fixed.

@ben-grande
Copy link
Contributor Author

With preload of 2, although the total time is the similar, the execution time is higher, making it worse (exec time is how early the remote can respond to the caller).

No delay on used event:

qubes.tests.integ.dispvm_perf/TC_00_DispVMPerf_fedora-42-xfce/test_404_dispvm_preload_api
  Latency of dom0-dispvm (preload) API calls ...
iter dom   disp  exec  clean total dom% disp% exec% clean%
   1 0.027 0.000 0.286 3.537 3.851   1%    0%    7%    92%
   2 0.041 0.000 0.428 4.077 4.546   1%    0%    9%    90%
   3 0.043 0.000 0.697 3.679 4.419   1%    0%   16%    83%
   4 0.164 0.000 0.659 3.357 4.180   4%    0%   16%    80%
   5 0.033 0.000 0.988 3.785 4.806   1%    0%   21%    79%
   6 0.050 0.000 0.682 3.712 4.444   1%    0%   15%    84%
   7 0.045 0.000 0.681 3.407 4.134   1%    0%   16%    82%
   8 0.038 0.000 1.017 3.732 4.788   1%    0%   21%    78%
   9 0.054 0.000 0.645 3.766 4.465   1%    0%   14%    84%
  10 0.045 0.000 0.712 3.381 4.138   1%    0%   17%    82%
  11 0.031 0.000 0.981 4.017 5.030   1%    0%   20%    80%
  12 0.060 0.000 0.638 3.510 4.208   1%    0%   15%    83%
  13 0.027 0.000 0.947 3.564 4.538   1%    0%   21%    79%
  14 0.061 0.000 0.642 3.631 4.334   1%    0%   15%    84%
  15 0.025 0.000 0.929 3.730 4.685   1%    0%   20%    80%
  16 0.063 0.000 0.631 3.630 4.324   1%    0%   15%    84%
Run time (iterations=16 average=4.431): 70.890s

Delay of 1 second on used event:

qubes.tests.integ.dispvm_perf/TC_00_DispVMPerf_fedora-42-xfce/test_404_dispvm_preload_api
  Latency of dom0-dispvm (preload) API calls ...
iter dom   disp  exec  clean total dom% disp% exec% clean%
   1 0.020 0.000 0.270 2.159 2.449   1%    0%   11%    88%
   2 0.024 0.000 0.338 2.860 3.222   1%    0%   10%    89%
   3 0.035 0.000 4.332 2.035 6.402   1%    0%   68%    32%
   4 0.029 0.000 4.237 3.476 7.742   0%    0%   55%    45%
   5 0.157 0.000 0.322 1.963 2.442   6%    0%   13%    80%
   6 0.028 0.000 2.444 1.846 4.318   1%    0%   57%    43%
   7 0.030 0.000 2.869 1.999 4.898   1%    0%   59%    41%
   8 0.025 0.000 2.460 1.985 4.470   1%    0%   55%    44%
   9 0.031 0.000 2.483 2.033 4.547   1%    0%   55%    45%
  10 0.031 0.000 2.270 2.104 4.404   1%    0%   52%    48%
  11 0.028 0.000 2.583 1.601 4.212   1%    0%   61%    38%
  12 0.023 0.000 2.996 2.056 5.074   0%    0%   59%    41%
  13 0.034 0.000 2.620 1.892 4.546   1%    0%   58%    42%
  14 0.027 0.000 2.622 2.043 4.693   1%    0%   56%    44%
  15 0.028 0.000 2.670 1.988 4.685   1%    0%   57%    42%
  16 0.026 0.000 2.442 2.053 4.521   1%    0%   54%    45%
Run time (iterations=16 average=4.539): 72.625s
ok

@ben-grande ben-grande force-pushed the preload-refresh branch 2 times, most recently from ddeb253 to 1c0fb1f Compare July 29, 2025 15:41
"domain-preload-dispvm-start", reason="there is a gap"
"domain-preload-dispvm-start",
reason="there is a gap",
delay=5,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also relevant on refresh because the old preloads might be removed already and there is a gap, but because of the delay in refresh_preload, there is a higher chance of this event being called. Therefore, add a delay to not attempt preload.

appvm.remove_preload_from_list([qube.name])
# Delay to not affect this run.
asyncio.ensure_future(
qube.delay(delay=2, coros=[qube.cleanup()])
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 seconds seems to be enough according to qubesd logs.

)
# Delay to not affect this run.
asyncio.ensure_future(
dispvm.delay(delay=2, coros=[dispvm.cleanup()])
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 seconds seems to be enough according to qubesd logs.

self.fire_event_async(
"domain-preload-dispvm-start",
reason="of outdated volume(s)",
delay=4,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This delay gives enough time for the old preloads to be cleaned up before trying to preload. It is intended to avoid overload of the system because cleanup and preload can be a bit intensive when combined with many preloaded disposables. There is no perfect delay here, basing of what my tests told were enough, but my hardware is not the same as any other user's hardware.

return qubes.qmemman.algo.pref_mem(domain) / 1024

async def delay(self, delay: float | int, coros: list[Awaitable]) -> None:
self.log.info(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

log.debug?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

Reduce load when viable with delays, which can help on the current run
or overall health of the system to not refreshing (cleanup+preload) in a
short time.

Fixes: QubesOS/qubes-issues#10026
For: QubesOS/qubes-issues#1512
dispvm = None
for item in preload_dispvm:
qube = app.domains[item]
if any(vol.is_outdated() for vol in qube.volumes.values()):
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to be clear of why this is needed, receiving the event domain-shutdown, as far as I know, does not enforce that it runs before anything else, including running before this section.

@marmarek marmarek merged commit bf9c3bf into QubesOS:main Aug 8, 2025
2 of 5 checks passed
@qubesos-bot
Copy link

qubesos-bot commented Aug 8, 2025

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025080809-4.3&flavor=pull-requests

Test run included the following:

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025061004-4.3&flavor=update

  • system_tests_dispvm

    • TC_20_DispVM_debian-12-xfce: test_019_preload_refresh (error + timed out)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...
  • system_tests_audio

  • system_tests_qwt_win10@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'file-copy-prompt' mat...
  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_install: wait_serial (wait serial expected)
      # wait_serial expected: qr/qDqV_-\d+-/...

    • windows_install: Failed (test died + timed out)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...

  • system_tests_dispvm_perf@hw7

    • TC_00_DispVMPerf_whonix-workstation-17: test_003_dispvm_gui_concurrent (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf.py --dvm=test-ins...
  • system_tests_basic_vm_qrexec_gui@hw7

    • startup: unnamed test (unknown)
    • startup: Failed (test died)
      # Test died: no candidate needle with tag(s) 'nm-applet' matched...
  • system_tests_guivm_gpu_gui_interactive@hw13

    • guivm_startup: wait_serial (wait serial expected)
      # wait_serial expected: qr/lEcbc-\d+-/...

    • guivm_startup: Failed (test died + timed out)
      # Test died: command '! qvm-check sys-whonix || time qvm-start sys-...

Failed tests

15 failures
  • system_tests_dispvm

    • TC_20_DispVM_debian-12-xfce: test_019_preload_refresh (error + timed out)
      qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...
  • system_tests_audio

  • system_tests_qwt_win10@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'file-copy-prompt' mat...
  • system_tests_qwt_win10_seamless@hw13

    • windows_clipboard_and_filecopy: unnamed test (unknown)
    • windows_clipboard_and_filecopy: Failed (test died)
      # Test died: no candidate needle with tag(s) 'windows-Edge-address-...
  • system_tests_qwt_win11@hw13

    • windows_install: wait_serial (wait serial expected)
      # wait_serial expected: qr/qDqV_-\d+-/...

    • windows_install: Failed (test died + timed out)
      # Test died: command 'script -e -c 'bash -x /usr/bin/qvm-create-win...

  • system_tests_dispvm_perf@hw7

    • TC_00_DispVMPerf_whonix-workstation-17: test_003_dispvm_gui_concurrent (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf.py --dvm=test-ins...
  • system_tests_basic_vm_qrexec_gui@hw7

    • startup: unnamed test (unknown)
    • startup: Failed (test died)
      # Test died: no candidate needle with tag(s) 'nm-applet' matched...
  • system_tests_kde_gui_interactive

    • gui_keyboard_layout: wait_serial (wait serial expected)
      # wait_serial expected: "echo -e '[Layout]\nLayoutList=us,de' | sud...

    • gui_keyboard_layout: Failed (test died)
      # Test died: command 'test "$(cd ~user;ls e1*)" = "$(qvm-run -p wor...

  • system_tests_guivm_gpu_gui_interactive@hw13

    • guivm_startup: wait_serial (wait serial expected)
      # wait_serial expected: qr/lEcbc-\d+-/...

    • guivm_startup: Failed (test died + timed out)
      # Test died: command '! qvm-check sys-whonix || time qvm-start sys-...

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/142375#dependencies

11 fixed

Unstable tests

Details

Performance Tests

Performance degradation:

3 performance degradations
  • debian-12-xfce_exec-data-simplex: 72.58 🔺 ( previous job: 65.51, degradation: 110.79%)
  • debian-12-xfce_exec-data-duplex-root: 82.13 🔺 ( previous job: 70.01, degradation: 117.32%)
  • whonix-workstation-17_exec-data-duplex-root: 108.22 🔺 ( previous job: 86.00, degradation: 125.83%)

Remaining performance tests:

130 tests
  • debian-12-xfce_exec: 7.94 🟢 ( previous job: 8.63, improvement: 91.99%)
  • debian-12-xfce_exec-root: 27.65 🟢 ( previous job: 29.44, improvement: 93.93%)
  • debian-12-xfce_socket: 8.46 🟢 ( previous job: 8.50, improvement: 99.51%)
  • debian-12-xfce_socket-root: 8.62 🔺 ( previous job: 8.31, degradation: 103.64%)
  • debian-12-xfce_exec-data-duplex: 69.64 🟢 ( previous job: 73.55, improvement: 94.69%)
  • debian-12-xfce_socket-data-duplex: 144.00 🟢 ( previous job: 161.35, improvement: 89.24%)
  • fedora-42-xfce_exec: 9.10
  • fedora-42-xfce_exec-root: 58.20
  • fedora-42-xfce_socket: 8.75
  • fedora-42-xfce_socket-root: 8.48
  • fedora-42-xfce_exec-data-simplex: 60.85
  • fedora-42-xfce_exec-data-duplex: 74.87
  • fedora-42-xfce_exec-data-duplex-root: 102.84
  • fedora-42-xfce_socket-data-duplex: 157.36
  • whonix-gateway-17_exec: 6.12 🟢 ( previous job: 7.34, improvement: 83.32%)
  • whonix-gateway-17_exec-root: 41.46 🔺 ( previous job: 39.57, degradation: 104.76%)
  • whonix-gateway-17_socket: 7.88 🔺 ( previous job: 7.85, degradation: 100.31%)
  • whonix-gateway-17_socket-root: 7.36 🟢 ( previous job: 7.89, improvement: 93.27%)
  • whonix-gateway-17_exec-data-simplex: 78.75 🔺 ( previous job: 77.76, degradation: 101.26%)
  • whonix-gateway-17_exec-data-duplex: 79.16 🔺 ( previous job: 78.39, degradation: 100.98%)
  • whonix-gateway-17_exec-data-duplex-root: 94.20 🔺 ( previous job: 90.74, degradation: 103.81%)
  • whonix-gateway-17_socket-data-duplex: 166.64 🔺 ( previous job: 161.95, degradation: 102.90%)
  • whonix-workstation-17_exec: 8.07 🟢 ( previous job: 8.27, improvement: 97.58%)
  • whonix-workstation-17_exec-root: 54.29 🟢 ( previous job: 57.61, improvement: 94.24%)
  • whonix-workstation-17_socket: 9.13 🔺 ( previous job: 8.97, degradation: 101.82%)
  • whonix-workstation-17_socket-root: 8.10 🟢 ( previous job: 9.46, improvement: 85.58%)
  • whonix-workstation-17_exec-data-simplex: 78.77 🔺 ( previous job: 74.54, degradation: 105.68%)
  • whonix-workstation-17_exec-data-duplex: 76.07 🔺 ( previous job: 74.84, degradation: 101.65%)
  • whonix-workstation-17_socket-data-duplex: 170.98 🔺 ( previous job: 160.20, degradation: 106.73%)
  • debian-12-xfce_dispvm(avg:6.038): 96.61
  • debian-12-xfce_dispvm-gui(avg:7.168): 114.69
  • debian-12-xfce_dispvm-concurrent(avg:2.855): 45.67
  • debian-12-xfce_dispvm-gui-concurrent(avg:3.517): 56.27
  • debian-12-xfce_dispvm-dom0(avg:6.747): 107.95
  • debian-12-xfce_dispvm-dom0-gui(avg:7.949): 127.19
  • debian-12-xfce_dispvm-dom0-concurrent(avg:3.278): 52.45
  • debian-12-xfce_dispvm-dom0-gui-concurrent(avg:3.819): 61.10
  • debian-12-xfce_dispvm-preload(avg:3.539): 56.62
  • debian-12-xfce_dispvm-preload-gui(avg:4.014): 64.23
  • debian-12-xfce_dispvm-preload-concurrent(avg:2.604): 41.66
  • debian-12-xfce_dispvm-preload-gui-concurrent(avg:3.198): 51.16
  • debian-12-xfce_dispvm-preload-dom0(avg:3.556): 56.90
  • debian-12-xfce_dispvm-preload-dom0-gui(avg:5.308): 84.93
  • debian-12-xfce_dispvm-preload-dom0-concurrent(avg:2.925): 46.81
  • debian-12-xfce_dispvm-preload-dom0-gui-concurrent(avg:3.666): 58.65
  • debian-12-xfce_dispvm-api(avg:6.828): 109.25
  • debian-12-xfce_dispvm-gui-api(avg:7.894): 126.31
  • debian-12-xfce_dispvm-concurrent-api(avg:3.222): 51.56
  • debian-12-xfce_dispvm-gui-concurrent-api(avg:3.808): 60.92
  • debian-12-xfce_dispvm-preload-api(avg:3.576): 57.21
  • debian-12-xfce_dispvm-preload-less-api(avg:6.112): 97.80
  • debian-12-xfce_dispvm-preload-more-api(avg:3.883): 62.12
  • debian-12-xfce_dispvm-preload-gui-api(avg:5.073): 81.17
  • debian-12-xfce_dispvm-preload-concurrent-api(avg:2.939): 47.02
  • debian-12-xfce_dispvm-preload-gui-concurrent-api(avg:3.630): 58.09
  • debian-12-xfce_vm(avg:0.410): 6.56
  • debian-12-xfce_vm-gui(avg:0.512): 8.19
  • debian-12-xfce_vm-concurrent(avg:0.412): 6.58
  • debian-12-xfce_vm-gui-concurrent(avg:0.446): 7.13
  • debian-12-xfce_vm-api(avg:0.096): 1.54
  • debian-12-xfce_vm-gui-api(avg:0.124): 1.98
  • debian-12-xfce_vm-concurrent-api(avg:0.048): 0.77
  • debian-12-xfce_vm-gui-concurrent-api(avg:0.109): 1.75
  • fedora-42-xfce_dispvm(avg:7.218): 115.50
  • fedora-42-xfce_dispvm-gui(avg:8.632): 138.11
  • fedora-42-xfce_dispvm-concurrent(avg:3.771): 60.34
  • fedora-42-xfce_dispvm-gui-concurrent(avg:4.448): 71.17
  • fedora-42-xfce_dispvm-dom0(avg:7.791): 124.66
  • fedora-42-xfce_dispvm-dom0-gui(avg:9.187): 147.00
  • fedora-42-xfce_dispvm-dom0-concurrent(avg:3.948): 63.17
  • fedora-42-xfce_dispvm-dom0-gui-concurrent(avg:4.966): 79.45
  • fedora-42-xfce_dispvm-preload(avg:4.314): 69.02
  • fedora-42-xfce_dispvm-preload-gui(avg:4.907): 78.51
  • fedora-42-xfce_dispvm-preload-concurrent(avg:3.083): 49.33
  • fedora-42-xfce_dispvm-preload-gui-concurrent(avg:4.403): 70.44
  • fedora-42-xfce_dispvm-preload-dom0(avg:4.537): 72.59
  • fedora-42-xfce_dispvm-preload-dom0-gui(avg:5.851): 93.61
  • fedora-42-xfce_dispvm-preload-dom0-concurrent(avg:3.846): 61.53
  • fedora-42-xfce_dispvm-preload-dom0-gui-concurrent(avg:4.468): 71.48
  • fedora-42-xfce_dispvm-api(avg:7.845): 125.52
  • fedora-42-xfce_dispvm-gui-api(avg:9.496): 151.94
  • fedora-42-xfce_dispvm-concurrent-api(avg:3.985): 63.75
  • fedora-42-xfce_dispvm-gui-concurrent-api(avg:4.700): 75.20
  • fedora-42-xfce_dispvm-preload-api(avg:4.581): 73.29
  • fedora-42-xfce_dispvm-preload-less-api(avg:7.390): 118.23
  • fedora-42-xfce_dispvm-preload-more-api(avg:4.343): 69.48
  • fedora-42-xfce_dispvm-preload-gui-api(avg:5.629): 90.06
  • fedora-42-xfce_dispvm-preload-concurrent-api(avg:3.592): 57.47
  • fedora-42-xfce_dispvm-preload-gui-concurrent-api(avg:4.671): 74.73
  • fedora-42-xfce_vm(avg:0.594): 9.51
  • fedora-42-xfce_vm-gui(avg:0.575): 9.20
  • fedora-42-xfce_vm-concurrent(avg:0.538): 8.60
  • fedora-42-xfce_vm-gui-concurrent(avg:0.642): 10.27
  • fedora-42-xfce_vm-api(avg:0.145): 2.32
  • fedora-42-xfce_vm-gui-api(avg:0.147): 2.35
  • fedora-42-xfce_vm-concurrent-api(avg:0.095): 1.52
  • fedora-42-xfce_vm-gui-concurrent-api(avg:0.136): 2.18
  • whonix-workstation-17_dispvm(avg:8.013): 128.21
  • whonix-workstation-17_dispvm-gui(avg:9.209): 147.34
  • whonix-workstation-17_dispvm-concurrent(avg:4.063): 65.00
  • whonix-workstation-17_dispvm-dom0(avg:8.500): 136.00
  • whonix-workstation-17_dispvm-dom0-gui(avg:9.758): 156.12
  • whonix-workstation-17_dispvm-dom0-concurrent(avg:4.537): 72.59
  • whonix-workstation-17_dispvm-dom0-gui-concurrent(avg:5.497): 87.94
  • whonix-workstation-17_dispvm-preload(avg:7.518): 120.30
  • whonix-workstation-17_dispvm-preload-gui(avg:8.814): 141.02
  • whonix-workstation-17_dispvm-preload-concurrent(avg:4.179): 66.86
  • whonix-workstation-17_dispvm-preload-gui-concurrent(avg:5.023): 80.37
  • whonix-workstation-17_dispvm-preload-dom0(avg:5.230): 83.68
  • whonix-workstation-17_dispvm-preload-dom0-gui(avg:6.578): 105.25
  • whonix-workstation-17_dispvm-preload-dom0-concurrent(avg:4.470): 71.52
  • whonix-workstation-17_dispvm-preload-dom0-gui-concurrent(avg:5.596): 89.53
  • whonix-workstation-17_dispvm-api(avg:8.697): 139.16
  • whonix-workstation-17_dispvm-gui-api(avg:9.839): 157.43
  • whonix-workstation-17_dispvm-concurrent-api(avg:4.435): 70.95
  • whonix-workstation-17_dispvm-gui-concurrent-api(avg:5.121): 81.94
  • whonix-workstation-17_dispvm-preload-api(avg:5.173): 82.77
  • whonix-workstation-17_dispvm-preload-less-api(avg:8.282): 132.51
  • whonix-workstation-17_dispvm-preload-more-api(avg:5.682): 90.91
  • whonix-workstation-17_dispvm-preload-gui-api(avg:6.871): 109.94
  • whonix-workstation-17_dispvm-preload-concurrent-api(avg:4.766): 76.26
  • whonix-workstation-17_dispvm-preload-gui-concurrent-api(avg:5.657): 90.51
  • whonix-workstation-17_vm(avg:0.589): 9.43
  • whonix-workstation-17_vm-gui(avg:0.582): 9.32
  • whonix-workstation-17_vm-concurrent(avg:0.580): 9.28
  • whonix-workstation-17_vm-gui-concurrent(avg:0.629): 10.06
  • whonix-workstation-17_vm-api(avg:0.146): 2.34
  • whonix-workstation-17_vm-gui-api(avg:0.163): 2.61
  • whonix-workstation-17_vm-concurrent-api(avg:0.134): 2.15
  • whonix-workstation-17_vm-gui-concurrent-api(avg:0.160): 2.55

@ben-grande
Copy link
Contributor Author

ben-grande commented Aug 12, 2025

system_tests_dispvm

* TC_20_DispVM_debian-12-xfce: [test_019_preload_refresh](https://openqa.qubes-os.org/tests/148924#step/TC_20_DispVM_debian-12-xfce/10) (error + timed out)
  `qubes.exc.QubesVMShutdownTimeoutError: Domain shutdown timed out: '...`

Being fixed on 1201890

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Preloaded disposables should be refreshed on template updates

3 participants