Korea Digital Contents Society
[ Article ]
Journal of Digital Contents Society - Vol. 22, No. 4, pp.711-718
ISSN: 1598-2009 (Print) 2287-738X (Online)
Print publication date 30 Apr 2021
Received 05 Feb 2021 Revised 29 Mar 2021 Accepted 14 Apr 2021
DOI: https://doi.org/10.9728/dcs.2021.22.4.711

저비용 클러스터 구현 및 성능 분석

박나원1 ; 김동회2, *
1강원대학교 IT대학 전기전자공학과 학사과정
2강원대학교 IT대학 전기전자공학과 교수
Implementation and Performance Analysis of Low Cost Cluster
Na-Won Park1 ; Dong-Hoi Kim2, *
1Undergraduate, Electrical and Electronic Engineering, IT College, Kangwon National University, Chuncheon, Korea
2Professor, Electrical and Electronic Engineering, IT College, Kangwon National University, Chuncheon, Korea

Correspondence to: *Dong-Hoi Kim Tel: +82-33-250-6349 E-mail: donghk@kangwon.ac.kr

Copyright ⓒ 2021 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

초록

본 논문에서는 저비용으로도 복잡한 연산이 가능한 ARM 기반 클러스터를 만들기 위해 라즈베리파이로 클러스터를 구축해 분산컴퓨팅을 구현하였다. 제안하는 클러스터 구축 실험에서는 리눅스 OS의 라즈베리파이 4개를 클러스터링 하기 위해 모두 이더넷 케이블로 라우터에 연결한 뒤 ssh-keygen으로 생성된 key와 각각 개인 키와 공개 키를 교환해 라즈베리파이들을 연결한다. 클러스터 구축에 성공한 뒤 파이썬을 기반으로 분산처리 프로그램을 실행한다. 같은 실험 조건에서 연산의 복잡성을 증가시키면서 실험하였고 클러스터 클러스터 개수가 추가될 때마다 연산의 소요 시간이 감소함을 확인하였다. 제안하는 라즈베리파이 클러스터 연구 결과를 통하여 ARM 기반으로 비용은 저렴하지만 클러스터 개수가 증가하여도 높은 성능을 얻을 수 있음을 확인할 수 있었다.

Abstract

In this paper, in order to make a cluster based on ARM capable of complex computation at low cost, we implemented a distributed computing constructing a cluster with Raspberry Pi. In the proposed cluster, all four Raspberry Pis of the Linux OS are connected to the router with an Ethernet cable, and then the keys generated by ssh-keygen and the private key and public key are exchanged to connect the Raspberry Pis. After successful cluster construction, the distributed processing program based on Python is performed. We experimented with increasing computational complexity, and the time required for computation decreases whenever the number of cluster nodes is added under the same simulation conditions. Through the simulation, we found that the performance of the proposed Raspberry Pis cluster based on ARM was highly improved as the number of clusters was increased even if the cost is low.

Keywords:

Cluster, Raspberry Pi, distributed processing, parallel programming, Python

키워드:

클러스터, 라즈베리파이, 분산처리, 병렬프로그래밍, 파이썬

Ⅰ. 서 론

4차 산업혁명으로 5G 통신기술과 많은 IT 서비스가 등장하며, 컴퓨팅 자원의 수요와 통신 트래픽이 급증하고 있다. 특히 IaaS, PaaS, SaaS 등 클라우드 기술의 등장으로 기존의 온프레미스 방식의 인프라 구조가 변혁을 맞이하고 있으며 애플리케이션도 MSA의 등장으로 유저 단말의 컴퓨팅 자원보다는 클라우드의 컴퓨팅 자원이 중요한 시대가 되었다.

클라우드 기반의 서비스는 중앙 서버(클라우드)에서 서비스를 제공하며 서비스에 필요한 컴퓨팅 연산 또한 맡고 있다. 고객 단말기는 클라우드에 접속하여 상호작용하는 매개체 역할만 하게 된다. 따라서 서비스 제공에 있어서 단말기 성능과 운영체제 등과 같은 HW와 SW의 제약으로부터 자유롭다. 고객 단말은 인터넷만 연결된다면 장소와 기기에 구애받지 않고 서비스를 사용할 수 있다. 클라우드 서비스는 가상화를 기반으로 일부가 고장나도 다른 클러스터의 사용이 가능하므로 서비스의 연속성을 유지할 수 있다. 또 사용량이 증가할 때 자원을 더 많이 사용하고 사용량이 감소하면 자원을 적게 사용할 수 있는 탄력성 또한 갖고 있다. 이러한 장점들로 2019년 IBM의 조사에 따르면 800개의 기업 중 94%가 클라우드 컴퓨팅을 사용하고 있었으며, 2021년까지 전체 클라우드 인프라를 사용하는 기업은 절반 이상이 될 것으로 전망하고 있다.[1]

