作者: Kaushik Veeraraghavan , Jason N. Flinn
DOI:
关键词:
摘要: We introduce uniparallelism: a new style of execution that allows multithreaded applications to benefit from the simplicity uniprocessor while scaling performance with increasing processors. A uniparallel consists thread-parallel execution, where each thread runs on its own processor, and an epoch-parallel multiple time intervals (epochs) program run concurrently. The all threads given epoch single processor; this enables use techniques are effective uniprocessor. To scale cores, ahead generates speculative checkpoints which start future epochs. If these match state produced by at end epoch, speculation is committed output externalized; if they mismatch, recovery can be safely initiated as no has been externalized. We uniparallelism build two novel systems: DoublePlay Frost. benefits efficiency logging (as in constrained only infrequent context-switches need logged recreate order shared-memory accesses), allowing it outperform prior systems guarantee deterministic replay commodity multiprocessors. While traditional methods detect data races analyzing events executed program, Frost introduces new, substantially faster method called outcome-based race detection effects comparing replicas for divergences. Unlike DoublePlay, complementary schedules, set schedules crafted ensure diverge occurs make very likely harmful cause detects divergences outputs memory states epoch. Upon detecting divergence, analyzes replica outcomes diagnose bug selects appropriate strategy masks failure.