Lecture Parallel Storage Systems
Parallel programming is becoming increasingly important since even phones and laptops contain multiple processor cores nowadays. Supercomputers can contain up to several million cores and have become a useful and important tool for a wide range of scientific domains. The analyses and simulations enabled by them have accelerated the process of gaining scientific insight considerably.
The amount of collected and produced data is growing exponentially; it has to be stored, analyzed and processed efficiently since I/O significantly affects overall performance. Vastly different rates of performance development for processors and storage hardware result in a performance imbalance, which makes it even more important to take a close look at storage systems in order to be able to meet future demands.
The lecture will teach the fundamentals of parallel storage systems and I/O; the exercises will allow transferring and applying the acquired skills.
As part of the lecture, we will cover the complete storage stack: Storage devices and networks (hard disk drives, solid-state disks, storage area networks etc.), local and distributed file systems (in kernel and user space, novel concepts like snapshots and deduplication) as well as the I/O interfaces layered on top (POSIX, MPI-IO, NetCDF and ADIOS). Moreover, we will discuss reasons and solutions for performance problems as well as alternative approaches for I/O (such as cloud interfaces). Problems and examples will be motivated using real-world scientific applications.
Course
- Lecture: Tuesday 15:15-16:45
- Exercises: Wednesday 9:15-10:45 and Thursday 9:15-10:45
- Location: Online
- Contact: Michael Kuhn and Michael Blesel
Learning Objective
Participants will learn how parallel applications perform I/O using different programming concepts and how I/O can be optimized. Additionally, they will gain insight into and practical experience with the internals of storage and file systems.
Requirements
Required skills:
- Practical knowledge of a programming language and the ability to create simple applications
Recommended skills:
- Basic knowledge about operating systems
- Basic knowledge about parallel programming
Lecture
- 2021-04-06: Introduction
- 2021-04-13: Storage Devices
- 2021-04-20: File Systems
- 2021-04-27: Modern File Systems
- 2021-05-04: Parallel Distributed File Systems
- 2021-05-11: MPI-IO
- 2021-05-18: Libraries
- 2021-05-25: Optimizations
- 2021-06-01: Performance Analysis
- 2021-06-08: Data Reduction
- 2021-06-15: Grid, Cloud and Peer-to-Peer
- 2021-06-22: Current and Future Developments
- 2021-06-29: SYSTOR 2021 Reviews (Self-Study)
- 2021-07-06: Research Talks
Exercises
- 2021-04-05: Introduction
- Deadline: 2021-04-18, 23:59
- 2021-04-19: Debugging and Checkpoints
- Deadline: 2021-04-25, 23:59
- 2021-04-26: I/O Tools
- Deadline: 2021-05-02, 23:59
- 2021-05-03: Dummy File System
- Deadline: 2021-05-16, 23:59
- 2021-05-17: Memory File System
- Deadlines: 2021-05-23 and 2021-06-06, 23:59
- 2021-06-07: Persistent File System
- Deadlines: 2021-06-13 and 2021-07-04
Literature
- High Performance Parallel I/O (Prabhat und Quincey Koziol)