제안하는 논문에서는 브로드컴의 64비트 ARMv8 기반 CPU의 라즈베리파이3B+를 마스터 노드로 하며 여러 대의 라즈베리파이3B 모델을 워커 노드로 구성하여 저비용으로도 ARM 기반의 좋은 성능을 가진 라즈베리파이 3B+, 3B를 이용하여 클러스터를 구축할 수 있음을 보여주는 좋은 예이다. 클러스터링 구축 후 파이썬을 기반으로 분산처리를 수행하는 MPI4PY를 사용해 PI를 계산하는 프로그램을 실행해 연산 시간을 측정함으로써 클러스터의 개수에 따른 성능을 비교하였다.[2][3]

본 논문의 Ⅱ장과 Ⅲ장에서는 슈퍼컴퓨팅과 라즈베리파이 그리고 분산처리에 관한 용어와 배경을 정리하였다. Ⅳ장에서는 라즈베리파이 클러스터의 구축 과정을 정리하였고 마지막 Ⅴ장과 Ⅵ장에서 MPI4PY를 이용한 PI 연산 프로그램을 동작시키며 클러스터의 구성에 따른 성능을 비교하며 결론을 맺는다.


Ⅱ. 기존 클러스터

클러스터링(clustering)은 수많은 연산 노드를 서로 인접한 거리에 위치시키는 것을 말한다. 한 컴퓨터 클러스터는 느슨하게 혹은 긴밀하게 종속돼 함께 동작하는 컴퓨터의 그룹으로 정의된다. 한 클러스터 내에 존재하는 컴퓨터를 노드(node)라고 하며 한 클러스터 내의 모든 노드들은 정확히 같은 종류의 태스크를 수행한다.[3][4]

클러스터의 한 예로 하둡 클러스터가 있다. 모든 클러스터는 연산의 관점에서 거대한 태스크를 작은 태스크로 분해하고 개별 결과를 다시 모아 최종 결과를 도출하기 위해 병렬성을 사용한다. 이런 유형의 동작을 지원하는 프로그래밍 패러다임을 병렬프로그래밍이라고 한다.[5]

클라우드 인프라와 클라우드 서비스에는 결국 아주 거대한 메인 컴퓨터가 필요하다. 그래서 IDC의 수요가 급증하고 있으며, 통신사는 물론 CP사도 IDC를 확충하고 있다. IDC는 대량의 컴퓨터가 클러스터로 구축되어 트래픽을 분산해 처리하는 거대한 공간이다. 따라서 막대한 발열과 전력 소비가 발생하며 24시간 무중단 서비스를 제공해야 하기 때문에 최고의 신뢰성을 보장해야한다. 그렇다면 IDC의 클러스터를 어떻게 구축해야 효율적일까? 기존의 슈퍼컴퓨터는 x86 계열의 cpu나 IBM powerPC 혹은 GPU를 클러스터링하여 구축해왔다. 그러나 2019년 일본이화학연구소(RIKEN)의 컴퓨터 과학 센터에서 사용하는 슈퍼컴퓨터 후카쿠는 ARM 계열 CPU를 사용해 세계 1위의 처리 속도를 구현했다. 또한 클라우드 인프라와 클라우드 서비스에는 아주 거대한 메인 컴퓨터가 필요하여 IDC의 수요가 급증하고 있다. IDC는 대량의 컴퓨터가 클러스터로 구축되어 트래픽을 분산해 처리한다. 제안하는 라즈베리파이 클러스터는 ARM기반으로 저렴하지만 좋은 성능의 클러스터임을 성능실험에서 증명했다. 향후에 클러스터 노드의 개수가 많아짐에 따라 더 좋은 성능을 보일 것이며, 본 논문의 실험을 통해 성능 확인을 한 후에 향후에 노드수가 급격히 증가하는 IDC 상용화시에도 적용할 수 있을 것이다.[6]

