With the backing of a five-year, $443,000 National Science Foundation grant, Sam Guyer's goal is to make computer programs better manage memory. An assistant professor of computer science at Tufts University, Guyer's aim is to find patterns in memory usage that will help websites run safer and more efficient operations. Below are excerpts from our recent interview.
An analogy to help understand the problem:
Imagine the parking lot of a mall. The mall itself is the central processing unit of the computer. In order to compute something, you need to be near the mall. Think of parking spaces as memory. It's a finite resource. You have to manage it carefully. How much work does it take you to find an empty parking space? That's the problem I'm trying to solve.
Data comes in -- which is like someone arriving at the mall -- some computation is performed and the person leaves. They leave an empty parking space. Where is it? Currently, you come into the parking lot and blindly drive around until you find an empty space. Who knows how long that takes? When the system is under a light load, that's easy. But when the system is under heavy load, there might be five empty spaces in the entire parking lot.
Mostly what we're looking at are server computers. Picture the computers that run a big website, like Amazon or Google. These machines are under tremendous load from the users and they want to squeeze every little bit out of them. You can't afford to have a lot of empty space sitting around. You want to use that space as efficiently as possible. You've got this trade-off: If the parking lot is mostly always full, finding an empty space is hard. When you want to do a computation, you get stuck. When another user wants to do a search, there's nowhere to put their data. That's the situation right now.
The grant-funded project:
This grant is about looking at patterns in the usage and trying to take advantage of those patterns. In the analogy, imagine you know when you arrive at the mall that there's a movie letting out. Your best bet is to head to the part of the parking lot near the movie theater. That's where the spaces are going to be. We want to find patterns, and they're very specific to the way different programs work. We want to find those patterns to help us identify places where resources are almost certain to be available.
To bring it back to computing, imagine a computer using online banking software. The typical pattern there is the user logs on, does a few transactions and they leave. If you can identify that pattern in the computer, you know when a user logs out, all the resources associated with that user are not going to be needed anymore. We want to provide a way for programmers that, without going back to the manual way, can express what these patterns are going to be, so these systems can take advantage of them.
How this would impact the typical web user:
As a user, you'd see a faster response. When resources are not available, things come to a grinding halt. If memory is totally exhausted and you go to launch the website, you're stuck until resources become available. The common solution to this problem is to over-prepare. Instead of buying 100 computers, you buy 150 computers. You just have to buy more stuff to make sure that doesn't happen. Our solution is to use what we have more efficiently.
How this would impact security:
In some ways, it doesn't directly impact that. It gives people an option they might not have otherwise had. In many banks, the software is pretty old. It was never built to be hooked up to the web. A lot of that is vulnerable. People have been trying to migrate that over to more modern systems that give them some protection. But the resource problem is significant. I might have to double the size of my data center. That's a tough choice. I want security, but can I afford to do that? We're trying to break that trade-off.
Photo: Sam Guyer