All Research Areas
Research Areas
Year Published

115 Results

September 23, 2018

From Start-ups to Scale-ups: Opportunities and Open Problems for Static and Dynamic Program Analysis

IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM)

This paper describes some of the challenges and opportunities when deploying static and dynamic analysis at scale, drawing on the authors’ experience with the Infer and Sapienz Technologies at Facebook, each of which started life as a research-led start-up that was subsequently deployed at scale, impacting billions of people worldwide.

By: Mark Harman, Peter O'Hearn
August 22, 2018

FBOSS: Building Switch Software at Scale


We present FBOSS, our own data center switch software, that is designed with the basis on our switch-as-a-server and deploy-early-and-iterate principles.

By: Sean Choi, Boris Burkov, Alex Eckert, Tian Fang, Saman Kazemkhani, Rob Sherwood, Ying Zhang, James Hongyi Zeng
August 19, 2018

A real-time framework for detecting efficiency regressions in a globally distributed codebase

Knowledge Discovery in Databases (KDD)

This paper describes the end-to-end regression detection system designed and used at Facebook. The main detection algorithm is based on sequential statistics supplemented by signal processing transformations, and the performance of the algorithm was assessed with a mixture of online and offline tests across different use cases.

By: Martin Valdez-Vivas, Caner Gocmen, Andrii Korotkov, Ethan Fang, Kapil Goenka, Sherry Chen
July 9, 2018

Continuous Reasoning: Scaling the Impact of Formal Methods

Logic in Computer Science

This paper describes work in continuous reasoning, where formal reasoning about a (changing) codebase is done in a fashion which mirrors the iterative, continuous model of software development that is increasingly practiced in industry. We suggest that advances in continuous reasoning will allow formal reasoning to scale to more programs, and more programmers.

By: Peter O'Hearn
July 9, 2018

Experience developing and deploying concurrency analysis at Facebook

Static Analysis Symposium

This paper tells the story of the development of RacerD, a static program analysis for detecting data races that is in production at Facebook. The technical details of RacerD are described in a separate paper; we concentrate here on how the project unfolded from a human point of view.

By: Peter O'Hearn
July 1, 2018

We Need a Testability Transformation Semantics

16th International Conference on Software Engineering and Formal Methods

This paper briefly reviews Testability Transformation, its formal definition, and the open problem of constructing a set of formal test adequacy semantics to underpin the current practice of deploying transformations to help testing and verification activities.

By: Mark Harman
June 28, 2018

Hardware Remediation At Scale

International Conference on Dependable Systems and Networks (DSN)

Large scale services have automated hardware remediation to maintain the infrastructure availability at a healthy level. In this paper, we share the current remediation flow at Facebook, and how it is being monitored.

By: Fan (Fred) Lin, Matt Beadon, Harish Dattatraya Dixit, Gautham Vunnam, Amol Desai, Sriram Sankar
June 20, 2018

HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack

Programming Language Design and Implementation (PLDI)

This paper describes the design of the second generation of the HHVM JIT and how it addresses the challenges to efficiently execute PHP and Hack programs. This new design uses profiling to build an aggressive region-based JIT compiler. We discuss the benefits of this approach compared to the more popular method-based and trace-based approaches to compile dynamic languages.

By: Guilherme Ottoni
May 16, 2018

Glow: Graph Lowering Compiler Techniques for Neural Networks


This paper presents the design of Glow, a machine learning compiler for heterogeneous hardware. It is a pragmatic approach to compilation that enables the generation of highly optimized code for multiple targets. Glow lowers the traditional neural network dataflow graph into a two-phase strongly-typed intermediate representation.

By: Saleem Abdulrasool, Summer Deng, Roman Dzhabarov, Jordan Fix, James Hegeman, Roman Levenstein, Bert Maher, Satish Nadathur, Jakob Olesen, Jongsoo Park, Artem Rakhov, Nadav Rotem, Misha Smelyanskiy
April 23, 2018

Reducing DRAM Footprint with NVM in Facebook


In this work, we design a key-value store, MyNVM, which leverages an NVM block device to reduce DRAM usage, and to reduce the total cost of ownership, while providing comparable latency and queries-per-second (QPS) as MyRocks on a server with a much larger amount of DRAM. Replacing DRAM with NVM introduces several challenges. In particular, NVM has limited read bandwidth, and it wears out quickly under a high write bandwidth.

By: Assaf Eisenman, Darryl Gardner, Islam AbdelRahman, Jens Axboe, Siying Dong, Kim Hazelwood, Chris Petersen, Asaf Cidon, Sachin Katti