Autonomic Computing


IBM BeginsAutonomic-Computing Project

 IBM is beginning a large-scale autonomic-computing initiative designed to develop computer systems that run with little or no human involvement. Paul M. Horn, senior vice president and director of IBM Research, explained, "The body's autonomic nervous system controls key functions without conscious awareness or involvement, things like blood pressure,internal temperature, heartbeat. You don't have to think about them or how they need to be optimized to accomplish what you want.

Computers ought to be this easy."Autonomic computing (http://www.research.ibm.com/autonomic/) could  address a variety of complex IT problems.For example, Horn said, the approach could simplify the management and integration of different enterprise systems by providing heterogeneous workload- and systems-management techniques. According to Horn, IBM customers tell him frequently "their IT  systems are out of control and nearly impossible to manage." He said companies must cope with increasingly complex technology while finding it difficult to hire and keep skilled IT workers. Keeping systems running troublefree is time-consuming work from which IT professionals should be freed to work on more interesting challenges, he explained. "Imagine if were able to free our best and brightest people from baby-sitting data centers or spending hours determining root causes of failure," he said. Imagine the huge amount of innovation  and creativity we'd be able to turn loose on the industry." Research in this area, stated Horn, who coined the term autonomic computing, should be evolutionary in use of existing platforms and legacy systems but revolutionary in its use the algorithms and software agents that will enable self-management. For example, agents could contain information about systems and policies that would help the systems govern themselves. IBM is already working on several autonomic-computing projects, some involving artificial intelligence; adaptive algorithms; and self-healing technology,  which lets systems keep running even if certain components fail. Horn said one purpose of the projects projects  is to make systems more aware of  and responsive to changes in their environments.

IBM also plans to fund more than 50 autonomic-computing research projects by entrepreneurs and universities to encourage interdisciplinary collaboration and academic leadership. Horn said IBM has not yet
decided how much funding it will provide. The company is also encouraging professional and academic organizations, including the US National Science Foundation, to target autonomic computing as they fund crucial IT research. IBM's work is related to a couple of academic research projects. For example, John Kubiatowicz, assistant professor at the University of California, Berkeley, is working on introspective
computing, in which systems use excess computing, memory, storage, and other resources to improve overall system behavior. According to Kubiatowicz, autonomic computing connotes a system reacting to events, whereas introspective computing involves reactive and proactive behavior."However, I am encouraged by the fact that an organization as large as IBM has put forth autonomic computing as a public goal," he said. "Far too much computer-systems work has involved making things faster, larger, et cetera, without considering reliability, maintainability, availability, et cetera."Analyst Rob Enderle with Giga
Information Group, a market research firm, said autonomic computing would eventually reduce system support costs and would be most useful in remote areas where human oversight isn't practical, such as in space. Enderle predicted autonomic systems will begin deployment by the middle of this decade. Horn agreed and said, "Truly autonomic systems are years away, although in the nearer term, autonomic functionality will appear in servers and software."-Linda Dailey Paulson One of the project's purposes is to make systems more aware of and responsive to changes in their environment.





I would suppose that the topic of autonomic computing would encompass a great many disciplines and that it would include topics such as:
Stand alone system integrity. The so-called self-healing aspect of an individual PC, both at the hardware and software level.

Distributed application integrity

Hardware monitoring. To varying degrees machines already do this. For example mainframes that call the service center when they detect internal errors (yes, I know this is probably an over simplification). However it does relay in the fact that a core subset of the machine still functions or the nature of the failure is below a certain level of severity. In a similar way, if I cut myself, my body can heal itself but beyond a certain severity of injury it cannot.

This leads to the idea that although the individual may perish (human or computer) the race (human or network) lives on.

Software self-monitoring and healing. This assumes that the underlying hardware still functions correctly. For example, if a hardware fault goes undetected that affects software operation, how would the software know it had a problem. In the same vein, would someone who is insane expect to know they are insane (If you know your crazy, are you really crazy?). Therefore self-monitoring is not a total solution. Basically people are considered normal, not by their own values, but by the values of the other people within the society in which they live. In the same way, the 'health' of an individual machine may be more accurately judged by the nearby machines (on a network) than by each individual machine itself (doesn't the space shuttle use similar concept?).

The other aspect of self-healing is a purely human one. People (businesses) generally like to be in control of their systems. The concept of systems 'updating' themselves would probably cause most change control people to throw their hands up in horror. If you have a problem, what level is your system at? Well, I think it's sort of at xyz level and a bit, maybe!! How do I know, the systems down so I cannot find out what's on it.

Application integrity. Today's applications are distributed. No computer is an island (except for the MP 3000 in our lab that I cannot get on the network yet!) so by its very nature autonomic computing is going to be about simplifying the management and configuration of such applications. In order to accomplish this applications would need to become more aware of processing within a distributed environment. However if the aim of autonomic computing is to simplify the complexity of these very environments then the languages and run time environments in which these applications run must become much easier to use and implement. As a mainframe dinosaur I will admit that I am having a heck of a time trying to understand how Java and Web 'stuff' fit together and how Websphere makes it easier for me (it hasn't
so far, but maybe I'm just thick J). All this DCOM/NIDL stuff is just plain confusing. As for xml/soap/uddi, well I know what they are, sort of, but as soon as you get a handle on one, something else comes along. Then there's parallel processing enabling facilities such as MPI and PVM which don't even get a look in the popular business list of buzz words. I would suggest that even though modern applications have the appearance of asynchronous  processing (e.g. windows apps) with their event driven philosophy, programmers are still in effect writing chunks of sequential code.

If you want to take the concept of autonomic computing to the application level than I would say that an application should not need to know where a piece of data is or on what processor a process runs. In the same way that I do not delegate which neurons of my brain hold which piece of information, nor should an autonomic application be concerned with such details. It may be to an applications advantage to indicate that certain processes or pieces of data remain local when possible but indicating such a desire should not cause it to be enforced, only suggested to the run time environment. Now if we distribute our data and processes, it becomes important (in an autonomic  environment) that if the machine or network segment holding that data/process becomes unavailable, we do not loose the information or result it holds. In the same way that a brain cell may die, the information it held is passed on to surrounding cells (I hope!). This implies that in an autonomic application, processes and data elements are replicated in more than one element (machine) in such a way that failure of a single element does not cause the failure of the entire application.

Programming this type of redundancy with existing technology would required extensive specialized programming and testing and would therefore probably prevent its widespread acceptance and use. This leads on to the need for an autonomic aware language and run time environment that enables the average programmer to concentrate on the application/business logic instead of how to implement the logic to implement the logic (if you see what I mean).

Back to main
1