Rotunda: Profiling the Cloud

 
 
By Darryl K. Taft  |  Posted 2007-11-26
 
 
 

Rotunda: Profiling the Cloud


Microsoft Research is working on a project named Rotunda to deliver a profiler for Web applications, which can profile end-to-end performance of applications and enable developers to create more efficient, higher performing applications for the Web tier.

Ben Livshits, the Microsoft researcher leading the Rotunda effort, said the goal of the project is to be able to profile the performance of a Web application from the time a user clicks on a link and triggers an event in the browser—which triggers a database lookup—through each point of the resolution of the transaction.

"Rotunda allows you to connect all these things together and do a profile to enable the developer to figure out what the bottleneck is" in their application, Livshits said. And as Rotunda runs, it creates a log file that gets dumped into XML so developers can drill down into what exactly happened while their application ran.

A profiler is a performance analysis tool that measures the behavior of a program as it is running, particularly the frequency and duration of function calls. Profiling enables developers to learn where their program spends time and which functions call which other functions while the program executes.

To read Steve Ballmers thoughts on Cloud, advertising and SAAS, click here.

This information could help developers determine the parts of their application that run slower than expected, and helps pinpoint the applications that might be candidates for rewriting in order to make them run faster. In addition, because profilers use information collected during the execution of an application, they can be used on programs that are too large or too complex to analyze by reading the source code.

Livshits is an expert in compilers and programming languages who has worked on tools for finding bugs, some of which are used internally at Microsoft, he said. "But performance is becoming more important again, so I decided to change gears and focus on this stuff," he said.

Rotunda will possibly be used in conjunction with the Volta technology Microsoft is working on to "democratize the cloud." According to Erik Meijer, a Microsoft architect in the companys SQL Server group who is heading up the Volta project, Volta will enable developers to create Web applications as easily as people have built Visual Basic applications.

But one of the key concepts of Volta is its support for tier splitting, or enabling parts of a program to run off different tiers and allowing the developer to make the decision as to which tier later in the deployment process, rather than early on in the development of the application. Therein lies a potential connection with Rotunda.

"Were hoping to have a set of automated analysis tools to help you figure how and where to split" the execution of programs, Livshits said.

Indeed, Livshits said he could envision something Rotunda/Volta related in Microsofts Visual Studio toolset "to say were looking at your code and these five things are candidates to move to the server or to the client," he said. "It could be a suggestive tool that gives you good advice and reasons for that advice."

Page 2: Rotunda: Profiling the Cloud

Rotunda


: Profiling the Cloud">

Livshits said developers also can take an application and partition it into stubs and run simple benchmarks to determine the profile of users. These profiles will help determine which versions of an application to show to users.

Moreover, although the issue of performance profiling is important to developers, the end-to-end capability of Rotunda is what sets it apart. "With this end-to-end capability you get a much clearer picture than if you had to do it [profile] on each individual tier," Livshits said.

Another idea Livshits has for Rotunda is profiling in a data-driven fashion, he said, such as the GNU Profiler, also known as gprof, and the Eclipse profiler.

"In Web applications, the normal way to look at things is by data flow," Livshits said. "If you follow data instead of control flow you get a much more streamlined picture. And with a three-tier Web app its all about the data -- youd be producing a picture much more inline with what an architect would be looking at."

Although Rotunda is a relatively short-lived project—Livshits started it in May—it quickly caught the attention of Meijer and the Volta team, which helped the effort gain some attention in the Microsoft product groups, namely developer division folks. The effort grew out of Livshits work on another Microsoft Research project known as Ajax View.

The goal of the Ajax View project is to improve developers visibility into and control over their Web applications behaviors on users desktops, according to an overview of the project on the MSR site.

"The Ajax View approach is to insert a server-side proxy (or Web server plug-in) in-between the Web server machines and the end-users browser," the MSR overview said. "This proxy captures the Web applications JavaScript code as it is being sent to a browser and rewrites the code to insert extra instrumentation code. The injected instrumentation code runs with the rest of the Web application inside the end-users browser and can capture performance, call graph, application state and user interaction information, providing visibility directly into the last hop of the users experience."

However, Ajax View "is a very general platform," Livshits said. "After working on it I decided to focus on performance and that led me to Rotunda."

Rotunda is but another in Microsofts and Livshits efforts to slay the "three headed dragon: reliability, performance and security," Livshits said. He said challenges in these areas are being addressed over time. For instance, buffer overruns were "the cause of the 90s" in the bug world. "Now theyre less common because better languages have been adopted" and other related issues.

"We want to get to the point where we can enable secure-by-construction software," Livshits said.

Check out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools.

Rocket Fuel