As the number of nodes in high performance computing (HPC) systems increases, parallel I/O becomes an important issue: collective I/O is the specialized parallel I/O that provides the function of single file based parallel I/O. Collective I/O in most message passing interface (MPI) libraries follows a two phase I/O scheme in which the particular processes, namely I/O aggregators, perform important roles by engaging the communications and I/O operations. This approach, however, is based on a single core architecture. Because modern HPC systems use multi-core computational nodes, the roles of I/O aggregators need to be re-evaluated.
First, the issues in collective I/O with heterogeneous environments are investigated. Specifically, a new scheduling policy, Heuristic Node Reordering (HNR), is proposed in order to reduce the communication costs in collective I/O in multi-core cluster systems with different numbers of cores per node. When an HPC system uses non-exclusive scheduling, a different number of CPU cores per node can be assigned for MPI jobs; thus, I/O aggregators experience a disparity in their workloads and communication costs. Because the communication behaviors are influenced by the sequence of the I/O aggregators and by the number of CPU cores in neighbor nodes, changing the order of the nodes affects the communication costs in collective I/O. However, there have been few studies that seek to incorporate steps that allow the adequate determination of node sequences. In this study, it was found that an inappropriate order of nodes results in an increase in the collective I/O communication costs. In order to address this problem, the use of specific heuristic methods is proposed to regulate the node sequence. The performance measurements indicate that the proposed scheme achieves its goal of preventing performance degradation in the collective I/O process. For instance, in a multi-core cluster system using the Lustre file system, the read bandwidth of the MPI-Tile-IO was improved by 7.61\% to 17.21\% and the write bandwidth of the benchmark was also increased by 17.05\% to 26.49\%.
Secondly, the effect of the processor affinity for collective I/O was studied in a homogeneous environment. Although there have been many previous studies that have focused on the improvement of the performance of collective I/O, it is difficult to locate a study regarding the assignment scheme for I/O aggregators that considers multi-core architectures. In this research, it was discovered that the communication costs in collective I/O differed according to the placement of the I/O aggregators, where each node had multiple I/O aggregators. The performance with the two processor affinity rules was measured and the results demonstrated that the distributed affinity rule used to locate the I/O aggregators in different sockets was appropriate for collective I/O. Because there may be some applications that cannot use the distributed affinity rule, the collective I/O scheme was modified in order to guarantee the appropriate placement of the I/O aggregators using the accumulated affinity rule. The performance of the proposed scheme was examined using two Linux cluster systems and the results demonstrated that the performance improvements were more clearly evident when the computational node of a given cluster system had a complicated architecture. Under the accumulated affinity rule, the performance improvements between the proposed scheme and the original MPI-IO were up to approximately 26.25\% for the read operation and up to approximately 31.27\% for the write operation.
고성능 시스템(HPC)의 노드 수가 증가함에 따라 병렬 I/O의 중요성이 증대되고 있으며 병렬I/O의 특수한 형태인 집합 I/O는 단일 파일 기반의 병렬 I/O를 지원하고 있다. 대부분의 MPI 라이브러리에서 제공되는 집합 I/O는 2단계 I/O 기법을 따르고 있으면 여기서는 특수 프로세스인 I/O aggregator가 통신과 I/O에 관여하는 중요한 역할을 수행한다. 이러한 방법들은 싱글 코어 기반 아키텍처에 기반하고 있으나 최근의 HPC 시스템은 멀티 코어 기반의 계산 노드를 사용하고 있는 관계로 I/O aggregator의 역할을 다시 살펴볼 필요가 있다.
첫째, 이질적인 환경에서 집합 I/O가 갖게 되는 주요 사안에 대해 알아 보았다. 특히 노드당 상이한 수의 코어를 갖는 멀티 코어 클러스터 시스템에서의 집합 I/O가 갖는 통신 시간을 줄이기 위하여 새로운 스케쥴링 기법으로 휴리스틱한 노드 재배열(HNR)을 제안한다. HPC 시스템이 비배타적 스케쥴링을 이용하는 경우, 노드별로 서로 다른 수의 CPU 코어가 MPI 작업에 할당 될 수 있고 I/O aggregator들은 불균등한 워크로드와 통신량을 갖게 된다. 통신은 I/O aggregator의 순서와 이웃 노드들의 코어 수에 영향을 받게 되므로 노드의 순서를 바꾸는 것은 집합 I/O의 통신 비용에 영향을 주게 된다. 그러나 이와 관련되어 적절한 노드 순서를 정하는 방법에 대한 연구가 진행되지 않고 있다. 본 연구에서 부적절한 노드 순서가 집합 I/O 통신 비용을 증가시킴을 확인하였고 이를 해결하기 위하여 노드의 순서를 조절하는 휴리스틱한 방법을 제안한다. 성능 측정 결과 제안된 방법이 집합 I/O의 성능 저하를 방지하려던 본연의 목적을 이루었음을 확인할 수 있었다. 특히 Lustre 파일 시스템을 이용하는 멀티코어 기반 클러스터 시스템에서 MPI-Tile-IO의 읽기 대역폭이 7.61\%에서 17.21\%, 쓰기 대역폭은 17.05\%에서 26.49\%까지 향상되는 결과를 확인할 수 있었다.
둘째, 프로세서 친밀도(Processor Affinity)가 동질적인 환경에서 집합 I/O에 미치는 영향을 살펴 보았다. 집합 I/O의 성능 향상에 중점을 둔 사전 연구는 많았으나, 멀티코어 환경을 고려하고 I/O aggregator의 배치를 염두에 둔 연구는 없었다. 본 연구에서는 노드들이 복수의 I/O aggregator를 갖는 경우, I/O aggregator의 위치에 따라 성능에 차이가 발생함을 확인하였다. 두 종류의 프로세서 친밀도를 이용하는 경우의 성능을 측정한 결과, 각 CPU 소켓(칩)에 I/O aggregator를 분산시키는 분산 Affinity 방법이 집합 I/O에 유용한 것으로 나타났다. 그러나 이와 같은 분산 affinity 방법을 이용할 수 없는 어플린케이션이 존재할 수 있으므로 누적 affinity 방법 내에서 사용할 수 있도록 MPI라이브러리를 수정하여 I/O aggregator를 적절한 위치에 배치할 수 있도록 하였다. 두 종류의 Linux 클러스터 시스템에서 성능을 측정한 결과 보다 복잡한 노드 아키텍쳐를 갖는 시스템에서 성능 개선 효과가 더 컸으며 누적 affinity를 기준으로 제안된 방법이 읽기 동작은 약 26.25\%, 쓰기 동작은 약 31.27\%까지 성능 개선을 보여주었다.