-
- Downloads
pv-runtime: Use threads to enumerate graphics drivers in parallel
SrtSystemInfo is not thread-aware, but can safely be handed off from
one thread to another, and caches its results internally; so we can use
a thread per architecture, plus an extra thread for cross-architecture
Vulkan and EGL ICDs, to enumerate graphics drivers and populate the
cache in parallel with any other container setup. We join the threads
just before looking at their results, to maximize the length of time
for which we're running in parallel.
On slow hardware (Lenovo T520 circa 2011, with 500G 7200rpm HDD) this
cuts something like 20% off the setup time with a cold cache
(`echo 3 | sudo tee /proc/sys/vm/drop_caches`). It also has a benefit
(more like 15%) with a warm cache, immediately after a previous
pressure-vessel run.
This does make it somewhat harder to profile pressure-vessel, because
when two I/O-bound operations run in parallel, they both take longer
than they otherwise would, even though the overall task finishes sooner;
this makes it hard to attribute I/O cost to particular actions. The
new --single-thread option can be used to get a better idea of where
the time is really going.
Signed-off-by:
Simon McVittie <smcv@collabora.com>
parent
98ac00a1
No related branches found
No related tags found
Showing
- pressure-vessel/graphics-provider.c 19 additions, 0 deletionspressure-vessel/graphics-provider.c
- pressure-vessel/graphics-provider.h 3 additions, 0 deletionspressure-vessel/graphics-provider.h
- pressure-vessel/runtime.c 282 additions, 9 deletionspressure-vessel/runtime.c
- pressure-vessel/runtime.h 5 additions, 2 deletionspressure-vessel/runtime.h
- pressure-vessel/wrap.1.md 3 additions, 0 deletionspressure-vessel/wrap.1.md
- pressure-vessel/wrap.c 11 additions, 0 deletionspressure-vessel/wrap.c
Loading
Please register or sign in to comment