ARM CPU는 크기가 매우 작으며 SoC의 구조로 메모리가 CPU에 붙어있어 시스템의 크기가 매우 작아지는 장점이 있다. 따라서 하나의 서버랙에 많은 시스템을 장착할 수 있었고 7,299,072개의 코어를 사용한 후카쿠가 기존의 1위였던 2,414,592개의 코어로 구성된 미국의 서밋을 누를 수 있었다. 그래서 많은 국가에서 ARM 슈퍼컴퓨터 프로젝트를 추진하고 있다. 또한 대부분의 기업에서 인프라를 클라우드화하고 있다.


Ⅲ. 제안하는 라즈베리파이 클러스터

제안하는 논문에서는 브로드컴의 64비트 ARMv8 기반 CPU의 라즈베리파이3B+를 마스터 노드로 하며 여러 대의 라즈베리파이3B 모델을 워커 노드로 구성했다. 대량의 컴퓨터가 클러스터로 구축될 때 고비용이 필요하지만 저렴한 가격을 맞추기 위해 가성비가 좋은 ARM 계열의 CPU 기반 라즈베리파이 3B+, 3B를 이용하여 클러스터를 구축하면 저비용구축이 가능하다. 따라서 본 논문에서는 라즈베리파이 3B+, 3B를 이용한 ARM 기반으로 클러스터링 구축 후 파이썬을 기반으로 분산처리를 수행하는 MPI4PY를 사용해 PI를 계산하는 프로그램을 실행해 연산 시간을 측정함으로써 클러스터의 개수에 따른 성능을 비교하였다. 또한 제안한 논문은 라즈베리파이 3B+, 3B를 이용한 ARM 기반의 클러스터 구축이고 다른 버전의 라즈베리파이를 이용한 구축은 하드웨어 스펙의 차이에 의한 성능 차이는 존재하고 구축 비용이 다르기 때문에 구축에 사용할 라즈베리파이버전은 사용자의 선택사항이 된다. 최근에 기존 라즈베리 파이4에 8GB 램을 추가한 라즈베리 파이4 모델B 8GB 버전이 출시되었고 가격은 75달러까지 상승하였다.

3-1 라즈베리파이

라즈베리파이(Rasberry Pi)는 영국 잉글랜드의 라즈베리 파이 재단이 학교와 개발도상국에서 기초 컴퓨터 과학의 교육을 증진 시키기 위해 개발한 신용카드 크기의 싱글 보드 컴퓨터이다. 라즈베리파이3 모델 B는 차세대 쿼드 코어 Broadcom BCM2837 64비트 ARMv8 프로세서이고 내장형 BCM43143 WiFi칩을 탑재했다. 라즈베리파이는 운영체제를 설치할 수 있어 하나의 컴퓨터라고 생각할 수 있고 다양한 분야에 사용되고 있다. 응용 예로 UART통신을 이용한 라즈베리파이 리듬 게임이 있고[6] 범용 농기계관리를 위한 스마트어댑터 설계 및 구현한 경우도 있다[7]. 그림1은 라즈베리파이 클러스터에서 마스터 노드로 사용한 라즈베리 파이 3 모델 B+이다[8].

Fig. 1.

Raspberry Pi 3 B+

그림 2는 라즈베리파이 클러스터에서 워커 노드로 사용한 라즈베리 파이 모델 B 이다.

Fig. 2.

Raspberry Pi 3 B

3-2 ARM 아키텍처

1980년대 중반 영국의 아콘 컴퓨터 회사가 개발한 32비트의 축소 명령 집합 컴퓨터로 ARM 아키텍처는 임베디드 기기에 많이 사용되는 RISC 프로세서이다. 비교적 낮은 비용과 전력 소비로 실행 능력이 높은 프로세서이고 ARM CPU는 모바일 시장 및 싱글보드 컴퓨터로 불리는 개인용 컴퓨터에서 뚜렷한 강세를 보인다[9].

3-4 제안하는 클러스터 구축순서

