Abstract

Data is the fuel for analytics of all the emerging technologies of Internet-of-Things (IoT) and cloud computing. Data management plays a critical role in delivering real-world impact. Three major components of data management are data generation, data categorization, and data storage. It is challenging for any systems to efficiently manage data to achieve low latency, high throughput, and good endurance. However, for efficient data management, we need to have a good ecosystem with fine co-ordination among multiple facets of the system such as parallel computing, hierarchical caching and tiering of memory, and low Input/Output (I/O) latency storage devices. Thus, addressing bottlenecks at each layer is important for accelerating overall production-scale deployments. However, the existing data management solutions for previously used applications and Hard Disk Drive (HDD) systems are not suitable for evolving cloud infrastructures, big-data workloads, and flash storage systems. Therefore, in this dissertation, we focus on studying resource management for cloud and data centers at three layers: application consolidation, workload data management, and flash-based data storage. We mainly concentrate on investigating big-data processing and high-performance computing platforms. For our research, we develop and deploy cutting-edge technologies such as containerized virtualization with Docker, high-performance machine learning applications, scalable big-data infrastructures such as Spark, space-efficient probabilistic data structures such as Bloomfilters and modern flash-based technologies such as multi-stream and key-value Solid State Drives (SSDs). Firstly, as different applications have different behaviors and resource requirements, in this work, we analyze and compare the performance of applications running in the cloud with VMs and Docker containers. By using fast back-end storage, the performance benefits of a lightweight container platform can be leveraged with quick I/O response. Nevertheless, the performance of simultaneously executing multiple instances of same or different applications may vary significantly with the number of containers. The performance may also vary with the nature of applications because different applications can exhibit different I/O behavior on SSDs in terms of I/O types (read/write), I/O access pattern (random/sequential), and I/O size. Therefore, we investigate and analyze the performance characteristics of both homogeneous and heterogeneous mixtures of I/O intensive containerized applications, operating with high-performance NVMe SSDs and derive novel design guidelines for achieving an optimal and fair operation of both homogeneous and heterogeneous mixtures. As more and more data centers in cloud storages are now replacing traditional HDDs with enterprise SSDs. Both developers and users of these SSDs require thorough benchmarking to evaluate their performance impacts. I/O performance with synthetic workload or classic benchmark varies drastically from real I/O activities in the data center. Thus, we propose a new framework, called Pattern I/O generator (PatIO), to collectively capture the enterprise storage behavior that is prevailing across assorted user workloads and system configurations for different database server applications on flash-based storage. Secondly, we further develop a new Docker controller for scheduling workload containers of different types of applications. Our controller decides the optimal batches of simultaneously operating containers in order to minimize total execution time and maximize resource utilization. Meanwhile, our controller also strives to balance the throughput among all simultaneously running applications. For optimal operation of any application, it is important to have proper data caching or tiering of memory. Data temperature identification is an important issue of many fields like data caching and storage tiering in modern flash-based storage systems. Therefore, we propose a novel data temperature identification scheme that adopts bloom filters to efficiently capture both frequency and recency of data blocks and accurately identify the exact data temperature for each data block. Thirdly, the demand for high speed 'Storage-as-a-Service' (SaaS) is increasing day-by-day. SSDs are commonly used in higher tiers of the storage rack in data centers. Also, all-flash data centers are evolving to serve cloud services better. Although SSDs guaranty better performance when compared to HDDs, but SSDs endurance is still a matter of concern. Storing data with a different lifetime in an SSD can cause high write amplification and reduce the endurance and performance of SSDs. Recently, multi-stream SSDs have been developed to enable data with a different lifetime to be stored in different SSD regions and thus reduce write amplification. To efficiently use this new multi-streaming technology, it is important to choose appropriate workload features to assign the same streamID to data with similar lifetime. However, we found that streamID identification using different features may have varying impacts on the final write amplification of multi-stream SSDs. Therefore, we develop a portable and adaptable framework to study the impacts of different workload features and their combinations on write amplification. On the other hand, even with the fast performing SSD, I/O performance continues to be the bottleneck in high-performance computing (HPC) systems. One of the main reasons lies in the fact that the conventional SSDs are block-based devices, which require conversions of application data into blocks to store data. Such intermediate data conversions are time-consuming and impede utilizing the full performance of NVMe SSDs for parallel HPC applications. So, we propose a novel Key-Value based Storage infrastucture for Parallel Computing (KV-SiPC) - a new method for multi-threaded OpenMP applications to use NVMe Key-Value SSDs. KV-SiPC simplifies the application data management by removing intermediate layers from the I/O stack of operating system (OS) kernel. Specifically, we design a new HPC key-value API (Application Program Interface) to convert a file-based application directly to a key-value based multi-threaded application. Apart from traditional parallel compute threads of HPC, in KV-SiPC we also have additional parallel data threads which are managed on user-end at program layer. Such fine-grained control of parallel compute as well as parallel data processing results in better resource utilization. We further develop a key-value concurrency manager that integrates OpenMP pragmas with the key-value Linux kernel device driver (KDD) to maintain memory mapping and thread safety when running a multi-threaded application on KV-SSDs. Thus, in this research, we aim to develop insights for a wide range of opportunities in the enterprise by improving both performance and reliability in cloud and data center systems.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call