I joined Google in Oct. 2013, and I have been working on performance optimization of the Java Virtual Machine, memory management and Java garbage collection, fleet performance analysis and monitoring. My areas of interest include performance optimizations, memory management and garbage collection, performance monitoring, microprocessor architecture, compiler optimizations, hardware-software co-design, binary translation, virtual machines, security, and large-scale distributed systems.
I received a Ph.D. in Computer Engineering from Purdue University at West-Lafayette, IN, working with Jose Fortes and Rudolf Eigenmann on Processing-In-Memory (PIM) hardware-software codesign designing both a novel microarchitecture and compiler optimizations in 2004. From 2005 to 2009 I worked as an Assistant Professor in Electrical and Computer Engineering, at the University of Calgary, Canada. I created the Multi-threaded Architecture Lab. with research on computer micro-architecture, performance and compiler optimizations, and database and distributed systems. From 2010 to 2013 I worked at Intel Corporation Santa Clara, CA., working on binary translation, performance and compiler optimizations, microarchitecture, performance monitoring, and computer security. In 2002, I interned at Hewlett-Packard in Palo Alto, CA where I worked on performance profiling tools. I received an M.Sc., from Colorado State University in Electrical and Computer Engineering in 1997 working on computer security. From 1997 to 1999, I worked for Cypress Semiconductors doing firmware and hardware design, while studying at Stanford University computer architecture and VLSI design.