title: What's the meaning of thread concurrency overhead time in the profiler output?
body: <p><strong>I'd be really appreciated if someone with good experience of Intel VTune Amplifier tell me about this thing.</strong></p>
  
  <p>Recently I received performance analysis report from other guys who used Intel VTune Amplifier against my program. It tells, there is <strong>high overhead time</strong> in the thread concurrency area.</p>
  
  <p>What's the meaning of the <strong>Overhead Time</strong>? They don't know (asked me), I don't have access to Intel VTune Amplifier.</p>
  
  <p>I have vague ideas. This program has many thread sleep calls because <code>pthread condition</code> is unstable (or I did badly) in the target platform so I change many routines to do works in the loop look like below:</p>
  
  <pre><code>while (true)
  {
     mutex.lock();
     if (event changed)
     {
        mutex.unlock();
        // do something
        break;
     }
     else
     {
        mutex.unlock();
        usleep(3 * 1000);
     }
  }
  </code></pre>
  
  <p>This can be flagged as <strong>Overhead Time</strong>?</p>
  
  <p>Any advice?</p>
  
  <hr>
  
  <p>I found help documentation about <strong>Overhead Time</strong> from Intel site.
  <a href="http://software.intel.com/sites/products/documentation/hpc/amplifierxe/en-us/win/ug_docs/olh/common/overhead_time.html#overhead_time" rel="nofollow">http://software.intel.com/sites/products/documentation/hpc/amplifierxe/en-us/win/ug_docs/olh/common/overhead_time.html#overhead_time</a></p>
  
  <p>Excerpt:</p>
  
  <blockquote>Overhead time is a duration that starts with the release of a shared resource and ends with the receipt of that resource. Ideally, the duration of Overhead time is very short because it reduces the time a thread has to wait to acquire a resource. However, not all CPU time in a parallel application may be spent on doing real pay load work. In cases when parallel runtime (Intel® Threading Building Blocks, OpenMP*) is used inefficiently, a significant portion of time may be spent inside the parallel runtime wasting CPU time at high concurrency levels. For example, this may result from low granularity of work split in recursive parallel algorithms: when the workload size becomes too low, the overhead on splitting the work and performing the housekeeping work becomes significant.</blockquote>
  
  <p>Still confusing.. Could it mean "you made unnecessary/too frequent lock"?</p>