Exploiting Multiple Cores Today: Scalability and Reliability For Off-the-shelf Software

Subscribers:
344,000
Published on ● Video Link: https://www.youtube.com/watch?v=51NRuZbQJJQ



Duration: 1:20:02
58 views
1


Multiple core CPUs are here and will soon be ubiquitous. The prevailing notion is that we need to rewrite applications not originally designed to support multiple processors to make them multithreaded. Because of the difficulty of programming correct and efficient multithreaded applications (e.g., race conditions, deadlocks, and scalability bottlenecks), this is a major challenge. This talk presents two alternative approaches that bring the power of multiple cores to today's software. The first approach focuses on building highly-concurrent client-server applications from legacy code. I present a system called Flux that allows users to take unmodified off-the-shelf *sequential* C and C++ code and build concurrent applications. The Flux compiler combines the Flux program and the sequential code to generate a deadlock-free, high-concurrency server. Flux also generates discrete event simulators that predict actual server performance under load. While the Flux language was initially targeted at servers, we have found it to be a useful abstraction for sensor networks, and I will briefly talk about our use of an energy-aware variant of Flux in a deployment on the backs of an endangered species of turtle. The second approach uses the extra processing power of multicore CPUs to make legacy C/C++ applications more reliable. I present a system called DieHard that uses randomization and replication to transparently harden programs against a wide range of errors, including buffer overflows and dangling pointers. Instead of crashing or running amok, DieHard lets programs continue to run correctly in the face of memory errors with high probability. Joint work with Brendan Burns, Kevin Grimaldi, Alex Kostadinov, and Mark Corner (Flux), and Ben Zorn (DieHard).




Other Videos By Microsoft Research


2016-09-07When Separation Logic met Java
2016-09-07Microphone Array for Audience Capture in Lecture Rooms
2016-09-07Learning to Label Images
2016-09-07On the Compressibility of NP Instances and Cryptographic Applications
2016-09-07Search: Use of Relevance Feedback and Estimating Effectiveness of Searches
2016-09-07Tool Support for Proof Engineering
2016-09-07Attack-Resistant Algorithms for Massive Networks
2016-09-07Lambda Legal: Making the Case for Equality
2016-09-07Introducing Nielsen Buzzmetrics Research The Global Measurement Standard in Consumer Generated Media
2016-09-07Understanding visual scenes in 200 msec: Results from Human and Modeling Experiments 
2016-09-07Exploiting Multiple Cores Today: Scalability and Reliability For Off-the-shelf Software
2016-09-07Proof Procedures for Separated Heap Abstractions
2016-09-07Client-Side Echo Cancellation for Multi-Party Audio Conferencing
2016-09-07Variance analyses from invariance analyses
2016-09-07Modelling the performance of wireless networks employing the IEEE 802.11 MAC
2016-09-07Geometric Optics, Duality and Congestion in Sensornets [1/2]
2016-09-07All Rise: Somebodies, Nobodies and the Politics of Dignity
2016-09-07Hierarchical Bayesian Models for Rating Individual Players from Group Competitions
2016-09-07Interoperability and natural language processing for business rules engines
2016-09-07Random Matrices and Spectral Clustering Abstract
2016-09-07Generalized Algebraic Data Types and Object-Oriented Programming



Tags:
microsoft research