In the real world, the premium user might be a regular trading customer at a large brokerage company. The second user might be someone with an account, but not a customer who generates much revenue. The "no limits" user might be someone who has just come to the site to get free stock quotes or to access free stock-research information. In order for the system to work, it first has to have the capability to recognize different kinds of users and follow different rules for them.
"If all three users hit the computer at the same time," says Dillenberger, "the first thing the computer does is figure out that it can't handle all three requests simultaneously. It needs to make sure that the premium customer is satisfied first." The computer may also be doing other things. At the instant of the three requests, there may not even be enough capacity to satisfy the premium customer.
"If there isn't enough capacity, the computer asks, Why not? What's the bottleneck? Am I out of processing power? Am I out of memory?" Dillenberger explains. "The computer picks the most likely source of the bottleneck, predicts what it needs to meet the goal, finds a place to get that resource, and satisfies the premium customer."
Of course, all of the analysis and problem solving has to happen in the blink of an eye. Then the computer has to move on to satisfy the pretty-good customer and then to satisfy the lowest-ranking customer. And this is the simplest kind of computerized automation and problem solving, Dillenberger points out. In reality, the computers at a financial-services company wouldn't be handling three requests at once -- more like 3,000 or 30,000. With the Internet and with vast networks of computers and computerized equipment, the information and problem-solving challenges go up exponentially.
Pratap Pattnaik is head of the scalable-systems group inside IBM research. His group has recently developed a server with memory that automatically allocates the fastest memory chunks to the most important work. "Even in most high-end servers," says Pattnaik, "we have to do this manually." The point is for computers to become goal oriented. "If someone accidentally cuts a cable," says Pattnaik, "what does 'self-healing' mean? Obviously, the computer doesn't go to the factory and make a new cable. Its goal is to get you to the Web page that you clicked. The computer has to know the goal -- Get to that Web server! -- and route you through pathways to get there."
Why has IBM turned autonomic computing into a virtual crusade? It has no choice: IBM alone can't fix the problems. "We all live in an ecosystem," says Pattnaik, "Even at IBM. Our customers may have IBM equipment, Cisco routers, Sun servers. I may have a really fast Ferrari, but I have to live within the ecosystem of the roads. If there's a traffic jam, it doesn't do me any good to have a Ferrari."
But tiering customer service and allocating computer memory are easy compared with using computers as strategic tools. Rich Friedrich, director of one of Hewlett-Packard's research labs, says that HP imagines a future where managers simply tell the computer, "Maximize revenue on this product line." "That's the kind of input we're thinking about," says Friedrich. "Not, 'Configure this server with these parameters.' "
Language can often be a leading indicator of the state of the art. And the language of automated computing is unsettled, as is the field itself. No single phrase has yet arisen to dominate the handful of concepts that everyone agrees on: that computers need to be more aware of their own capacities and functions, on the lookout for failures or hiccups of all kinds, able to gauge their environment and the kind of work that they are being asked to do, able to adjust themselves to maximize performance or meet specific goals, and able to work around those problems without human help.
Armando Fox, an assistant professor of computer science at Stanford University, is working with David Patterson, a colleague at the University of California, Berkeley. They label their work "ROC": recovery-oriented computing. It's a phrase that Fox credits to Patterson. ROC -- pronounced, "rock" -- is more tightly focused than IBM's ideas. Says Fox: "Recovery-oriented computing means that failures happen. You can't control that. And today's software is not realistic. The question is, If recovery is the goal, how does that change the game?"
John Kubiatowicz, an assistant professor of computer science at UC Berkeley, has also been working on autonomic concepts for several years. He uses a phrase of his own creation: introspective computing. "Introspective computing is about using continuous monitoring, analysis, and feedback to adapt the system, to tune performance, and to make things more stable," says Kubiatowicz. He has heard of ROC, of course. "I would say that's more of a specific than an introspective computing," he says, "but it's an extremely important part of it."