Angela Demke Brown



Google Search

My Research Projects

My interests are in operating systems, file system reliability, run-time adaptation, binary instrumentation, and compiler optimization.

You may find more information about these projects on our group webpages here.


Current Projects

  1. File system reliability and storage management. We aim to protect file system metadata structures on disk against errors in the file system code by checking file system updates against a set of consistency rules before committing them to disk. We are also exploring a framework to support policies for dynamically adapting storage management decisions, to save energy or meet cost/performance targets.
  2. Dynamic binary instrumentation (DBI) for operating systems. DBI has many uses, including program analysis, optimization, and enforcement of security policies, however, it could not be applied to operating system (OS) code. We recently built a comprehensive DBI framework for the popular Linux OS, enabling new research into OS fault isolation, malware analysis and performance optimization.
  3. Understanding and improving spatial database performance. Characteristics of spatial databases, which form the linchpin of many emerging geospatial applications such as land use management and environmental risk assessment, are not well-understood. We developed a comprehensive benchmark to analyze different spatial databases and characterize their demand for compute resources. We are now exploring strategies for parallelizing long-running spatial join queries.

Past Projects

  1. Compiler and interpreter performance enhancements. My research group introduced a new dispatch technique to improve the performance of interpreted code. We also introduced a new strategy to mix interpretation with just-in-time (JIT) compiled code, based on identifying frequently executed program traces. For Java JIT compilers, we created a technique to reduce the overhead of calling native code from a Java program by inlining the native code. For static compilers, we used machine learning techniques to dramatically reduce compile time while still producing high-performance code.
  2. Performance evaluation of memory reclamation strategies for lockless synchronization. There was previously no thorough comparison of the many memory reclamation algorithms that had been proposed for use with advanced lockless synchronization strategies, or a detailed understanding of the factors that could affect their relative performance. We developed a microbenchmark to thoroughly evaluate the performance of memory reclamation schemes, clarifying the strengths and weaknesses of each, and providing guidance to implementers interested in using these techniques.
  3. Memory management and prefetching. My early work in this area includes my thesis work on compiler-based memory management. Together with students and faculty at the University of Toronto, I have also worked on I/O prefetching for pointer-based data structures, pre-loading strategies to reduce application startup time, novel hardware extensions to support fine-grained memory access tracking that enable new software memory management algorithms, and the use of standard hardware performance monitoring units for tracking memory accesses.