# Efficient I/O Performance-Focused Scheduling in High-Performance Computing
## 1 Introduction  
As modern applications require more extensive computation and data processing capabilities, the role of large-scale distributed computing systems is becoming more important. In particular, high-performance computing (HPC) systems are becoming common execution environments for modern applications. In HPC systems, millions of active users run various applications, many of which require substantial computational resources. For example, applications in HPC systems often involve complex processes such as training and executing deep learning on large datasets. These tasks require extensive parallel processing across multiple nodes, and can generate numerous independent jobs within a single workflow. In such systems, a single application may be distributed across hundreds of nodes and thousands of computing devices, including central processing units (CPUs) and graphics processing units (GPUs), as well as across storage devices such as non-volatile memory express (NVMe) and serial advanced technology attachment (SATA) SSDs. Thus, efficient job scheduling is a complex yet essential task in HPC systems that plays a critical role in optimizing resource allocation while minimizing idle time and balancing system load [1]. Implementing efficient job scheduling can reduce user wait times and maximize overall throughput. This is accomplished by reducing the time that each job spends in a waiting queue, which enables more effective resource utilization. When resources are used to their fullest potential, HPC systems deliver more reliable performance, thereby enhancing user experience by providing faster and more consistent response times [2]. To provide efficient job scheduling, it is important to focus on factors that can cause bottlenecks and increase latency. One of the biggest contributors to performance bottlenecks in HPC systems is I/O performance [3]. The performance of many modern applications depends on efficient data access and storage operations. This includes database transactions, real-time analytics, and even compute-intensive tasks such as training machine learning models. For example, training even the basic BERT (Bidirectional Encoder Representations from Transformers) model [4] includes 110 million parameters. In addition, these models are often trained on huge datasets such as the Wikipedia corpus and BookCorpus, which total around 16 GB of uncompressed text data. During training, the model reads the data in mini-batches of 32,000 tokens for processing, and must also frequently write checkpoint files and intermediate results ranging from hundreds of megabytes to several gigabytes back to the disk. Thus, degraded I/O performance can significantly increase overall training times. For instance, a tenfold increase in read time can bottleneck the entire training process, leaving expensive computational resources such as GPUs and CPUs idle while waiting for data [5]. This inefficiency can ultimately extend training times from days to potentially weeks. Thus, even with powerful computational resources, inadequate I/O performance can become a critical limiting factor on overall system efficiency [6]. Therefore, in this paper we focus on the I/O characteristics of jobs to develop an efficient scheduling approach. We present an I/O-focused scheduling scheme for large-scale systems such as HPC implementations and cloud data centers. The goals of our scheme are (1) to decrease the total time required for executing jobs by implementing our scheduling scheme, and (2) to fully increase the utilization of HPC resources in order to maximize concurrent job execution. The key idea of our scheme is to prioritize the execution of jobs with the highest IOPS demands at designated time intervals in order to ensure maximum utilization of the available IOPS. To achieve this, our scheme first identifies the IOPS of different applications by analyzing their execution history.