IBM's systems and technology group recently briefed me on the systems and storage the company was going to launch. After reading through the materials that described the new systems, it became very clear how difficult the task of system architect has become.
The Historical Perspective
In the past, systems could be designed for a single purpose. Although every system design is a set of compromises, it was possible to partially optimize a system design for a specific purpose. If we consider the recent trends towards the use of on- and off-premise cloud computing, system architects have been forced to try to build "do-everything-well" machines.
Systems could be developed that were optimized for tasks such as:
- Computationally intensive tasks
- Highly interactive tasks
- Database and other storage intensive tasks
As processing was increasingly virtualized, organizations began to mix and match these workloads and place them on a single computer. As these virtual tasks could be place either on local systems or elsewhere in the cloud, other factors effecting overall performance came to the forefront.
What system requires are really needed for each type of task?
Let's consider some of the different types of tasks and what is required in the system architecture of a machine designed for those tasks. This, of course, is not an exhaustive study of hardware and software engineering. It is just a collection of thoughts from an analyst having decades of industry experience.
Let's examine each of these individually.
Computationally intensive tasks
Systems must offer either a single very-high performance processor or a large number of traditional processors. Monolithic tasks are best served by a single huge computing capability. Tasks that can be decomposed into parallel sub tasks can be served with a number of lower cost, lower performance processors. Although this resource is the heart of a system design, it may no longer be the most important feature.
The system must include a very sophisticated caching/memory mechanism so that the processors can efficiently execute applications without being forced to wait for code or data to be delivered from the systems main memory. This is even more important for today's highly pipelined architectures that include several cores each having the capability to process several processing threads simultaneously. If any one of these threads can't access code or data when needed, today's operating systems will save what's going on, flush the cache and start working on another task. This can drag down a multi gigahertz processor to the point that it only offers a quarter or an eighth of its rated processing speed. System designers have been forced to create what amounts to "memory computers" to keep the processing computers fed and happy. These "memory computers" might offer compression and deduplication capabilities to make the best use of available memory technology.
The system must have a very sophisticated storage subsystem that makes it possible for code and data that is likely to be needed to be pre-fetched and brought into memory so that the massive processing capability will not be forced to stall. As organizations deploy multiple tiers of storage, including DRAM, SSD as well as rotating media, the storage subsystem has had to become its own very intelligent processing facility. In other words, storage systems have become what amounts to storage computers designed to keep the processing computer fed and happy.
The system is likely to need access to several high-speed networks so that data to be processed and already processed data can be moved where it is needed next. As with both memory and storage, this function has evolved into its own separate computing resource. This "network computing" resource applies compression, de-duplication and managing multiple network connections without having to involve the "processing computer" at every step.
Highly interactive tasks
Highly interactive tasks make different use of processing power than batch or processing focused systems. In this case, having a greater number of processors can help a great deal. As with computationally intensive tasks, the processor is no longer the most important feature. Interactive tasks make extensive use of input and output capabilities of a system.
Since interactive tasks do some processing and then send the result out either to the end user's device over the network or to the storage system, it is expected that tasks will often be stalled and the system will have to be very efficient at saving an application's state, flushing the processor's cache and start working on another task. This bursty processing pattern requires a different programming for the "memory computers." Features such as compression and deduplication are deployed largely to reduce the amount of memory required while still offering excellent task-switching capabilities.
As with computationally intensive tasks, the system must have a very sophisticated storage subsystem that makes it possible for code and data that is likely to be needed to be pre-fetched and brought into memory. In this case, however, it is likely that it will need the ability to find and deliver instructions and data to many different applications rather than keeping a single or a small number of tasks fed. Increasingly, this means that DRAM, SSD as well as rotating media tiers of storage must be managed.
High speed network access is even more important in this The system is likely to need access to several high-speed networks so that data to be processed and already processed data can be moved where it is needed next. As with both memory and storage, this function has evolved into its own separate computing resource. This "network computing" resource applies compression, deduplication and managing multiple network connections without having to involve the "processing computer" at every step.
Database and storage intensive tasks
Database and storage intensive tasks make different use of processing power processing intensive or highly interactive tasks. The system is going to be focused more on moving data into and out of the system and less on computational work. In this case, having a greater number of processors is a better idea than having a single very fast processor.
Database and storage intensive tasks do some processing and then send the result out to the storage system. The results are also going to be sent out to the end user's device, but getting things into and out of storage comes first. Reducing or preventing the need to touch the storage subsystem all of the time has lead to database-focused systems to rely on huge memory configurations. Data is kept in memory as much as possible to reduce the impact of storage latency. As NoSQL databases and Big Data applications become increasingly important, the design of the memory subsystem becomes even more important.
While the memory system plays a huge role in database and storage intensive applications, eventually data must be sent out to the storage subsystem. This increases the focus on intelligent storage systems that pre-fetch data and bring it into a system's memory.
When NoSQL and Big Data applications are considered, high speed network access means the difference between acceptable and unacceptable performance. The data is no longer shuttling between the processor, memory and storage. In this application, the data is moving from system to memory, to network, to memory to system and only occasionally to the storage system. When it does move to the storage system, very large amounts of data will need to move into and out of the storage system quickly.
What does this have to do with IBM's announcements?
IBM announced new zEnterprise systems, Power Systems, and new storage systems that clearly are designed to be mixed and matched to make virtualized and cloud-focused applications perform well. Processing, memory, storage and network capabilities have been enhanced by including a significant amount of intelligence. This allows systems to adapt to an ever-changing workload and still perform well.
Furthermore, IBM's management tools have the capability to look into each of these resources and help organizations understand how their operational resources are being used.
While recent announcements from Dell, HP and Oracle/Sun also show a similar focus, IBM's long history of systems, memory, storage, network and storage systems design shows.