Deterministisk multitrådning (DMT) eliminerar många skadliga programvaruproblem som orsakas av icke-determinism. Det fungerar genom att begränsa ett program för att upprepa samma tråd interleaveings, eller scheman, när ges samma inmatning. Trots mycket ny forskning, är det fortfarande en öppen utmaning att bygga både deterministiska och effektiva DMT-system för allmänna program på råvaruhårdvara. För att deterministiskt lösa en data ras, ett DMT-system måste genomdriva ett deterministiskt schema av delade minnesåtkomster, eller memschedule, som kan medföra oöverkomliga overhead. Genom att använda scheman som endast består av synkronisering, eller synkronisering, kan denna overhead undvikas. Men en synkronisering är deterministisk endast för tävlingsfria program, men de flesta program har tävlingar. Vår nyckelinsikt är att raser tenderar att förekomma endast inom mindre delar av en avrättning, och en dominerande majoritet av avrättningen är fortfarande rasfri. Således kan vi ta till en mem-schema endast för "rasiga" delar och genomdriva en synk-schema annars, kombinera effektiviteten av synk-scheman och determinismen av memschedules. Vi kallar dessa kombinerade scheman hybrid scheman. Baserat på denna insikt har vi byggt PEREGRINE, ett effektivt deterministiskt multitrådningssystem. När ett program först körs på en inmatning, PEREGRINE registrerar en körning spår. Den slappnar sedan av detta spår till en hybrid schema och återanvänder schemat på framtida kompatibla ingångar effektivt och deterministiskt. PEREGRINE förbättrar ytterligare effektiviteten med två nya tekniker: determinismbevarande skivning för att generalisera ett schema till fler ingångar samtidigt bevara determinism, och schemastyrd förenkling för att exakt analysera ett program enligt ett specifikt schema. Vår utvärdering på en mängd olika program visar att PEREGRINE är deterministisk och effektiv, och kan ofta återanvända scheman för hälften av de utvärderade programmen.
Peregrine REF ] använder LLVM för att registrera ett synkroniseringsspår för att skapa ett deterministiskt schema för programmet.
Efficient deterministic multithreading through schedule relaxation
{'venue': "SOSP '11", 'journal': None, 'mag_field_of_study': ['Computer Science']}