Sanjay Bhansali

Sanjay Bhansali

Authored Publications
Google Publications
Other Publications
Sort By
  • Title
  • Title, descending
  • Year
  • Year, descending
    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
    Tim. J. Hoar
    IEEE Transactions on Software Engineering, 24(10)(1998), pp. 848-862
    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
    Mehdi T. Harandi
    Machine Learning, 10(1993), pp. 7-55