직렬/병렬

주영·2023년 9월 5일
0

IT Infra

목록 보기
11/16
post-thumbnail

CPU 수가 늘어난 배경

  • 소비 전력 & 발열 문제
    → CPU 제조사가 클럭(Clock) 속도를 올리는 대신 코어 수를 늘려서 문제를 해결하려고 방침 전환

직렬/병렬

1. 직렬

  • 일직선으로 나열
  • 직렬 처리로 속도 향상에 한계 有

2. 병렬

  • 두 줄 이상으로 나열

  • 속도는 빨라지지 않더라도, 단위 시간당 처리량은 늘릴 수 있음

  • 병렬화 ≠ 성능 향상

    1) 병목지점
    - 분기점, 합류점, 직렬화 구간이 병목지점이 되기 쉬움
    - 병목지점에서 혼잡도↑, 사고 발생↑

    2) 오버헤드
    - 오버헤드 : 병렬화하여 일을 분담해서 처리한 후 다시 한 곳에 모으는 직렬 처리 시 발생하는 속도 저하 현상
    - 오버헤드 예상 필요
    - 오버헤드를 감안하더라도 효과가 있을 경우 병렬화

3. 장단점


⇒ 병렬화의 단점 이상의 효과를 얻을 수 있을 경우 병렬화해야함

CPU 코어 수 또는 클럭 주파수

  • HW(CPU, HDD 등) 성능은 제품에 따라 차이가 있지만 처리할 수 있는 양이 정해져있음
  • 분담할 수 있는 처리 : CPU 코어를 늘리면 빨라짐 (병렬화 의미 O)
  • 분담할 수 없는 처리 : CPU 코어를 늘려도 빨라지지 X → CPU 클럭 주파수를 올리면 빨라짐 (병렬화 의미 X)
    ⇒ 처리 특성에 따라 병렬화 가능/불가능

직렬/병렬 사용되는 곳

1. 웹 서버, AP 서버

1) 웹 서버 : 멀티프로세스

  • 복수의 프로세스로 병렬화 (1프로세스 1스레드)
  • 다수의 이용자가 접속 ⇒ 복수의 프로세스가 분담해서 병렬처리

2) AP 서버 : 멀티스레드

  • 프로세스는 하나, 복수의 스레드를 이용해서 병렬화 (1프로세스 4스레드)

* Apache HTTP Server
- 하이브리드형 : 멀티프로세스 + 멀티스레드
- JVM 프로세스를 복수 가동

* 하나의 CPU 코어를 동시에 사용 가능한 것 = 1스레드
- 하나의 CPU 코어밖에 없는 서버에서는 아파치 프로세스를 아무리 늘려도 동시 실행 가능한 것 = 1프로세스
⇒ 프로세스 · 스레드 수 조정 시 CPU 코어 수도 함께 고려 필요

2. DB 서버

1) 서버 프로세스

  • 클라이언트 요청을 처리하는 프로세스
  • 멀티프로세스로 병렬화
    → 클라이언트 접속 수만큼 생성됨
    ex) 클라이언트 10 접속 = 서버 프로세스 수 10개 생성 (전용 서버인 경우)
  • 하이브리드형(멀티프로세스+멀티스레드)도 有 (공유 서버형)

2) DBWR 프로세스

  • 디스크에 읽기/쓰기 처리하는 프로세스 (메모리에 캐시된 갱신 완료된 데이터를 HDD에 기록하는 프로세스)
  • 데이터 파일 생성 시 병목현상이 발생하는 경우
    ① 멀티프로세스로 병렬화
    ② 비동기 I/O 사용 → OS측에서의 쓰기 처리를 병렬화

출처 : 야마자키 야스시 외 3, 「그림으로 공부하는 IT 인프라 구조」, 제이펍

0개의 댓글