티스토리 뷰
회사에서 일하다 보면, 혼자서 일하는 게 편할 때도 있고, 동료와 함께 일하는 게 좋을 때도 있습니다. 일할 때 언제 혼자가 편하고, 언제 동료와 할 때 좋을까요? 사람마다 다르겠지만, 기계는 단순히 일만 보기 때문에 뭐든지 여럿이서 하면 빠른 시간 안에 작업을 처리할 수 있습니다. 하지만, 작업의 양을 균등하게 나누어서 분배 가능하다면 여럿이서 일하는 게 좋지만, 작업을 분배하기 어렵거나, 자원을 공유할 수 없는 경우에는 혼자서 작업을 처리하는 게 좋을 때도 있습니다. 멀티 프로세서, 멀티코어도 이와 동일한 맥락으로, 어떤 경우엔 싱글코어 또는 싱글 프로세서로 처리하는 게 좋지만, 일감을 균등하게 나눌 수 있을 땐 병렬 처리가 좋습니다.
이번 포스팅에서는 멀티 프로세서(MultiProcessor), 멀티코어(MultiCore) 정의, 장, 단점, 멀티 프로세서로 구성된 시스템 용어에 관한 주제를 다루어 보겠습니다.
멀티 프로세서(MultiProcessor)
통상적으로 CPU는 프로세서라고 부릅니다. CPU가 2개 이상인 컴퓨터 구조를 멀티 프로세서라고 부릅니다. CPU는 명령어를 실행하고, 데이터를 연산하고 주변 I/O 컨트롤러를 제어하는 역할을 합니다. 멀티 프로세서의 장점은 처리해야 할 작업을 각 프로세서에게 독립적으로 할당하여, 같은 시간에 더 많은 작업을 처리할 수 있습니다. 그러나, 멀티 프로세서의 구조에는 단점이 있습니다. 메인 메모리, 버스, 주변 장치들을 멀티 프로세서가 공유해서 사용해야 하므로, 자원 선점을 위한 경쟁과 많은 데이터 흐름으로 병목현상이 발생할 수 있습니다. 또한, 프로세서마다 캐시의 결과가 다르게 저장되어 있어, 데이터 일관성에 문제가 발생할 수 있습니다. 게다가, CPU 전력 소모량이 늘기 때문에 장점보다는 단점이 더 부각되기도 합니다.
멀티 코어(MultiCore)
CPU안에는 명령어를 처리할 수 있는 Core가 존재합니다. 코어의 개수가 1개 일 때는 싱글코어, 2개 이상일 경우 멀티 코어라고 부릅니다. 멀티 프로세스와 달리, 멀티 코어는 CPU 내에 Core의 개수가 여러 개이므로, Core 간 연산 결과 및 저장 데이터를 매우 빠르게 공유할 수 있다는 장점이 있습니다. 뿐만 아니라, 전력 소모량도 적어, 멀티 프로세서보다 전력 측면에서 효율적입니다.
멀티코어와 멀티 프로세서의 차이는 물리적인 CPU의 개수의 차이가 가장 큰 차이점입니다. 멀티코어에 비해 멀티 프로세서의 단점이 많아 보여도, 사용목적에 따라 멀티 프로세서의 구조를 선택하기도 합니다. 예를 들어, 하나의 프로세서가 결함이 발생하여 정삭 동작이 불가능할 경우, 다른 프로세서가 이를 감지하여 대체로 동작(=FailOver = Active-Standby구조)하는 경우가 대표적인 멀티 프로세서 사용의 예라고 볼 수 있습니다.
멀티 프로세서 시스템
최근 멀티 프로세서의 시스템이 각광받고 있는데, 그 이름은 바로 클라우드입니다. 클라우드의 정의란, 여러 개의 분산 시스템을 하나의 자원으로 묶어서, 컴퓨팅 자원을 활용하는 방식입니다. 하나의 컴퓨터 내의 멀티 프로세서를 사용하는 경우는 여러 가지 단점들이 존재하지만, 분산된 시스템을 멀티 프로세서 개념으로 묶어서 처리한다면, 멀티 프로세서의 단점은 없어지고 장점이 더 돋보이게 됩니다. 클라우드 이외에, 멀티 프로세서를 활용한 시스템 용어들이 많은데 아래 용어를 참고하시면, IT 기술을 이해하시는데 큰 도움이 될 것 같습니다.
- SMP (=Symmetric Multi Processing) : 각 CPU가 모든 Task를 처리함, 각 CPU가 Register, Cache를 가지고 있으며 메인 메모리를 공유하는 구조
- Blade Server : 하나의 프레임 위에 프로세서 보드, I/O 보드, 네트워크 보드가 갖추어진 서버
- Clustered System : 컴퓨터 간 LAN으로 엮여있고, Stroage를 공유하며 외부에서는 하나의 컴퓨터처럼 동작하는 시스템,
- 고가용(High-Availability) 서비스를 구축할 때 클러스터 시스템으로 구축함.
- Cluster는 비슷한 하드웨어끼리 LAN으로 묶인 시스템이지만, Cloud는 지리적으로 분산된 이기종 시스템끼리 묶일 수 있음.
- 클러스터를 통해 성능 향상은 일어나지 않지만, 신뢰성을 향상함으로써 안정적인 서비스를 제공함 (graceful degradation 또는 fault tolerant라고도 함).
- 클러스터 시스템으로 Fail-over를 구성할 수 있지만, 성능 향상을 위한 병렬 컴퓨팅을 목적으로 사용되기도 함 ex) Oracle Real Application Cluster
- Symmetric clustering : 각 머신은 애플리케이션을 구동하고, 일부 머신에 장애가 발생하면, 다른 머신에서 해당 머신에서 실행하던 애플리케이션을 실행해주는 구조의 클러스터링. (머신 간 서로 애플리케이션 모니터링)
- Asymmetric clustering : 하나의 머신은 애플리케이션을 구동하고, 다른 머신은 애플리케이션을 구동하는 머신을 모니터링하며, 장애가 발생 시 즉시 구동될 수 있는 체계의 클러스터링.
- SANs(=Storage Area Networks)를 통해 Storage를 클러스터링 하기도 함
마무리
멀티코어, 멀티 프로세서에 대해 알아보았으며, 멀티 프로세서를 활용한 다양한 시스템 중 클러스터에 대해 알아보았습니다. 클라우드 분산 컴퓨팅 시대를 맞이하여, 기본 용어에 대한 의미를 이해한다면, 클라우드 기술을 좀 더 이해하며 사용하실 수 있을 것입니다.
'IT 기술' 카테고리의 다른 글
디자인 패턴 - 구조 패턴 (0) | 2022.07.20 |
---|---|
클린코드 작성원칙(Naming, Style,주석, DeadCode,Method, SOLID) (0) | 2022.07.19 |
운영체제(Operating System)의 구성요소 및 역할 (0) | 2022.07.17 |
Oracle Database 메모리 구조 (PGA, SGA) (0) | 2022.07.16 |
Notion으로 업무 일정 관리하기 (0) | 2022.07.15 |
- Total
- Today
- Yesterday
- 코드스멜 유형
- token
- springboot build
- SPA
- notion
- oracle 메모리
- 테스팅 자동화
- selenium
- TCP/UDP
- AWS
- springboot rest api 서버
- 디자인패턴
- 디자인패턴 구조패턴
- 클린코드작성법
- springboot restapi
- springboot 실행
- 멀티코어 멀티프로세서
- oracle pga sga
- 스프링부트빌드
- python
- 스프링부트 restapi
- API Gateway 캐싱
- 스프링부트실행
- notion 업무일정관리
- 클린코드작성원칙
- C++
- OSI 7계층
- MPA
- codesmell 유형
- iframe 태그 찾기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |