OSDN Git Service

disk_cache: make the thread queue resizable and low priority
authorMarek Olšák <marek.olsak@amd.com>
Wed, 6 Sep 2017 21:09:41 +0000 (23:09 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 7 Sep 2017 10:57:14 +0000 (12:57 +0200)
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/util/disk_cache.c

index b789a45..33e4dc8 100644 (file)
@@ -358,13 +358,15 @@ disk_cache_create(const char *gpu_name, const char *timestamp,
 
    cache->max_size = max_size;
 
-   /* A limit of 32 jobs was choosen as observations of Deus Ex start-up times
-    * showed that we reached at most 11 jobs on an Intel i5-6400 CPU@2.70GHz
-    * (a fairly modest desktop CPU). 1 thread was chosen because we don't
-    * really care about getting things to disk quickly just that it's not
-    * blocking other tasks.
+   /* 1 thread was chosen because we don't really care about getting things
+    * to disk quickly just that it's not blocking other tasks.
+    *
+    * The queue will resize automatically when it's full, so adding new jobs
+    * doesn't stall.
     */
-   util_queue_init(&cache->cache_queue, "disk_cache", 32, 1, 0);
+   util_queue_init(&cache->cache_queue, "disk_cache", 32, 1,
+                   UTIL_QUEUE_INIT_RESIZE_IF_FULL |
+                   UTIL_QUEUE_INIT_USE_MINIMUM_PRIORITY);
 
    uint8_t cache_version = CACHE_VERSION;
    size_t cv_size = sizeof(cache_version);