Posting in Science
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.
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
Aug 24, 2011
Your articles support me a lot in all mediums of subjects. http://www.appzinemachinereview.com
Sorry but Prof Sam Guyer's comments, at least as reported, are complete gobbledegook. Operating systems already allocate and release main memory and disk space efficiently. The low speed of some websites is very rarely related to memory allocation/de-allocation problems and is usually due to bad application programming. A good proof of my assertion is Google's search engine. The systems that support it are so fast that they are able to provide sub-second response times, responding on the fly as the user types a search string in character-by-character. This should become an industry standard and it provides a shaming lesson for all those sloppy programmers out there. So, $443,000 for this rubbish project ... sounds like a gravy train to me.
This interview didn't really acknowledge that all modern OSes already have some form of memory management. Most of them track a process' resource usage, and make those resources free when the process ends. Maybe Mr. Guyer's point was that these processes don't always correspond to users? Some processes such as a login process or graphics subsystem live on after the user logs out, and don't know they can free resources associated with that user? Anyway, he could have been more specific for this audience.
Our existing operating system choices are based upon technologies decades old with foundations either in large mainframe systems and/or have suffered "code bloat" over time. For the sake of backwards compatibility, all too often they are "patched" by adding more code, rather than by removing old, defective or superfluous code. As someone who grew up programming computers to do useful tasks with as little as a few thousand bits of storage, it appalls me how much computing power it requires today just to support a few dozen users concurrently. While "Moore's Law" has fulfilled it's promise of amazing growth in capacity, "code bloat" has eaten up nearly as much of that gain.
Banks use systems not meant for the internet? Show me a bank with a 10 year old computer and I'll show you a closed bank. Computers manage their memory very well. As you say, it's ignorant programmers causing low memory problems. Windows is the worst I know of, loading unbelievable megabytes of unneeded applications on start. Firefox does too, but it's how I have it set for my convenience. It's faster for me to restart when needed and have history available quickly. I love tabs and multiple windows!
Personally, I have always been one to shut off bloat wherever it may be. I liked the Win2K interface. It was practical and didn't use processor power and memory that I could use for something else. Windows XP was okay when you shut off the "Fisher Price" interface and animations. Vista had a horrible bloat, even with the Aero and animations turned off. Win7 was refined it a bit, it is still rediculous. I'd still be using Win2K if all the software companies (M$ especially) didn't want me to upgrade and forced software to require the latest kernel. Imagine a 6-core i7 and 8 GB of RAM if Win2K came in 64-bit. As it is now, most brand-name vendors don't offer XP drivers for their new systems, and the 3rd party vendors have are close behind. Now if Linux could run Windows apps natively, I'd switch to that comepletely. Even Ubuntu's new "Unity" interface is far more efficient than Windows 7's GUI and even Mac OSX, which is Unix based.
..."virtualization" is the answer to the problem. Instead of having 5 machines responsible for 5 different functions running separately, we'll combine them into a single machine running 1 primary, and 4 "virtual" machines. It's a kludge that masks the real problem: That the existing OS can't cleanly deal with more than 1 function. That's why we can't just have the 5 functions on a single machine without segregating them via "virtualization". Yeah, it works, but it's absurdly inefficient and a waste of CPU cycles and RAM.