Scheduling parallel I/O operations in multiple bus systems R. Jain, K. Somalwar, J. Werth, J. C. Browne Journal of Parallel and Distributed Computing, 16(4), 352-362, Dec. 1992. ABSTRACT The I/O subsystem was one of the first areas of computer system design to incorporate parallelism. However, enhancement of the parallelism of I/O systems has received little attention in parallel system design. There has been almost no study of the benefit of scheduling parallel I/O operations to increase the multiprocessor system performance. An I/O transfer typically requires a processor or memory, a channel, and an external memory device simultaneously. Parallel I/O thus requires scheduling multiple resources simultaneously, rather than a single resource serially. This paper presents an algorithm for optimal scheduling of batched parallel I/O requests for a common class of shared memory multiprocessors. The algorithm is essentially an optimal k-coloring of a bipartite graph with arbitrary edge weights, where the vertices represent processors and memories and the edges represent I/O transfers. The best previously known k-coloring algorithm has running time O(n5). We show a series of improvements to obtain an algorithm with a running time O(n3(log n + log K)), where n is the number of vertices and K is the maximum edge weight, i.e., the length of the longest I/O transfer. We conclude with an experimental study of the performance of the algorithms.