8 Stimmen

Welche Bedeutung hat die Thread-Gleichzeitigkeits-Overhead-Zeit in der Profiler-Ausgabe?

Ich wäre sehr dankbar, wenn mir jemand, der gute Erfahrungen mit Intel VTune Amplifier hat, etwas darüber erzählen könnte.

Kürzlich habe ich einen Bericht über die Leistungsanalyse von anderen Anwendern erhalten, die Intel VTune Amplifier gegen mein Programm eingesetzt haben. Er sagt, es gibt hohe Overhead-Zeit im Bereich der Thread-Gleichzeitigkeit.

Was ist die Bedeutung der Gemeinkosten Zeit ? Sie wissen es nicht (haben mich gefragt), ich habe keinen Zugang zu Intel VTune Amplifier.

Ich habe vage Vorstellungen. Dieses Programm hat viele Thread-Schlafaufrufe, weil pthread condition ist instabil (oder ich habe schlecht gemacht) in der Zielplattform, so dass ich viele Routinen ändern, um Arbeiten in der Schleife zu tun, wie unten:

while (true)
{
   mutex.lock();
   if (event changed)
   {
      mutex.unlock();
      // do something
      break;
   }
   else
   {
      mutex.unlock();
      usleep(3 * 1000);
   }
}

Dies kann gekennzeichnet werden als Gemeinkosten Zeit ?

Haben Sie einen Rat?


Ich habe eine Hilfedokumentation über Gemeinkosten Zeit von der Intel-Website. http://software.intel.com/sites/products/documentation/hpc/amplifierxe/en-us/win/ug_docs/olh/common/overhead_time.html#overhead_time

Auszug:

Die Gemeinkostenzeit ist eine Dauer, die mit der Freigabe einer gemeinsam genutzten Ressource beginnt und mit dem Empfang dieser Ressource endet. Im Idealfall ist die Dauer der Overhead-Zeit sehr kurz, da sie die Zeit reduziert, die ein Thread warten muss, um eine Ressource zu erhalten. Es kann jedoch vorkommen, dass nicht die gesamte CPU-Zeit in einer parallelen Anwendung für die Ausführung echter Nutzlastarbeit verwendet wird. In Fällen, in denen die parallele Laufzeit (Intel® Threading Building Blocks, OpenMP*) ineffizient verwendet wird, kann ein erheblicher Teil der Zeit innerhalb der parallelen Laufzeit damit verbracht werden, bei hoher Gleichzeitigkeit CPU-Zeit zu verschwenden. Dies kann z. B. aus einer geringen Granularität der Arbeitsteilung in rekursiven parallelen Algorithmen resultieren: Wenn die Größe der Arbeitslast zu gering wird, wird der Overhead bei der Aufteilung der Arbeit und der Durchführung der Housekeeping-Arbeiten erheblich.

Immer noch verwirrend. Könnte es bedeuten "Sie haben unnötig/zu häufig gesperrt"?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X