Cloud Computing Lets One Computer Do the Work of Many
Kartik Gopalan, assistant professor of computer science, is working to harness the power of cloud computing, resulting in lower costs for businesses and revolutionizing everyday tasks such as shopping and browsing the Web.
Kartik Gopalan has received a nearly $400,000 Faculty Early Career Development (CAREER) grant from the National Science Foundation's most prestigious program for young faculty to support his research on "virtualization" in cloud computing -- large clusters of computers used by organizations of all sizes. Virtualization allows a single computer to do the work of multiple machines so information technology managers can pool the resources of multiple computers on a network to perform large or complex tasks.
"Virtualization helps people use their hardware resources more efficiently," Gopalan explains. "You can consolidate multiple services on a single machine. You have less hardware, it costs you less, it uses less power and it gives you a better return on investment. People are clamoring to deploy virtualization, mainly because of costs and flexibility. This lets you do more with less."
The technique is already commonly used at medium and large companies. However, IT managers don't have good tools to manage the hundreds or thousands of virtual machines that could be running in a cluster.
"IT managers need good algorithms to ensure that they can squeeze the last possible inch of performance out of this virtualization technology," said Gopalan, whose work involves developing software components to better manage resources among virtual machines.
"We look at it as giving the administrators building blocks," he says. His team develops algorithms that can be used under different circumstances, whether it's running a Web server or a database server or providing some other service.
The research, including an algorithm that helps large-memory applications run efficiently on a network, has already generated commercial interest.
Gopalan's group developed software that allows a company that processes map data and GPS information to combine all the memory of multiple machines in a cluster into one "virtualized" memory pool, allowing a large-memory program to run faster than before.
He has also written open-source software that enables two virtual machines on the same computer to interact efficiently. The application, which could help in a situation where a Web server needs to access credit card information stored in a database server, for instance, has already been downloaded for use hundreds of times.
If cloud computing seems difficult to understand, consider the forces at play anytime someone runs an "app" from an iPhone.
"You can use the iPhone to browse the Web or check your e-mail," Gopalan says. "But where are these applications actually running? They are often running in the back end, in a cluster or a data center. And the IT manager needs the right tools to satisfy the user's performance requirement while minimizing their cost. These are two conflicting requirements. I develop algorithms to try to bridge that gap. You don't end up using too much hardware but you also don't sacrifice the user experience."
Traditionally, if you need to use a piece of software you have to install it on your machine. But this is inefficient for a business. A company has to maintain multiple copies of the software and install the software on each computer where someone wants to use it.
With cloud computing, a firm could install the software once on a network and users could access it from any machine anywhere on the network.
"People have to consolidate IT resources," Gopalan says. "It's too inefficient to work with each computer the way we do now."