분산 및 병렬 처리 시스템
들어가기 전에
분산 시스템은 PC가 보급되고 인터넷이 활성화되면서 개념이 생겨났다.
-
병렬 처리 (Parallel Processing) : 하나 이상의 연산을 동시에 수행해 연산 속도를 증가시키는 방법
-
분산 시스템 : 여러 개의 컴퓨터가 동일한 태스크를 처리하기 위해 네트워크 상에서 서로 통신하며 협력하는 것
예) 거대 웹사이트 저장소, P2P 파일 공유 등
- 병렬처리 시스템은 프로세서를 늘려서
여러 일을 동시에
, 더 빨리 처리 할 수 있게 해주는 시스템- 병렬처리는 “동시에 여러 일”을 처리하는 것
- 분산처리 시스템은 하나의 컴퓨터 시스템이 처리 또는 제어하고 있던 기능을
여러 개의 컴퓨터 시스템에 분산하여 처리
하는 것.- 분산처리는 “하나의 일을 동시에 여럿이서” 처리하는 것
네트워크 컴퓨터 구성(프로세서의 결합도)
- 네트워크란 서로 독립된 시스템이 빠른 통신 채널을 이용해 상호 통신할 수 있도록 지원하는 시스템이다.
- 컴퓨터로 처리해야 할 업무의 비중에 맞는 중소형 컴퓨터 여러 대를 구축하고 이들 컴퓨터를 네트워크로 연결해서 사용한다.
1. 강결합 시스템(병렬 처리 시스템)
Tightly Coupled System
- 여러개의 프로세서가 하나의 메모리를 공유하는
다중 프로세서(Multi-processor)
구조 - 프로세서들이 메모리를 공유,
프로세서간 통신은 공유 메모리
를 통해 이루어짐 - 공유 메모리를 차지하려는 프로세서 간의 경쟁 최소화가 주요 고려 대상
- 이러한 단일 프로세서 컴퓨터에 병렬기법 도입하여 운영체제를 단일 컴퓨터의 운영에서 벗어나
여러 작업을 동시에
처리 할 수 있게하는 병렬처리 시스템이 나타나게 되었다. - 병렬처리 시스템은
컴퓨터를 병렬로 연결
하거나,CPU등을 병렬로 연결
하여다수의 프로세서
들이다수의 프로그램들을 분담
하여동시에 처리
하는 방식 - 예시: 한글워드 프로세서를 사용하면서 윈도미디어 플레이어로 음악을 듣고 동시에 메신져를 켜놓을 수 있는 것
멀티 태스킹
,컬티 프로세싱
,멀티 스레딩
이 이에 해당한다.
프로세싱 기법에 따른 구분
Asymmetric multiprocessing
- 하나의 master 프로세스가 다른 프로세스들을 관리감독하는 형태
- master 프로세서가
Load balancing
을 다 결정한다.
Symmetric multiprocessing (SMP)
- 각각의 프로세스가 동등한 권한으로 프로세싱하는 형태
- 각각의 프로세서는 각자 스케줄링을 진행한다.
- 프로세스들은 하나의 ready queue에 저장되어있거나, 각각의 프로세서의 private queue에 저장되어있다.
- 대부분의 멀티프로세스가 이러한 형태.
메모리 접근에 따른 구분
Uniform Memory Access
- 하나의 공유된 메모리에 여러개의 프로세서가 할당된 형태.
- 하나의 메모리를 공유하여 사용한다.
- 프로세서가 어느 메모리를 참조하든 접근속도가 동일하다
Non-Uniform Memory Access (NUMA)
-
각각의 CPU가 로컬 메모리를 가져 동시에 여러 작업을 진행할 수 있다.
물리 주소의 일정 부분을 로컬 메모리로 사용할 수 있도록 배정한다.
-
만약 다른 프로세서에서 자신의 메모리를 참조할 때 속도가 느리므로, 스케줄링 시 이를 고려해주어야 한다.
-
이 때 필요한 개념이 Affinity 이다.
Processor Affinity
프로세스 스케줄링 시에, 특정 프로세서에 지정을 해주는것.
프로세스는 특정 프로세서에서만 실행되게 된다.
이전에 이 프로세스를 이 CPU에서 실행한 적이 있다면 해당 코드의 일부가 캐시에 담겨져 있을 가능성이 높으니 이전에 실행했던 CPU를 선택하게 된다.
- 프로세스는 현재 돌고있는 프로세서의 메모리에 address space등의 메모리를 차지할 것이다. (NUMA의 경우)
- 이 때, 다른 프로세서의 메모리에 있는 데이터를 참조한다면, 시간이 오래걸릴것이다.
- 따라서 자신이 현재 돌고있는 프로세서의 메모리와, 자신이 접근하려는 데이터가 있는 메모리를 같도록 만들어줄 때 Processor Affinity를 활용하기도 한다.
soft Affinity
: 같은 프로세서에서 돌 수 있도록 priority를 높여주는 등 노력은 하지만, 보장은 안되는 경우.hard Affinity
: 특정 프로세서에만 돌도록 완전히 보장시켜주는 경우.
Load balancing
특정 프로세서(CPU)가 너무 많은 프로세스를 돌린다 싶으면, 스케줄러가 적절히 분배해주는 행위.
CPU마다 utilization을 체크해서 바쁜 쪽의 일을 덜 바쁜 쪽으로 가지고 와 수행하게 된다.
processor Affinity
등에 의해 특정 프로세서가 너무 많은 프로세스를 돌리는 경우에, 스케줄러가 적절히 분배해주는 것을 load balancing이라 한다.- 앞서 말했듯이
Asymmetric multiprocessor
에서는master
프로세서가 load balancing 해준다.Push migration
: 바쁜 프로세서가 자기의 일을 던지는 것.Pull migration
: 노는 프로세서가 다른 일 가져오는 것.
장단점
장점 | 단점 | |
---|---|---|
1 | 경제적이다 | 프로세서 수가 많아질수록 프로세서 간 데이터 교환에 따른 오버헤드도 증가 |
2 | 처리량이 높다(High Throughput) | |
3 | 신뢰성이 높다. 하나의 CPU가 고장나더라도 다른 CPU가 일을 수행할 수 있다 |
2. 약결합 시스템(분산 처리 시스템)
Loosely Coupled System
- 두 개 이상의 독립된 컴퓨터 시스템이
통신망을 통하여 연결
된 시스템(분산처리 시스템으로 알려짐) - 각 시스템마다
독자적인 운영체제, 메모리, 입출력장치
를 가지고독립적으로 운영
됨 - 프로세서 간의 통신은
메시지 전달
이나원격 프로시저 호출
을 통해서 이루어짐 - 자원을 가지고 있는 사이트는
서버(server)
가 되며, 반면 다른 사이트에서의클라이언트(client)
나 사용자는 그 자원을 사용
특징
- 분산 시스템의 등장은 개인용 컴퓨터가 보급되면서
인터넷이 활성화되기 시작
하고 분산 시스템의 개념이 나온다. - 분산처리 시스템은
대형 메인 프레임 컴퓨터
를 사용하는 것보다개인용 컴퓨터를 여러 개
사용하여 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만드는 것
- LAN 같은 네트워크 인프라를 필요로 한다.
- 구조는 클라이언트 - 서버로 되어있다.
분산 시스템의 고려 사항
-
Transparency(투명성) : 유저 입장에서 Single computer system으로 제공
=> 어떤 시스템을 통해 접근하더라도 똑같은 인터페이스를 제공하기
-
Scalability (확장성) : A system is scalable if it operate effectively at many different scales.
=> 유저가 많아지면 많아지는 대로, 적어지면 적어지는 대로 규모를 효율적으로 사용하는 것
-
Concurrency (일관성) : 각 task들의 동시에 접근할 때, 각 자원들의 상태가 동일해야 한다.
-
Failure Handling : 일부 컴퓨터들이 고장 난다 하더라도 그 시스템이 계속해서 사용자에게 일관성 있는 컴퓨팅 서비스를 제공할 수 있어야 한다.
- 분산 컴퓨팅 환경 실현하기 위해서는 아래와 같은 기술이 필요하다.
- 복수의 컴퓨터상의 프로그램 간 통신을 위한 원격 절차 호출(
RPC
) - 분산 파일 시스템(distributed file system)
- 디렉터리 서비스(directory service) : 쿼리를 이용한 검색기능 제공
인증 서비스(authentication service)
- 복수의 컴퓨터상의 프로그램 간 통신을 위한 원격 절차 호출(
장점/단점
장점 | 단점 | |
---|---|---|
1 | 분산 처리를 통한 빠른 데이터 처리 속도(연산 속도 향상 ) |
보안/통신 관리 가 복잡 |
동시에 수행 가능한 시스템 환경이 제공되므로 연산 속도 향상 | ||
2 | 한 사이트에 있는 자원을 다른 사이트가 이용할 수 있어서 자원 활용도 향상(자원 공유 ) |
네트워크 리소스 가 많이 필요 |
3 | 데이터 손실에 대비한 장애 허용성 증가(신뢰성이 높다 ) |
|
하나의 시스템에 오류가 발생해도 시스템 전체의 성능에는 크게 영향을 주지 않는 신뢰성 제공 | ||
4 | 다수의 사이트 간에 의견 교환 가능(통신 ) |
|
5 | 서버가 물리적으로 떨어져 있어도 사용할 수 있다. (은행 서버의 경우 하나는 서울에, 다른 하나는 부산에) | 유지 보수가 어려울 수 있다. |
추가
HADOOP
- 분산 컴퓨팅을 위한 오픈소스 소프트웨어
- 클러스터 상 분산 저장되어 있는 대용량 데이터셋을 대상으로 분산처리를 가능하게 한다.
- 물리적으로는 다 다른 서버지만 하둡이라는 소프트웨어를 깔면 마치 하나의 서버처럼 작동하도록 만드는 것
- HDFS에 데이터를 저장하고, YARN으로 리소스를 관리하고 MapReduce로 데이터를 처리한다.
References
- https://jihyeong-ji99hy99.tistory.com/102?category=889831
-
https://losskatsu.github.io/os-kernel/dist-sys-concept01/#%EB%B6%84%EC%82%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EA%B0%9C%EB%85%901
- https://yeon-code.tistory.com/31