Högpresterande samtidiga bibliotek, såsom lås-fria datastrukturer och anpassade synkronisering primitiva, är notoriskt svåra att skriva korrekt. Denna kod implementeras ofta utan lås, istället med hjälp av vanliga laster och butiker och låg nivå operationer som atom-jämför-och-swaps och explicita minne stängsel. Denna kod måste köras korrekt trots den avslappnade minnesmodellen hos den underliggande kompilatorn, virtuella maskinen och/eller hårdvaran. Dessa minnesmodeller kan omordna läsningen och skrivandet som ges ut av en tråd, vilket i hög grad komplicerar det parallella resonemanget. Vi föreslår RELAXER, en kombination av prediktiv dynamisk analys och programvarutestning, för att hjälpa programmerare att skriva korrekta, högkonkurrenta program. Vår teknik fungerar i två faser. För det första undersöker RELAXER en sekventiellt konsekvent körning av ett program under test och på ett dynamiskt sätt detekterar potentiella dataraser. Dessa raser används för att förutsäga eventuella kränkningar av sekventiell konsekvens under alternativa avrättningar på en avslappnad minnesmodell. I den andra fasen kör RELAXER om programmet med en partisk slumpmässig schemaläggare och med en konservativ simulering av en avslappnad minnesmodell för att med stor sannolikhet skapa en förutsagd sekventiell konsekvensöverträdelse. Dessa utföranden kan användas för att testa om ett program fungerar som förväntat när den underliggande minnesmodellen inte är sekventiellt konsekvent. Vi har implementerat RELAXER för C och har utvärderat det på flera synkroniseringsalgoritmer, samtidiga datastrukturer och parallella applikationer. RELAXER genererar många utföranden av dessa riktmärken med överträdelser av sekventiell konsekvens, belyser ett antal buggar under avslappnade minnesmodeller.
RELAXER REF använder dynamisk prediktiv analys för att upptäcka dataraser i avslappnade minnesmodeller: i den första fasen analyserar de en sekventiellt konsekvent utförande spår för att förutsäga potentiella dataraser; i den andra fasen, beväpnade med operativa modeller av avslappnade minnesmodeller (som försenar vissa operationer för att simulera beteendet hos en avslappnad minnesmodell), försöker de återskapa de förutsagda scenarierna som förutspås i den första fasen.
Testing concurrent programs on relaxed memory models
{'venue': "ISSTA '11", 'journal': None, 'mag_field_of_study': ['Computer Science']}