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 인프라 구조」, 제이펍