그림 3은 제안하는 클러스터 구축 순서도를 보여주고 있다. 가장 먼저 ssh와 원격 연결을 하고 클라우드 노드들을 준비하고 IP 주소를 확인한다. 그리고 나서 파이썬3를 위한 MPI4PY를 설치한다. 여기에서, MPI4PY는 ‘MPI for Python’의 약자이며 파이썬에서 MPI 바인딩을 제공한다. 이는 멀티 프로세서로 구성된 컴퓨터를 사용하는 어떤 파이썬 프로그램도 실행되도록 한다. 이 패키지는 MPI-1/2/3 사양 위에 구축됐다. MPI4PY는 파이썬에서 병렬 프로그래밍에게 객체지향 인터페이스를 제공한다. MPI4PY는 어떤 파이썬 객체에도 지점 간 통신(Point-to-Point communication)과 군집 통신(Collective Communication)을 지원한다[3]. 그 후에 ssh-keygen 키를 발생시키고 교환한다. 공공 키를 pi001에 복사하고 추가한 후 클러스터 빌딩 성공 여부를 확인한 후 성공했으면 작업을 종료하고 실패했으면 IP 주소 확인과정부터 다시 시작하게 된다.

Fig. 3.

Proposed cluster construction flow chart

여기서, ssh(secure shell)는 PGP와 마찬가지로 공개 키 방식의 암호방식을 사용하여 원격지 시스템에 접근하여 암호화된 메시지를 전송할 수 있는 시스템이다. 따라서 LAN상에서 다른 시스템에 로그인할 때 스니퍼에 의해서 도청당하는 것을 막을 수 있다. 먼저 4개의 라즈베리파이의 MicroSD 카드에 balenaEtcher를 이용해 라즈비안 OS 이미지를 설치한다. 이 클러스터 노드에는 라즈비안 liteOS를 설치했다. 그 다음 라즈베리파이마다 ssh라는 빈 파일을 만들어 준 뒤 Xshell 프로그램을 이용해 라즈베리파이에 로그인한다[10]. 아래에서는 구체적인 구축 과정을 상세히 설명한다.

3-5 클러스터 노드 준비

각 라즈베리파이에는 유일한 hostname이 필요하기 때문에 hostname을 설정해 준다. 각각의 라즈베리파이들에 pi002, pi003, pi004라는 이름으로 설정하고 master노드는 pi001로 한다.

Fig. 4.

change hostname

3-6 라즈베리파이의 IP주소

모든 관리 대상 네트워크 스위치와 라우터는 정적 IP주소를 위한 범위를 가진다. 클러스터의 노드들을 위한 몇가지 주소를 선택하고 파이를 이더넷 케이블로 라우터에 각각 연결한 뒤 /etc/network/interfaces파일을 업데이트한다. 관리 대상 네트워크 스위치나 와이파이 라우터의 IP주소를 게이트 웨이 값으로 사용한다.

Fig. 5.

Raspberry Pi cluster LAN connection

라즈베리파이들에게 IP주소를 할당해 주었다면 Xshell을 이용해 라즈베리파이에 접속하고 sudo nmap –sn 192.168.0.* 명령어를 이용해 파이의 네트워크를 스캔해 확인한다.[3]

3-7 라즈비안에서 파이썬 3을 위한 MPI4PY 설치

Xshell에서 pi001,pi002,pi003,pi004에 각각 접속하여 sudo apt-get install python3-mpi4py –y명령어를 입력하여 설치한다. mpirun hostname 명령어를 통해 설치여부를 확인한다.

3-8 자동 인증을 위한 ssh-keygen 키 교환

ssh-keygen 유틸리티는 인증 키를 생성하기 위해 이용된다. 어떤 2개의 리눅스 컴퓨터 간에 인증을 설정하기 위해 다음 세단계가 수행하였다.

  • 1. ssh-keygen을 사용해 두 호스트를 위한 키를 생성한다.
  • 2. 호스트 간에 키를 원격으로 복사함으로써 호스트 간 키를 교환한다.
  • 3. 인증된 호스트 목록에 키를 추가한다.

이 단계까지 수행되면, 다음 두 단계를 패스워드 없이 수행할 수 있다.

  • 1. 원격 호스트에 로그인한다.
  • 2. 원격 호스트에서 쉘(shell)명령어를 실행한다.

셸 스크립트에서 ssh 명령을 사용하면 원격 호스트에서 작업을 자동화할 수 있고 pi001을 마스터노드로 사용하고 있으므로 다른 노드에서 pi001의 명령을 원격으로 실행하거나 그 반대로 실행한다. 4개의 노드로 구성된 클러스터를 구축했으므로 키 교환을 위한 호스트쌍은 (pi001,pi002), (pi001,pi003), (pi001,pi004)이다. 키를 교환하기 위한 keygen을 생성하기 위해 Xshell에 들어가 pi001에 접속한다. 홀에서 ssh-keygen명령을 실행한다[3]. 다음 그림 6은 pi001의 ssh-keygen 생성 결과이다. 생성할 때마다 다른 형태로 생성된다.

