Många program utnyttjar delad-minne parallellism med hjälp av multithreading. Gängade koder använder vanligtvis lås för att samordna åtkomsten till delade data. I många fall minskar tvist för låsen parallell effektivitet och skadar skalbarheten. Att kunna kvantifiera och attributera låsinnehåll är viktigt för att förstå var ett multitrådat program behöver förbättras. I detta dokument föreslås och utvärderas tre strategier för att få insikt i prestandaförluster på grund av lock strid. För det första överväger vi att använda en enkel strategi baserad på call stack profilering för att tillskriva sysslolös tid och visa att det misslyckas med att ge insikt i lås strid. För det andra överväger vi ett tillvägagångssätt som bygger på en strategi som tidigare använts för att analysera sysslolöshet i arbetsstjälande beräkningar; vi visar att denna strategi inte ger insikt i låsfrågan. Slutligen föreslår vi en ny teknik för mätning och analys av lås strid som använder data i samband med lås för att skylla lås innehavare för sysslolöshet av spinning trådar. Vår strategi medför < 5% overhead på en kvantkemi ansökan som gör omfattande användning av låsning (65M distinkta lås, maximalt 340K levande lås, och i genomsnitt 30K lås förvärv per sekund per tråd) och attribut lås strider mot dess fullständiga statiska och dynamiska samtal sammanhang. Vår strategi, som implementeras i HPCTOOLKIT, är helt distribuerad och bör skalas väl till system med stora kärnvärden.
Tallen m.fl. REF-attribut låsbestämmande för låshållarna.
Analyzing lock contention in multithreaded applications
{'venue': "PPoPP '10", 'journal': None, 'mag_field_of_study': ['Computer Science']}