util/disk_cache: Re-enable multi-file cache by default

Over past months a performance issue was found with the Mesa-DB cache
implementation that results in a too slow cache startup time when cache is
full. A better indexing strategy will need to be invented to mitigate the
issue. Until then, let's default back to the multi-file cache.

Suggested-by: Michel Dänzer <mdaenzer@redhat.com>
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34199>
This commit is contained in:
Dmitry Osipenko
2025-03-25 23:27:13 +03:00
committed by Marge Bot
parent 9822fa3ef3
commit 300b6f7371
3 changed files with 35 additions and 10 deletions

View File

@@ -201,10 +201,10 @@ Core Mesa environment variables
if set, determines the directory to be used for the on-disk cache of
compiled shader programs. If set then the cache will be stored in
``$MESA_SHADER_CACHE_DIR/mesa_shader_cache_db``. If this variable is not
``$MESA_SHADER_CACHE_DIR/mesa_shader_cache``. If this variable is not
set, then the cache will be stored in
``$XDG_CACHE_HOME/mesa_shader_cache_db`` (if that variable is set), or else
within ``.cache/mesa_shader_cache_db`` within the user's home directory.
``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set), or else
within ``.cache/mesa_shader_cache`` within the user's home directory.
.. envvar:: MESA_SHADER_CACHE_SHOW_STATS
@@ -228,9 +228,9 @@ Core Mesa environment variables
.. envvar:: MESA_DISK_CACHE_MULTI_FILE
if set to 1, enables the multi file on-disk shader cache implementation
instead of the default Mesa-DB cache implementation.
This implementation increases the overall disk usage.
if set to 1 (set by default), enables the multi file on-disk
shader cache implementation. This implementation increases the overall
disk usage.
If :envvar:`MESA_SHADER_CACHE_DIR` is set, the cache will be stored in
``$MESA_SHADER_CACHE_DIR/mesa_shader_cache``, or else within
``$XDG_CACHE_HOME/mesa_shader_cache`` (if that variable is set)
@@ -248,6 +248,18 @@ Core Mesa environment variables
and ``filename1_idx.foz``. A limit of 8 DBs can be loaded and this limit
is shared with :envvar:`MESA_DISK_CACHE_READ_ONLY_FOZ_DBS_DYNAMIC_LIST`.
.. envvar:: MESA_DISK_CACHE_DATABASE
if set to 1, enables the Mesa-DB single file on-disk shader cache
implementation instead of the default multi-file cache implementation.
Like :envvar:`MESA_DISK_CACHE_SINGLE_FILE`, Mesa-DB reduces overall
disk usage but Mesa-DB supports cache size limits via
:envvar:`MESA_SHADER_CACHE_MAX_SIZE`. If
:envvar:`MESA_SHADER_CACHE_DIR` is not set, the cache will be stored
in ``$XDG_CACHE_HOME/mesa_shader_cache_db`` (if that variable is set)
or else within ``.cache/mesa_shader_cache_db`` within the user's home
directory.
.. envvar:: MESA_DISK_CACHE_DATABASE_NUM_PARTS
specifies number of mesa-db cache parts, default is 50.