Fig. 6.

pi001 ssh-keygen

그림 7은 pi002의 ssh-keygen 생성 결과이고 생성할 때마다 다른 형태로 생성된다. 그림 8은 pi003의 ssh-keygen 생성 결과이고 생성할 때마다 다른 형태로 생성된다. 그림 9는 pi004의 ssh-keygen 생성 결과이고 생성할 때마다 다른 형태로 생성된다. 키가 생성됐다면 다음으로 pi001의 .ssh로 이동하여 ls 명령어를 이용해 개인키 id_rsa와 공개키 id_rsa.pub을 확인하여 공개 키를 원격으로 로그인하여 명령을 실행할 호스트에 복사한다. 작성된 것을 새로운 파일로 복사해놓는다. 인증 없이 원격으로 접속하기 위해서는 만든 파일의 내용을 다른 호스트의 authorized_keys 파일에 추가한다. 이 과정을 4번 반복하고 pi001에 pi002, pi003, pi004의 공개키를 복사하고 인증키 목록에 공개 키를 추가한다.

Fig. 7.

pi002 ssh-keygen

Fig. 8.

pi003 ssh-keygen

Fig. 9.

pi004 ssh-keygen

3-9 분산처리 시스템

분산처리시스템은 여러 대의 컴퓨터에 작업을 나누어 처리하여 그 내용이나 결과가 통신망을 통해 상호 교환되도록 연결되어 있는 시스템이다.

이는 서로 다른 기능이나 자원을 갖는 여러 노드가 서로 연결되어 있으므로 다른 지역의 프로세서를 사용하고 있는 사용자들도 프로그램이나 자료 등의 자원을 사용할 수 있다. 분산 시스템은 시스템 내에 있는 각종 자원의 투명성을 보장하는 것인데, 이 투명성이란 다수의 컴퓨터로 구성되어있는 시스템을 마치 한 대의 컴퓨터 시스템인 것 같이 보이는 것을 말한다[11].

3-10 라즈베리파이 클러스터 분산처리

클러스터의 모든 노드에 동일한 디렉터리 구조를 생성하고 입력할 코드를 디렉터리의 소스파일에 저장하고 코드파일을 scp를 사용해 모든 노드의 소스파일 디렉터리에 복사한다.


Ⅳ. 제안하는 라즈베리파이 클러스터 실험결과

4-1 라즈베리파이 클러스터 구축 상태

제안하는 라즈베리파이 클러스터의 노드들은 모두 ssh로 원격 연결되어 구축되었다. 본 논문에서의 모의 실험 환경으로 1개의 호스트 노드와 3개의 워커노드로 구성하였다. 라즈베리파이 3B, 3B+는 쿼드코어가 탑재되어 있어 하나의 노드에 4개의 코어가 존재하므로 구축한 클러스터를 나타냈을 때 16개가 호출된다.

Fig. 10.

Raspberry Pi cluster construction status

Fig. 11.

Raspberry Pi cluster node

4-2 성능 실험 프로그램

실험에 사용한 파이를 계산하는 프로그램은 병렬 프로그래밍을 하는 병렬프로그램이고 클러스터의 개수보다 같거나 작게 Rank로 분해되어 동시에 실행된다. 현재 클러스터의 개수는 4개이기 때문에 Rank0,1,2,3의 4개로 순차를 정해 분해된다. Rank는 클러스터 개수에 따라 클러스터가 1개로 이루어졌을 때 Rank0, 2개로 이루어졌을 때 Rank0, Rank1과 같이 Rank의 번호순서대로 할당되기 때문에 0~n-1로 순차적으로 번호가 매겨진다. 여기서 n은 클러스터의 개수를 의미한다.

Fig. 12.

Parallel program

