title: How gitlab runner concurrency works?
body: <h1>Q1: Whats the difference between</h1>
  <pre><code>concurrent = 3
  
  [[runners]]
    ..
    executor = &quot;shell&quot;
  </code></pre>
  <p>and</p>
  <pre><code>concurrent = 3
  
  [[runners]]
    ...
    executor = &quot;shell&quot;
  
  [[runners]]
    ...
    executor = &quot;shell&quot;
  
  [[runners]]
    ...
    executor = &quot;shell&quot;
  </code></pre>
  <h1>Q2: Does it makes sense, to...</h1>
  <p>have 3 executors (<code>workers</code>) of <strong>same type</strong> on a single runner with global <code>concurrent = 3</code>? Or can single executor with global <code>concurrent = 3</code> do multiple jobs in parallel safely?</p>
  <h1>Q3: How they're related...</h1>
  <p><code>runners.limit</code> with <code>runners.request_concurrency</code> and <code>concurrent</code></p>
  <p>Thanks</p>