Make min_starting_builds a heuristic

This number seems to be working well for now , but scale it based on
processor count so it's less magic.

Change-Id: Ifbd99afa1b8f3d7eacaa94c55df18bb529c3ae60
diff --git a/zuul/executor/server.py b/zuul/executor/server.py
index a831a53..3e16304 100644
--- a/zuul/executor/server.py
+++ b/zuul/executor/server.py
@@ -1660,7 +1660,7 @@
                                             'load_multiplier', '2.5'))
         self.max_load_avg = multiprocessing.cpu_count() * load_multiplier
         self.max_starting_builds = self.max_load_avg * 2
-        self.min_starting_builds = 4
+        self.min_starting_builds = max(int(multiprocessing.cpu_count() / 2), 1)
         self.min_avail_mem = float(get_default(self.config, 'executor',
                                                'min_avail_mem', '5.0'))
         self.accepting_work = False