I was recently at SC15, an international conference for high-performance computing, networking, storage, and analysis. SC15 has grown over the years and shows off some of the more interesting gear I have seen. High-performance computing (HPC) has taken off within the modern data center, whether via traditional HPC clusters, 150-teraflop machines, or even massive arrays of GPUs. HPC is here to stay. Keeping up with the processor is very hard for many storage subsystems, which is one reason caching is very important to the subsystems. At SC15, I was introduced to two types of storage, one based on specialized hardware and one based on common, off-the-shelf components. These two very different approaches, with very different results, are used for exactly the same purpose: to speed up HPC reads and writes.
There are two ways to improve storage performance for HPC. The first is to replace storage with higher-speed storage, and the second is to add caching layers. In some cases, the higher-speed storage could also be a caching layer. SwiftStack is one that requires a caching layer (perhaps just a Vagrant server or two), and Mangstor is a replacement storage but also a caching layer. Mangstor is very much like EMC DSSD, and SwiftStack is a different beast entirely, as it is an object store.
Mangstor is your traditional approach to improving storage performance. It is an all-flash system that links to your servers using Mellanox InfiniBand. Actually, if your HPC cluster already uses InfiniBand as an interconnect, then to achieve maximum performance, you will need to have a second InfiniBand dedicated to the Mangstor network (or you can share one InfiniBand network if you can live with storage and data passing over the one network). Unlike DSSD, which extends the PCIe bus to the DSSD device, Mangstor becomes part of your existing network structure using off-the-shelf components plus the Mangstor Non-Volatile Memory Express cards. In addition, its PCIe-based flash storage can also be added into each server to alleviate any networking entirely, but you do lose file-sharing capability.
SwiftStack, on the other hand, solves a completely different problem. An object store is ideal for HPC, as there are usually millions of little files used within a cluster. Object store handles little files and big files fairly well; the number of files for object store exceeds most file systems. HPC benefits by not needing to shard storage, thereby speeding up access. However, SwiftStack and many object stores benefit from HTTP caching techniques instead of flash-style caching.
There Is More than HPC
There are certainly more storage configurations that require either high-performance storage tiers or a large number of files. One example is an offshoot of HPC used in big data platforms such as Hadoop. While some would argue that Hadoop is an HPC platform, others would not. However, it matters not, as Hadoop and other analytical engines for structured and unstructured data benefit from either being made to manipulate lots of small files (à la SwiftStack via a caching layer) or by being extremely close to a large amount of data (à la Mangstor). If you need both, then combining them is always an option.
Let us consider the following storage possibilities. We can connect our storage via standard networking, Fibre Channel, or high-speed switching (100 GB or perhaps InifiniBand), or even directly through the PCIe bus. If we go through a nontraditional storage, we are connecting directly through a PCIe extender or through high-speed networking. In all of these cases, there are often several caching layers, as seen in Figure 1.
Nearly all storage services benefit from server-side cache. This happens at various levels within the hardware and software stack. They end up optimizing the data before or after it hits the wire. A high-speed cache such as EMC DSSD (via PCIe Extender) or Mangstor (via InfiniBand) pushes the cache clearly into the physical storage layers. Even SwiftStack can make use of a physical storage caching server (such as Vagrant) or server-side caches.
It is quite possible to layer caching technologies on top of other caching technologies, as long as each cache layer adds something new. Some offer a read cache, others a write cache, and some even do write coalescing. Each layer must be different to add benefit. Mangstor can act as a high-speed, very large caching layer where reads and writes never leave the cache once data is there in front of other storage options. SwiftStack plus a web caching engine will provide high-speed access as well.
While SwiftStack and Mangstor are different technologies, they are both extremely useful for HPC and big data, and each has its place. Mangstor can act as storage or a caching layer, while SwiftStack is storage and often requires a caching layer. Where you put that layer depends on what you want to achieve as well as on other tools already in use.
They are different beasts, often seen as existing on opposite ends of the spectrum, but there is a place for object storage and extremely high-speed storage within nearly every storage architecture. You may actually need both and provide even more flexibility.