제안하는 클러스터는 한 클러스터에 4개의 프로세스가 실행 가능하므로 최대 16개의 프로세스가 동시에 실행될 수 있다. 4개의 Rank로 나뉘어져 들어온 프로그램이 16개의 코어로 동시에 실행된다. 실험은 라즈베리파이 개수에 따라 연산의 복잡성을 달리하여 진행한다. 라즈베리파이의 코어의 개수를 16(클러스터 4개), 12(클러스터 3개), 8(클러스터 2개), 4(클러스터 1개)로 실험군을 나누었고, 연산의 복잡성은 프로그램 소스 중 pi를 구하기 위한 알고리즘에서 반복되는 횟수를 뜻하는 nsteps의 값을 변화시키며 증가시켰다[12].

4-3 라즈베리파이 개수에 따른 성능 실험

그림 13은 소스의 nsteps값을 10 × 106로 변경하여 실행한 결과이다. 클러스터 개수가 1개일 때 약 14초, 2개일 때 약 6초, 3개일 때 약 4초, 4개일 때 약 3초가 소요되었다. 그림 14그림 13 값을 그래프로 나타낸 것이다. 결과값은 소수 둘째 자리에서 반올림하였다. 클러스터의 개수가 증가할 때 마다 연산 시간이 줄어든 것을 알 수 있다.

Fig. 13.

Completion time according to the number of nodes when nsteps=10 × 106

Fig. 14.

Completion time comparison according to the number of nodes when nsteps=10 × 106

그림 15는 소스의 nsteps값을 10 × 107로 변경하여 실행한 결과이다. 클러스터 개수가 1개일 때 약 130초, 2개일 때 약 68초, 3개일 때 약 46초, 4개일 때 약 34초가 소요되었다. 그림 13에 비해 nsteps값이 증가했기에 전체적으로 연산시간이 증가했지만 클러스터 개수에 따른 차이가 잘 나타나고 있다. 그림 16그림 15 값을 그래프로 변환해서 나타낸 것이다.

Fig. 15.

Completion time according to the number of nodes when nsteps=10 × 107

Fig. 16.

Completion time comparison according to the number of nodes when nsteps=10 × 107

그림 17는 소스의 nsteps값을 10 × 108로 변경하여 실행한 결과이고 그림 18그림 17 값을 그래프로 변환해서 나타낸 것이다.

Fig. 17.

Completion time according to the number of nodes when nsteps=10 × 108

Fig. 18.

Completion time comparison according to the number of nodes when nsteps=10 × 108

상기의 실험 결과들에서 nsteps가 10 × 106 일 때, 클러스터 1개에서 4개로 연산을 실행한 결과 1개일 때와 4개일 때 10초 정도의 차이를 보인다. 하지만 nsteps의 수가 10 × 107, 10 × 108로 증가하면서 클러스터 1개와 4개의 연산완료 시간의 차는 약 100초, 약 1000초이다. 연산이 복잡해짐에 따라 클러스터 개수에 따른 성능 변화가 뚜렷하게 나타나고 있다. 하지만 상기의 그림 13에서 그림 18의 모든 실험 결과들에서 공통적으로 발견되는 것이 클러스터 개수가 증가하면 연산 시간이 작아진다는 사실이 확인되었다. 따라서 클러스터 개수를 더 증가시킨다면 연산 시간도 더 작아진다는 것을 본 논문의 실험 결과로부터 유추할 수 있다.


Ⅴ. 결 론

본 논문에서는 저비용으로 복잡한 연산이 가능한 클러스터를 만들기 위해 라즈베리파이로 클러스터를 구축하였다. 분산처리 프로그램을 실행시켜 클러스터 개수에 따른 성능을 실험하고, 클러스터 구축에 성공한 뒤 병렬 프로그래밍을 하는 파이썬 코드를 작성하여 소스를 실행하였다. 소스의 nsteps값을 10 × 106, 10 × 107, 10 × 108로 변경하여 연산의 복잡성을 증가시켰고 각각의 조건에 클러스터노드의 개수를 1개, 2개, 3개, 4개로 추가해가며 분산처리 성능을 비교했다. 모든 조건에서 클러스터 개수가 추가될 때마다 연산의 소요시간이 감소하였고 클러스터 개수에 따라 성능이 향상됨을 알 수 있었다. 향후에 클러스터 개수를 더욱 확대하고 수렴하는 최대 클러스터 개수도 찾을 수 있을 예정이다. 또한 쿠버네티스를 이용해 클러스터를 구축하고 클러스터의 운영을 자동화하는 시스템을 구축할 계획이다.

