]> source.dussan.org Git - tigervnc.git/commitdiff
Limit the number of decoder threads to 4
authorPierre Ossman <ossman@cendio.se>
Fri, 20 Nov 2015 15:14:48 +0000 (16:14 +0100)
committerPierre Ossman <ossman@cendio.se>
Fri, 27 Nov 2015 10:15:55 +0000 (11:15 +0100)
They just end up burning CPU fighting each other without much
improvement to the decoding time beyond four threads.

common/rfb/DecodeManager.cxx

index d6c3b0b58fb331cd677231512cabfbccc08f3ca1..d7cffcfd6cf3edc20fd41c3ab3a66e2b54ef9853 100644 (file)
@@ -51,7 +51,12 @@ DecodeManager::DecodeManager(CConnection *conn) :
     vlog.error("Unable to determine the number of CPU cores on this system");
     cpuCount = 1;
   } else {
-    vlog.info("Detected %d CPU core(s) available for decoding", (int)cpuCount);
+    vlog.info("Detected %d CPU core(s)", (int)cpuCount);
+    // No point creating more threads than this, they'll just end up
+    // wasting CPU fighting for locks
+    if (cpuCount > 4)
+      cpuCount = 4;
+    vlog.info("Creating %d decoder thread(s)", (int)cpuCount);
   }
 
   while (cpuCount--) {