Gary S. Sevitsky

About me

Gary S. Sevitsky

Research Staff Member


Research lab: Watson Research Center (Hawthorne)


I am a researcher at the IBM Watson Research Center in Hawthorne, New York. Since joining IBM in 1998 I have been working on techniques for understanding run-time behavior in large-scale Java applications, focusing on performance and memory usage. In addition to developing tools, our team has been studying industrial applications, by working with dozens of IBM customers and product groups to solve problems.

In an earlier project, Jinsight, we combined visualization and user exploration to enable diagnosis of performance and memory problems. More recently we have been developing automated techniques to address the increasing scale and complexity of applications. Applications are now built by combining numerous frameworks, and problems usually appear as expensive patterns in the way these frameworks are combined. One of the challenges is to find the right abstractions for discovering and summarizing these patterns. I have been a contributor to our work on automated memory leak and footprint analysis (LeakBot and Yeti projects), and we are actively working on automating the explanation of performance problems as well.

One challenge is to collect enough information to explain problems, without incurring too high a cost. In earlier work we developed a technique to enable the JIT to better optimize in the presence of instrumentation. Currently, in collaboration with Professor Barbara Ryder at Rutgers, we are exploring ways to blend static analysis with dynamic information, to add additional layers of explanation at a minimal cost. Our first application of this approach is to the discovery and explanation of excessive temporary usage, a common problem in framework-based systems. (For more information on this project see IBM Open Collaborative Research: Software Quality).

Framework-based applications can often require an immense amount of resources to accomplish simple tasks. We are mining our experiences with industrial applications to understand the ways these designs typically "go wrong" in their resource usage. We have been developing vocabulary and metrics to characterize sources of runtime bloat in general terms, independent of the specifics of any one application or framework. This enables judgements of the goodness of a design, and makes comparisons across diverse implementations possible. Our "Diary of a Datum" methodology looks at the diffuse performance problems that result when reusable frameworks are combined. Our work on "Data Structure Health" exposes the ways that data designs introduce inefficiencies in memory usage.

Using our tools and methodology, we are currently developing a more detailed catalog of the patterns of runtime bloat found in industrial applications. We are looking at memory footprint, usage of temporary objects, and execution performance in general. One aim of this work is to identify those cases that are amenable to automatic optimizations versus those that are better addressed by best practices and prevention tools. These days it is easy to create bloated implementations - in fact, it takes effort not to - given so many layers of abstraction. Many problems in practice simply come from lack of awareness of or attention to performance issues. To this end, we are developing a bloat awareness and prevention course for developers, providing a systematic approach to a more resource-conscious design.

Prior to joining IBM I worked on information visualization at the NYNEX Science and Technology lab. Prior to that I was at two start-up companies developing tools to enable non-programmers to design database applications. I received an M.S. in Computer Sciences from the University of Wisconsin - Madison in 1979, and a B.A. in Mathematics from Oberlin College in 1977.

Last updated 1 Feb 2008

Content navigation

Related links