References

  • https://www.ibm.com/cloud/learn/cloud-computing
  • Hyo-Kwan Kim and Won-Yong Hwang, Proposal For Improving Data Processing Performance Using Python, Journal of Korea Institute of Information, Electronics, and Communication Technology, Vol. 13, No. 4, pp. 306-311, 2020.
  • Ashwin Pajankar, Raspberry Pi Supercomputing and Scientific Programming, ACORN, 2018 [https://doi.org/10.1007/978-1-4842-2878-4]
  • Joong-Youn Lee and Duksu Kim, Visualization Pipeline Design and Implementation for Cluster-based Scientific Visualization Tools, Vol. 25, No. 6, pp. 285-293, 2019. [https://doi.org/10.5626/KTCP.2019.25.6.285]
  • H. J. Jeong, T. H. Kang, G. S. Kim, Y. H. Shin and J. K. Jeong, Shared Distributed Big-Data Processing Platform Model : a Study, KIISE Transactions on Computing Practices (KTCP), Vol. 22, No. 11, pp. 601-613, 2016. [https://doi.org/10.5626/KTCP.2016.22.11.601]
  • H. J. Yang, B. J. Kim and D. H. Kim, Implementation of Raspberry Pi Rhythm Game using UART Communication in the different Operating Systems, Journal of Digital Contents Society, Vol. 20, No. 3, pp. 647-655, Mar. 2019. [https://doi.org/10.9728/dcs.2019.20.3.647]
  • J. H. Lee, Y. W. Cha and C. H. Kim, Raspberry Pi Based Smart Adapter's Design and Implementation for General Management of Agricultural Machinery, Journal of Korean Institute of Information Technology, Vol. 16, No. 12, pp. 31-40, 2018. [https://doi.org/10.14801/jkiit.2018.16.12.31]
  • Raspberry Pi Zero: the $5 computer, Raspberry Pi Foundation
  • ARM Architecture Reference Manual 2nd Edition, David Seal, Addison-Wesley, Dec. 2000.
  • Secure Shell Second Edition, Blokdyk and Gerardus, 5starcooks, July 2018.
  • Advances in Distributed and Parallel Processing System Paradigms and Methods #1, Tyrer, Harry W., Univ of Chicago Pr, 1994.
  • Parallel programming in Python: mpi4py (part 2), Xin Li, PDC Center for High Performance Computing, Nov. 2019.

저자소개

박나원(Na-Won Park)

2017년 3월~2021년 2월 : 강원대학교 IT대학 전기전자공학과

※관심분야:네트워크, 클라우드 등

김동회(Dong-Hoi Kim)

2005년 : 고려대학교 전파공학과 (공학박사)

1989년 1월~1997년 1월 : 삼성전자 전임연구원

2000년 8월~2005년 8월 : 한국전자통신연구원 선임연구원

2006년 3월~현 재 : 강원대학교 IT대학 전기전자공학과

※관심분야:무선 네트워크 및 사물인터넷(IoT) 등

Fig. 1.

Fig. 1.
Raspberry Pi 3 B+

Fig. 2.

Fig. 2.
Raspberry Pi 3 B

Fig. 3.

Fig. 3.
Proposed cluster construction flow chart

Fig. 4.

Fig. 4.
change hostname

Fig. 5.

Fig. 5.
Raspberry Pi cluster LAN connection

Fig. 6.

Fig. 6.
pi001 ssh-keygen

Fig. 7.

Fig. 7.
pi002 ssh-keygen

Fig. 8.

Fig. 8.
pi003 ssh-keygen

Fig. 9.

Fig. 9.
pi004 ssh-keygen

Fig. 10.

Fig. 10.
Raspberry Pi cluster construction status

Fig. 11.

Fig. 11.
Raspberry Pi cluster node

Fig. 12.

Fig. 12.
Parallel program

Fig. 13.

Fig. 13.
Completion time according to the number of nodes when nsteps=10 × 106

Fig. 14.

Fig. 14.
Completion time comparison according to the number of nodes when nsteps=10 × 106

Fig. 15.

Fig. 15.
Completion time according to the number of nodes when nsteps=10 × 107

Fig. 16.

Fig. 16.
Completion time comparison according to the number of nodes when nsteps=10 × 107

Fig. 17.

Fig. 17.
Completion time according to the number of nodes when nsteps=10 × 108

Fig. 18.

Fig. 18.
Completion time comparison according to the number of nodes when nsteps=10 × 108