![Sanjay Bhansali](https://storage.googleapis.com/gweb-research2023-media/pubtools/188.png)
Sanjay Bhansali
Research Areas
Authored Publications
Google Publications
Other Publications
Sort By
Mesa: Geo-Replicated, Near Real-Time, Scalable Data Warehousing
Ashish Gupta
Fan Yang
Jason Govig
Adam Kirsch
Kelvin Chan
Kevin Lai
Shuo Wu
Sandeep Dhoot
Abhilash Kumar
Mingsheng Hong
Jamie Cameron
Masood Siddiqi
David Jones
Andrey Gubarev
Shivakumar Venkataraman
Divyakant Agrawal
VLDB(2014)
Preview abstract
Mesa is a highly scalable analytic data warehousing system that stores critical measurement data related to Google's Internet advertising business. Mesa is designed to satisfy a complex and challenging set of user and systems requirements, including near real-time data ingestion and queryability, as well as high availability, reliability, fault tolerance, and scalability for large data and query volumes. Specifically, Mesa handles petabytes of data, processes millions of row updates per second, and serves billions of queries that fetch trillions of rows per day. Mesa is geo-replicated across multiple datacenters and provides consistent and repeatable query answers at low latency, even when an entire datacenter fails. This paper presents the Mesa system and reports the performance and scale that it achieves.
View details
Searching for Build Debt: Experiences Managing Technical Debt at Google
J. David Morgenthaler
Misha Gridnev
Proceedings of the Third International Workshop on Managing Technical Debt, IEEE(2012), pp. 1-6
Preview abstract
With a large and rapidly changing codebase, Google software engineers are constantly paying interest on various forms of technical debt. Google engineers also make efforts to pay down that debt, whether through special Fixit days, or via dedicated teams, variously known as janitors, cultivators,
or demolition experts. We describe several related efforts to measure and pay down technical debt found in Google's BUILD files and associated dead code. We address debt found in dependency specifications, unbuildable targets, and
unnecessary command line flags. These efforts often expose other forms of technical debt that must first be managed.
View details
Framework for Instruction-level Tracing and Analysis of Program Executions
Wen-Ke Chen
Stuart de Jong
Andrew Edwards
Ron Murray
Milenko Drinic
Darek Mihocka
Joe Chau
Proceedings of the 2nd international conference on Virtual execution environments, ACM(2006), pp. 154-163
Preview abstract
Program execution traces provide the most intimate details of a program's dynamic behavior. They can be used for program optimization, failure diagnosis, collecting software metrics like coverage, test prioritization, etc. Two major obstacles to exploiting the full potential of information they provide are: (i) performance overhead while collecting traces, and (ii) significant size of traces even for short execution scenarios. Reducing information output in an execution trace can reduce both performance overhead and the size of traces. However, the applicability of such traces is limited to a particular task. We present a runtime framework with a goal of collecting a complete, machine- and task-independent, user-mode trace of a program's execution that can be re-simulated deterministically with full fidelity down to the instruction level. The framework has reasonable runtime overhead and by using a novel compression scheme, we significantly reduce the size of traces. Our framework enables building a wide variety of tools for understanding program behavior. As examples of the applicability of our framework, we present a program analysis and a data locality profiling tool. Our program analysis tool is a time travel debugger that enables a developer to debug in both forward and backward direction over an execution trace with nearly all information available as in a regular debugging session. Our profiling tool has been used to improve data locality and reduce the dynamic working sets of real world applications.
View details
Profile-guided proactive garbage collection for locality optimization
Wen-Ke Chen
Trishul M. Chilimbi
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation, ACM, pp. 332-340
Preview abstract
Many applications written in garbage collected languages have large dynamic working sets and poor data locality. We present a new system for continuously improving program data locality at run time with low overhead. Our system proactively reorganizes the heap by leveraging the garbage collector and uses profile information collected through a low-overhead mechanism to guide the reorganization at run time. The key contributions include making a case that garbage collection should be viewed as a proactive technique for improving data locality by triggering garbage collection for locality optimization independently of normal garbage collection for space, combining page and cache locality optimization in the same system, and demonstrating that sampling provides sufficiently detailed data access information to guide both page and cache locality optimization with low runtime overhead. We present experimental results obtained by modifying a commercial, state-of-the-art garbage collector to support our claims. Independently triggering garbage collection for locality optimization significantly improved optimizations benefits. Combining page and cache locality optimizations in the same system provided larger average execution time improvements (17%) than either alone (page 8%, cache 7%). Finally, using sampling limited profiling overhead to less than 3%, on average.
View details
Automated Software Synthesis: An Application in Mechanical CAD
A Principled Approach Towards Symbolic Geometric Constraint Satisfaction
Glenn A. Kramer
Tim J. Hoar
Journal of Artificial Intelligence Research, 4(1996), pp. 419-443
Synthesis of UNIX Programs Using Derivational Analogy