diff --git a/src/base/launch.c b/src/base/launch.c
index d59d0da0220763d349f4953393074441e657b061..08bb92067aca27dee466ffa68dfba1bf4a093f83 100644
--- a/src/base/launch.c
+++ b/src/base/launch.c
@@ -173,6 +173,17 @@ end:
 
 static pthread_t ___thread_wlaker;
 
+/* Sleep a bit, to not overuse ressources */
+PRIVATE_FUNCTION void
+___sleep(void)
+{
+    struct timespec time_sleep = {
+        .tv_sec  = 0,
+        .tv_nsec = 100000000L,
+    };                            /* Sleep for 0.1s */
+    nanosleep(&time_sleep, NULL); /* Sleep a bit, better for Hard drive */
+}
+
 PRIVATE_FUNCTION void *
 ___caching_walker(void *args)
 {
@@ -190,6 +201,8 @@ ___caching_walker(void *args)
 
     for (size_t index = 0; index < ids_count; ++index) {
         database_cache_kara(db, ids[index]);
+        if ((index % 10) == 0)
+            ___sleep();
     }
 
     LOG_INFO("CACHE", "Finished caching %ld karas", ids_count);