Dataraser är en av de svåraste typerna av fel i samtidiga multitrådade system. Det kräver betydande tid och kostnad för att korrekt upptäcka fel i komplexa storskaliga program. Även om många race detektion tekniker har föreslagits av olika forskare, ingen av dem är effektiva i alla aspekter. I detta dokument jämför vi prestandan för fem senaste dynamiska race detektion tekniker: FastTrack, Acculock, Multilock-HB, SimpleLock+, och orsakssamband föregår (CP) detektion. Vi demonstrerar experimentellt styrkor och svagheter i dessa dynamiska race detektion tekniker i termer av deras detektionsförmåga, körtid, och runtime overhead med hjälp av 20 referensprogram med olika egenskaper. Jämförelseresultaten visar att detektionskapaciteten för CP-detektion inte skiljer sig från den hos FastTrack, och att SimpleLock+ genererar de lägsta overhead bland hybriddetektionstekniker (Acculock, SimpleLock+ och Multilock-HB) för alla referensprogram. SimpleLock+ är 1,2 gånger långsammare än FastTrack i genomsnitt, men missar en sann data ras rapporteras från Mutilock-HB på den storskaliga riktmärkesprogram. Data ras, dynamisk upptäckt, multitrådad programmering, Debugging, händer innan, Lockset, Causally föregår. Manuskript mottaget 1 december 2015; reviderat 4 oktober 2016; accepterat 15 november 2016 Detta är en Open Access-artikel som distribueras under termen Korea Open Government License (KOGL) Typ 4: Source In Diction + Commercial Use Prohibition + Change Prohibition (http://www.kogl.or.kr/news/dataFileDown.do?dataIdx=71&dataFileIdx=2). Multi-threading är en viktig programmeringsteknik som vanligen används inom områden som sträcker sig från operativsystem till mobila-multimedia applikationer i syfte att förbättra prestanda eller lyhördhet för ett visst program. Att skriva ett korrekt utför multitrådat program är dock mycket svårare än att skriva ett korrekt utför sekventiellt program på grund av icke-determinismen i samtidiga trådutföranden. Nondeterministiska trådars interleaving kan producera icke-deterministiska utgångar för samma inmatning när trådarna inte är ordentligt synkroniserade. När detta icke-deterministiska trådbeteende orsakar ett systemfel eller felaktiga resultat, kallas det ett konvergensfel. På grund av svårigheten att upptäcka, konvergens buggar kan oavsiktligt lämnas i ett program efter utgivning, som kan ha katastrofala resultat [1], [2]. En data race är en typ av konvergens bugg som inträffar när två olika trådar får tillgång till samma minnesplats utan en beställningsrestriktion som upprätthålls mellan åtkomsterna, där minst en åtkomst är en skrivåtkomst [3]. Eftersom en data ras lätt kan förekomma och är mycket vanligt, ett stort antal studier [4]-[18] på dynamisk detektion tekniker har genomförts för att exakt upptäcka så många data raser som möjligt genom att analysera utförandet spår av ett program. Bland de tidigare teknikerna, flera [4], [5], [17] föreslog grundläggande algoritmer för att utveckla exakt eller hög täckning dynamisk ras detektion teknik. Baserat på dessa grundläggande algoritmer föreslog några [6]-[16] olika tekniker för att öka prestandan hos de tidigare teknikerna. Alla dessa dynamiska detektionsmetoder verifierade sin överlägsenhet genom att visa körtiden, drifttidens omkostnader, detektionskapaciteten och noggrannheten (förhållandet mellan falska positiva), vilka är de viktiga faktorerna för den praktiska användningen av en rasdetektor. En låg runtime avmattning leder ofta utvecklare att använda ras detektorer under utvecklingsfasen av ett parallellt program, vilket kan öka tillförlitligheten av programmet genom att snabbt ta bort problematiska konvergens buggar. Med detektionshastigheten bör detektionskapaciteten och noggrannheten anses utveckla och välja ett rasdetekteringsverktyg eftersom en hög detektionsförmåga innebär ett litet antal upprepade utföranden av ett program för detektion, och en hög noggrannhet innebär en låg arbetsinsats för att filtrera falska varningar. I detta dokument analyserade vi prestandan hos toppmoderna och aktuella dynamiska tekniker när det gäller detektionshastighet, kapacitet och noggrannhet på samma plattform för en rättvis jämförelse. Vi samlade in prestandadata om dessa tekniker genom omfattande experiment med hjälp av samma referensprogram och konfigurationer. Vårt arbete ger följande specifika bidrag: • Vi väljer fem rena dynamiska tekniker för att upptäcka dataraser: FastTrack, Acculock, Multilock-HB, SimpleLock+, och Causally föregår (CP) detektion. Vi utvärderar deras prestanda på samma plattform med samma ingång. • Vi jämför löptid, runtime overhead, detektionsförmåga och noggrannhet för alla fem detektionstekniker med hjälp av 12 små program som innehåller olika dataraser, och de mest använda åtta storskaliga program kategoriserade i tre grupper med olika antal åtkomst- och synkroniseringshändelser. • Våra experiment visar att Multilock-HB och CP-detektion kan exakt och exakt upptäcka faktiskt inträffade och potentiella data raser. Båda metoderna kräver dock en betydande handläggningstid. Dessutom visade vi att SimpleLock+ har nästan samma detekteringsförmåga och noggrannhet som Multilock-HB och genererar en detekteringshastighet liknande den för FastTrack. Resten av detta dokument är organiserat enligt följande. I avsnitt II diskuteras tidigare studier på detta område. I avsnitt IV går vi kort igenom de dynamiska metoder för att upptäcka dataraser som jämförs i detta dokument. I avsnitt III presenteras en analys av dessa tekniker utifrån de experimentella resultaten. I Avsnitt V ger vi några avslutande kommentarer om denna forskning. Det har gjorts ett antal studier på att öka detektionshastigheten och kapaciteten hos dynamiska data ras detektion tekniker med hög noggrannhet, särskilt för Java program. Här diskuterar vi relevant forskning längs två huvudlinjer: dynamisk analys och statisk analys. För dynamiska analystekniker beskriver vi dessutom deras metoder för utvärdering av prestanda. [22]................................................................. Pacer implementerades på Jikes RVM och jämförde detekteringskapaciteten och körtidens overhead med LiteRace med hjälp av DaCapo-riktmärkessviten och SPEC JBB2000. En brist i HB detektionstekniken är att den inte kan upptäcka dolda data races som är detekterbara i andra tråd interleaving sekvenser. För att rapportera dolda raser såväl som faktiskt inträffade data races, hybrid detektion infördes. Denna [13] är den första hybriddetektionsmetoden som kombinerar HB-relation och Lockset-baserade detektionsalgoritmer. Acculock och Multilock-HB [15] är epokbaserade hybriddetektorer baserade på Hybrid. Acculock ger en snabb detektionshastighet jämförbar med den för FastTrack, men kan införa ytterligare falska positiva. Multilock-HB upptäcker exakt faktiskt inträffade och potentiella data races; dock, det ådrar sig en stor mängd beräknings körtid overhead. Den senaste studien om hybrid detektion [16] ger den snabbaste hybrid detektionsteknik som kan missa en data ras när båda åtkomster av data rasen skyddas av olika lås. I denna studie jämfördes detektionskapaciteten och avmattningen av körtiden mellan FastTrack, Multilock-HB och SimpleLock+ på samma RoadRunner-ramverk med Dacapo och Grand-riktmärkessviterna. Nyligen föreslogs CP-detektion baserad på ett CP-förhållande [17] för att minska känsligheten för trådsammanlänkning samtidigt som precisionen för HB-detektion bibehålls. Författarna till [17] visade att CP kan upptäcka fler data races än HB detektion, och jämförde detektionshastigheten till HB detektion med hjälp av små (86-49k LOC) referensprogram. [23] med hjälp av den småskaliga IBM Contest-riktmärkessviten och de parallella Java Grand-riktmärkesprogrammen (med en reducerad datamängd). Alla algoritmer implementerades i RVPredikt. I detta dokument jämför vi detektionshastigheten, kapaciteten och noggrannheten hos de aktuella rena dynamiska data ras detektionstekniker (FastTrack, Acculock, Multilock-HB, SimpleLock+, och CP) med hjälp av de mest använda storskaliga riktmärkessviterna utan modifiering och små benchmarkingprogram på samma plattform. Detektorer baserade på dataflödesanalys kan rapportera potentiella dataraser men producera många falska alarm och är svåra att skala till stora program. Den objekt använder grafbaserad teknik [31] rapporterar objekt raser med hjälp av en approximation av HB relationen av tillgång till ett objekt genom olika trådar. Chord [32] förbättrade precisionen i låsuppsättningsberäkningen med hjälp av kobject sammanhangskänslighet. Uppföljande forskning [33] förfinade denna studie med hjälp av ett villkorat får inte aliasera egendom för att minska falska positiva. Nya statiska detektorer specialiserade på specifika typer av programstrukturer eller dataraser för att förbättra precision och skalbarhet. IteRace [34] är en uppsättning av tre tekniker som är specialiserade på parallella slingor för samlingar som introduceras i Java 8. CTADETector [35] använder statisk analys för att upptäcka en missbrukad CHECK-THEN-ACT idiom som är en sammansättning av två operationer där en kontroll av den samtidiga samlingen föregår en åtgärd. Dynamiska data rasdetekteringsalgoritmer kan kategoriseras i Lockset, HB och hybrid detektionsalgoritmer. Bland dem, Lockset algoritmer används inte ensam på grund av deras höga falskt positiva hastighet. Därför utesluter vi Lockset-algoritmer från vår jämförelse. FastTrack CP detektion är den senaste dynamiska detektionsmetod som används för att slappna av schemaläggning känslighet och ta bort möjligheten av falska positiva som kan genereras av hybrid detektion tekniker. För en exakt jämförelse av detektion overhead och detektion förmåga, vi inkluderar CP detektion i vår jämförelse, även om det ännu inte är vanligt att användas för programtestning. FastTrack minskar komplexiteten i de flesta VC-jämförelser (-) från O (n) till O (l) genom att införa en epok-VC-jämförelse (-). Häri ingår endast en klocka och en trådID (tid). epoken används för att spela in den sista skrivandet och läsandet av de helt beställda skriver och läser. Algoritm 1 visar FastTrack-algoritmen. FastTrack underhåller vektor klockor C t och L m för varje tråd t och lås m. Klockan post C t (u) registrerar klockan för den sista händelsen av tråd u som händer innan den aktuella händelsen av tråd t. I Algorithm 1, E (t) returnerar den nuvarande epoken av tråd t. Klockan-update algoritmen för FastTrack för lås förvärva och släppa, samt för explicita synkroniseringar (gaffel och gå), är samma som i tidigare VC-baserade race detektorer inklusive Djit+. Lock förvärvar: t förvärvar ett lås m 1: Fork och Join: t skapar u; t block tills u slutar 3: FastTrack rapporterar ett skrivläsande lopp om den senaste skrivåtkomsten till delade minnesplats x inte inträffar innan den aktuella läsåtkomsten till x (linje 6 i Algorithm 1). Dessutom rapporterar det en read-write race om den sista läsningen av helt beställda läsåtkomst till x inte inträffar innan den nuvarande skrivåtkomst till x (linje 14 i Algorithm 1). I ett annat fall, FastTrack rapporterar en read-write race om VCs för den senaste läsåtkomsten och nuvarande skriva är inte delvis beställda (linje 16 i Algorithm 1). Hybriddetektion som kombinerar HB och Lockset-detektion och har sitt ursprung i Hybrid [10] syftar till att öka detektionsförmågan genom att försvaga känsligheten för en interleaving sekvens av HB-detektion. Hybriddetektorer kan rapportera potentiella dataraser i ett enda utförande spår. För att upptäcka ytterligare potentiella dataraser övervakar hybriddetektorer de uppsättningar lås (lås) som skyddar de delade minnesåtkomsterna. Dessutom utför de inte vektorur för lås förvärv och släpp händelser eftersom HB förhållandet mellan två åtkomster av olika trådar på grund av lås förvärv-release kan ändras i andra trådar interleaving sekvenser. Det vill säga, en avslappnad HB relation används, som hålls när två olika åtkomster av olika trådar beställs genom explicita synkroniseringar såsom en gaffel och gå, med undantag för lås operationer. För hybriddetektering tillämpas Lockset för två åtkomster som inte beställs genom explicita synkroniseringar. Den underliggande idén med Lockset är att, för att förhindra dataraser, alla åtkomster av flera trådar till en delad minnesplats måste skyddas genom samma lås. Algoritm 2 visar den grundläggande algoritmen för Lockset.  Hybrid detektion kräver en hög runtime overhead för att korrekt upptäcka data races eftersom det upprätthåller åtkomsthistorik och tillhörande information (uppsättningen av lås och klockor) för varje åtkomst. Acculock introducerade först en epok representation, som presenterades av FastTrack, till hybrid detektion. Dessutom håller Acculock bara ett låsset som skyddar den senaste läsåtkomsten till delade minnesplats x för varje tråd. Dessutom upprätthåller den skärningspunkten mellan de två låsen som skyddar den sista och den föregående skrivåtkomsten till x när dessa två åtkomster inte beställs genom explicita synkroniseringar. Det vill säga, Acculock håller bara en låsuppsättning och epok för skrivåtkomst till x oavsett antalet trådar. Därför har Acculock ett lågt minneskrav och en snabb detektionshastighet jämförbar med den för FastTrack. Acculock genererar dock ytterligare falska positiva effekter när inbäddade lås används eftersom det måste behålla delmängd av åtkomstinformationen. Acculock ger O (nlogl) komplexitet för antalet element l i en låsuppsättning. Multilock-HB introducerades för att ta bort de falska positiva effekterna av Acculock. För att ta bort falska positiva, Multilock-HB upprätthåller alla läsa och skriva åtkomsthistoriker för varje tråd. Varje objekt i en läs- och skrivhistorik inkluderar ett låsset och en klocka för varje läs- och skrivåtkomst. För att undvika dubbla rasvarningar till samma delade minnesplats och för att minska drifttidens overhead ger Multilock-HB en optimeringsteknik men kräver en stor mängd minne och tid för storskaliga real-world-program. Multilock-HB:s komplexitet är O(nmlogl) för antalet trådar n, åtkomsthändelsernas längd m och antalet element l i ett låsset. SimpleLock+ föreslogs för att förbättra prestandan hos den tidigare exakta hybriddetektorn. SimpleLock+ förbättrar prestandan baserat på två antaganden: (1) de flesta dataraser orsakas av åtkomster utan låsskydd till en delad minnesplats, och (2) avståndet mellan två åtkomster som orsakar en datakapplöpning är inte långt. Baserat på det första antagandet rapporterar SimpleLock+ endast en data race när minst en tillgång till en race inte skyddas genom några lås (noll-locked access). Denna teknik ersätter den tidigare hybriddetekteringens set intersektionsoperationer i booleska operationer som verifierar förekomsten av lås som skyddar åtkomsterna. Baserat på det andra antagandet behåller SimpleLock+ information om läsarna och skriver efter den sista explicita synkroniseringen av alla trådar för varje delad minnesplats. Denna information omfattar två klockor för en läsa och skriva, och två flaggor som anger om en läsa eller skriva inte skyddas av något lås under klockorna inträffar. På grund av ovanstående två förbättringstekniker ger SimpleLock+ O(n) komplexitet för antalet trådar n, och genererar en snabb detektionshastighet jämförbar med den för FastTrack. SimpleLock+ kan dock missa data races om två åtkomster av olika trådar som inte beställs av CP detektion rapporterar en data race genom att kontrollera CP förhållandet mellan två åtkomster till en delad minnesplats. En CP relation är en ny relation föreslås under 2012 som generaliserar en HB relation för att upptäcka fler data races utan att införa falska positiva eller falska negativa. CP-detektorer kan upptäcka potentiella data races samt faktiskt inträffade data races i ett utförande spår. Även om upptäckta data races är en delmängd av resultaten från hybrid detektorer, CP detektorer inte rapportera falska varningar som hybrid detektorer kan generera på grund av algoritmiska begränsningar hybrid detektion. Ett CP-samband är en delmängd av ett HB-samband och kan delvis detektera potentiella dataraser som kan missas av HB-detektorer. Figur 1 visar ett exempel på dessa dataraser. På bild. 1, HB detektorer kan inte upptäcka en data ras på x eftersom en lås lossning av t1 sker innan lås förvärv av t2, maskering bristen på synkronisering mellan skriva av t1 och läsa av t1 på x. CP detektion kan dock förutsäga denna data ras baserat på definitionen av CP (< < CP ) relationen enligt följande: • < < CP har en release- acquire kant mellan kritiska sektioner över samma lås som innehåller motstridiga händelser. Häri är två händelser av olika trådar konflikt om de får tillgång till samma delade minnesplats och en av dem är en skrift. • < < CP har en releaseacquire kant mellan kritiska sektioner över samma lås som innehåller CP- beställda händelser. • CP är stängd under vänster och höger komposition med HB. Vi jämförde prestandan av fem data race detektion tekniker: FastTrack (FT), Acculock (AC), Multilock-HB (ML), SimpleLock+ (SL+) och CP detektion (CP). Utvärderingen genomfördes på samma plattform med 21 Java-riktmärkesprogram. Tid, detektionsförmåga och noggrannhet beaktades. De race detektion tekniker som utvärderas kategoriseras i två typer: online (runtime) och offline detektion. FT, AC, ML och SL+ är VC-baserade online detektionstekniker. Vi implementerade fyra online-detektionstekniker inom ramen för RoadRunner som oberoende verktyg. RoadRunner är ett dynamiskt analysramverk för Javaprogram, som tillhandahåller händelsehanterare för minnes- och synkroniseringsoperationer som utförs under programmets genomförande. Dessa händelsehanterare kan överskridas för att implementera användardefinierade data race detektorer. RoadRunner förlitar sig på just-in-time kompilatorn för att optimera instrumenteringskoden och verktygssändningar. För offline-detektionstekniken (CP) lånade vi implementationen från [18] för det mest effektiva genomförandet. CP genomfördes i RVPredict, som finns på http://fsl.cs.illinois.edu/rvpredict/. RVPredikt lagrar först exekveringsspåren (inklusive delad dataåtkomst och synkroniseringshändelser) i en databas, och genomför sedan en prediktiv analys baserad på dessa spår. Metod Utvärderingen gjordes på en maskin med en 3-40 GHz Intel Core i7-3770K (quad core) CPU och 32 GB RAM som kör 64-bit Ubuntu 12.4 OS. SSD-fritt utrymme var 10 GB, som användes för att registrera körspår av CP. Vi installerade H2-databasmotor 1.4 för att hantera körspåren på vår SSD. Vi utförde experiment på 21 olika referensprogram, som var indelade i två grupper. Den första gruppen omfattar små exempelprogram som användes i det tidigare arbetet [18]: kritiska, flygbolag, konto, pingpong, buffer, bubbelsort, bufwriter, sammanslagningsort, raytracer-s, montecarlo-s och mölyn-s. I denna första grupp, raytracer-s, montecarlo-s, och mölyn-s är ändringar av raytracer, montecarlo, och mölyyn från den parallella Java Grand benchmark svit, respektive, och krympa den interna datastorleken för att minska programmets genomförandetid. Den andra gruppen omfattar storskaliga real-world-tillämpningar som valdes ut från den parallella Java Grand-riktmärkessviten och Dacapo-riktmärkessviten (9.12 bach), som i allmänhet användes för att jämföra prestanda hos rasdetektionsalgoritmer i tidigare forskning [9] utvalda program som utförs på RoadRunner-ramverket från Dacapo-riktmärkessviten. Tabell 1 innehåller kortfattade beskrivningar av dessa storskaliga referensprogram. Vi konfigurerade mölyn, raytracer och montecarlo för att skapa fyra arbetstrådar, använde BenchSizeA som ett dataset, och använde standardinställningarna för alla andra referensprogram. Detaljerade egenskaper såsom rader av kod, antalet trådar, och antalet minnesåtkomster listas i tabellerna 2 och 3. Körtid detektionstekniker spåra alla åtkomster till elementen i delade matriser endast för små program. Av effektivitetsskäl spårade vi inte varje array element för storskaliga program. Vi mätte körtiden och avmattningen av målteknikerna. Driftstiden för en detektionsteknik är den totala detektionstiden, som inkluderar detektionsalgoritmens instrumenteringstid och exekveringstid. En avmattning av en detektionsteknik är förhållandet mellan den instrumenterade körtiden och den ursprungliga körtiden för referensprogrammet. För FT, AC, ML och SL+ mätte vi körtidens instrumentering och detektionstid på ramen RoadRunner. För CP summerade vi instrumentering, loggning och offline-detekteringstider. Vi utförde och mätte varje detektionsteknik 10 gånger med samma ingång, och i genomsnitt resultaten. Likt mätningen av avmattningen av varje detektionsteknik utförde vi 10 utföranden för varje teknik med samma ingång. Vi räknade bara antalet varningar för olika delade variabler under de 10 avrättningarna. Med det totala antalet rapporterade data races, vi också specificerat antalet sanna data races endast när hybrid detektorer rapporterade fler raser än FT. För de 12 små referensprogram, vi verifierade de sanna data races genom att analysera källkoden och körning spår manuellt eftersom dessa program är enkla nog för manuell analys. För de åtta storskaliga programmen, vi slumpmässigt och heuritiskt infogade ljud genom att kalla en Java sleep () metod innan åtkomst till delade variabler genom trådar eftersom vi inte kunde hitta en systematisk metod eller ett automatiskt verktyg för att exakt verifiera en data race i dessa storskaliga program. Införandet av sömn () metoden kan tillåta variation i tråden interleaving sekvenser av ett program. Sedan analyserade vi avrättningarna med hjälp av FT för att exakt kontrollera om de delade variablerna orsakar dataraser. Vi övervägde endast delade variabler som rapporterades av hybriddetektorerna. När vi inte kunde exponera en data ras till en delad variabel, beslutade vi att varningen för den delade variabeln inte var en sann positiv. I tabell 2 anges löptiderna och antalet (totala varningar och sanna positiva) dataraser för de fem dynamiska detektionstekniker som studerats (FT, AC, SL+, ML och CP) på små referensprogram. Vi mätte den totala körtiden istället för körtidens overhead eftersom CP är en offline detektionsteknik baserad på analysen av den exekvering-trace information som registrerats i en databas. I tabell 3 förtecknas dessutom overheads och antalet (totala varningar och verkliga positiva) dataraser för online-detektionsteknik (FT, AC, SL+ och ML) på storskaliga referensprogram. Vi kunde inte köra CP på de storskaliga referensprogram på grund av en brist på diskutrymme som krävs för att registrera den exekveringsspårning information som genereras av CP. En allmän dator som används av en utvecklare har svårt att hantera den överdrivna mängden av exekvering spår, som överstiger dussintals gigabyte använder CP på grund av dess betydande bearbetning och minne krav. Resultat och analys CP visade sig vara ungefär 8,2 gånger långsammare än FastTrack, men detektionskapaciteten var densamma för alla små referensprogram array, kritiska, flygbolag, konto, pingpong, buffer, bubbelsort, bufwriter, sammanslagningsort, raytracers, montecarlo-s, och mölyn-s. Baserat på detta faktum, kan vi dra slutsatsen att de typer av potentiella data races som CP kan upptäcka, som visas i Fig. 1, är inte allmänna. Alla hybriddetektorer (SL+, AC och ML) rapporterade fler datatävlingar än FastTrack, och SL+ genererade den lägsta mängden overhead för alla referensprogram. Omkostnaderna för SL+ var 1,2 gånger högre än för FastTrack på våra storskaliga referensprogram, men SL+ missade en sann data ras som ML rapporterade på Raytracer. ML ger den högsta detektionskapacitet utan möjlighet till falska positiva som kan införas av AC, och upptäckte 29 fler sanna data races än FT på våra referensprogram. Dock är runtime overhead för ML 13,7 gånger den för FT på storskaliga referensprogram, och når 159,5 gånger på jithon. I figur 3 visas körtiden för de fem dynamiska detektionstekniker som förtecknas i tabell 2. Som visas i bild. 2, CP är ungefär 9.3 gånger långsammare än FastTrack för 12 små referensprogram array, kritisk, flygbolag, konto, pingpong, bbuffer, bubbelsort, bufwriter, sammanslagningsort, raytracers, montecarlo-s, och mölyn-s. I synnerhet CP kräver en lång detekteringstid för långa program som genererar många access händelser (montecarlo-s), som visas i Bild. 3............................................................... Med undantag för CP, online detektion tekniker visar en liknande körtid på 12 små referensprogram. ML visar en särskilt hög runtime overhead för bubbelsort och montecarlo-s, som har många trådar, och genererar många explicita synkronisering och volatila-variable För att analysera prestanda korrelationen mellan de typer av händelser (minnesåtkomst och synkronisering händelser) och online detektionstekniker, mätte vi runtime overhead av dessa tekniker på storskaliga referensprogram. På grund av de mycket höga topparna av ML på jithon begränsade vi historiens längd som ML måste upprätthålla för varje tråd till 3.000. Figur 4 illustrerar drifttidens omkostnader för de online-detekteringstekniker som förtecknas i tabell 3. För att enkelt kunna skilja på de programgrupper som utsätts för höga upptäckter, har vi klassificerat referensprogrammen i tre kategorier, som visas i Bild. 5................................................................ Kategorier 1 är den programgrupp av långdistansprogram som genererar många delade minnesåtkomster. Kategori 2 genererar många synkroniseringar (explicit synkronisering och instabil-variabel åtkomst) men genererar ett mindre antal delade minnesåtkomster än kategori 1. Kategori 3 omfattar program som genererar ett relativt litet antal delade minnesåtkomster och synkroniseringar. Som visas i bild. 4, ML genererar den högsta drifttid overhead för alla storskaliga referensprogram. I synnerhet genererar ML mycket höga omkostnader (532,6 gånger långsammare än det ursprungliga programmet i genomsnitt) för kategori 1 och kategori 2. Den övre gränsen för ML på jithon är mer än 1.228,4 gånger, vilket är 159.5 gånger den av FT. FT genererar den lägsta mängden av runtime overhead, och SL+ och AC är 1,2 gånger och 1,5 gånger långsammare än FT, respektive. Dessutom, FT, SL+ och AC genererar något mer overhead för kategori 1-program, som är långsiktiga program. Som ett resultat, FT visar den minsta mängden overhead, och SL+ visade sig vara den snabbaste bland de fyra andra dynamiska detektion tekniker som studerats. Detektionskapaciteten för CP-detektion är densamma som för FastTrack i alla små referensprogram. På de små referensprogram, alla hybrid detektion tekniker (AC, SL+ och ML) dessutom upptäckt två.. 9: } 10:.. 11:} potentiella data tävlingar i bufwriter, som missades av FT. Dessutom missade SL+ två potentiella data races i sammanslagningsort och raytracer-s, som upptäcktes av AC och ML. Vi verifierade att alla dessa potentiella data races är sanna data races som kan exponeras i andra tråd interleaving sekvenser. För de storskaliga referensprogrammen rapporterade hybriddetektorerna fler datatävlingar än FastTrack. Bland hybriddetektorerna rapporterade AC och ML samma dataraser, och SL+ missade en i raytracer, som är identisk med den som SL+ missade i raytracer-s. Även om AC upptäckte samma data race som ML på våra referensprogram, AC har möjlighet till ytterligare falska positiva, som inte rapporterades av SL+ och ML, som beskrivs i avsnitt II. Med undantag för raytracer rapporterade hybriddetektorer 30 fler datatävlingar än FT på storskaliga referensprogram. Bland dessa data races, vi verifierade att 26 data races i sunflow är verkliga data races, som kan exponeras genom att fördröja trådåtkomst till en delad variabel under programkörning med hjälp av Java sleep() metoden, som visas i Bild. 6............................................................. Figur 6 visar den del av solflödets källkod som vi använde för att verifiera de dataraser som rapporteras från hybriddataraser. Vi upptäckte 31 data races med hjälp av FT genom att infoga "sömna (40)" i fördröja tråden tillgång till en delad minnesplats som primitivaList pekar mot. Vi presenterade resultaten från prestandajämförelsen av fem senaste dynamiska data race detektion tekniker: FastTrack, Acculock, SimpleLock+, Multilock-HB, och CP detektion. Vi utförde experiment på samma plattform med 12 små och 8 storskaliga referensprogram. Jämförelseresultaten visar att CP detektion har den högsta mängden overhead bland de fem detektionstekniker, även om detektionskapaciteten för CP detektion inte överträffar den av FastTrack på våra riktmärken. SimpleLock+ genererade den lägsta mängden runtime overhead bland hybrid detektionstekniker (Acculock, SimpleLock+ och Multilock-HB) på alla riktmärken, vilket är 1,2 gånger den för FastTrack i genomsnitt. Till skillnad från Acculock introducerar SimpleLock+ inte ytterligare falska positiva i Multilock-HB, men missar 3,6 % av de sanna dataraser som rapporterats av Mutilock_HB. Därför kan SimpleLock+ vara ett bra alternativ för frekvent upptäckt av dataraser under utvecklingsprocessen, och MultiLock-HB kan användas för de sena utvecklingsstadierna för en mer grundlig kontroll. Vi tror att vår prestandajämförelse i olika aspekter av programmet egenskaper kan ge användbar information för ytterligare forskning för att förbättra effektiviteten i nuvarande data ras detektion tekniker. [1] Ej tillämpligt. Leveson och C.S. Turner, "En undersökning av Therac-25-olyckorna", comput. vol. - Nej, det gör jag inte. 7 juli 1993, s. 18 år och 18 år.
Den andra REF fokuserade på detektionsmetoder snarare än verktyg, och jämförde fem olika algoritmer: FastTrack, Acculock, Multilock-HB, SimpleLock+, och tillfälligt föregår (CP) detektion.
Experimental Performance Comparison of Dynamic Data Race Detection Techniques
{'venue': None, 'journal': 'Etri Journal', 'mag_field_of_study': ['Computer Science']}