diff --git a/tests/config/test_dns_generators.lua b/tests/config/test_dns_generators.lua
index 176137e0fa3f8e090aec3add02855ea496ccd884..4a7cc0a584bad07b833837cc17d8d260335034c8 100644
--- a/tests/config/test_dns_generators.lua
+++ b/tests/config/test_dns_generators.lua
@@ -99,6 +99,7 @@ local function add_random_rrset()
 	assert(kr_cach:insert(kr_rrset, nil, ffi.C.KR_RANK_SECURE))
 end
 
+ffi.cdef('int usleep(uint32_t usec);') -- at least in current glibc it's always 32-bit
 
 local rr_count = 0
 local function gen_batch()
@@ -110,6 +111,7 @@ local function gen_batch()
 		end
 	end
 	kr_cach:commit()
+	ffi.C.usleep(15) -- stop *whole process* to give better chance to GC executing
 	local delay
 	if math.random(1,4) == 1 then
 		delay = 1  -- give a chance to DNS resolving
diff --git a/utils/cache_gc/test.integr/deckard.yaml b/utils/cache_gc/test.integr/deckard.yaml
index 65947a795e705c9a258ada30053e6f4d284286ac..b1a8b15894ec83079adf1f8418c75dba0fcaa8ea 100644
--- a/utils/cache_gc/test.integr/deckard.yaml
+++ b/utils/cache_gc/test.integr/deckard.yaml
@@ -25,8 +25,11 @@ programs:
 - name: gc
   binary: kres-cache-gc
   additional:
-    - -d
-    - "1"
+    # small cache needs shorter RW transactions and larger "percentages"
+    - -l8
+    - -u50
+    - -f20
+    - -d1
     - -c
     - ../kresd1/
   conncheck: False