멀티코어와 멀티스레딩
멀티코어 상에서의 소프트웨어 성능
Amdahl의 법칙
속도향상=N개의병렬처리기상에서프로그램을실행한시간단일처리기상에서프로그램을실행한시간=(1−f)+Nf1
f=스케줄링부하없이병렬로처리가능한코드의실행시간
(1−f)=본래부터순차적으로동작하는코드의실행시간
N=CPU개수
- 처리기의 개수가 많아질수록 속도가 향상된다
- 오버헤드 -> 멀티프로세서들 간의 통신 및 작업 분배와 캐시 일관성 유지를 위한 추가 작업의 결과로 발생
- 멀티프로세서를 사용하는 오버헤드에 대한 부담을 증가시켜 성능이 정점을 찍고 감소하기 시작
- 다수의 상대적으로 독립적인 트랙잭션의 병렬 처리를 하는 서버 -> 멀티코어 구조의 효과적 이용
=> 효과적인 멀티코어 시스템을 위해 응용에서 순차적인 부분에 대한 영향 줄이기
효율적인 멀티코어의 혜택
- 멀티스레드화된 네이티브 응용
- 고도의 스레드화된 프로세스를 가짐
- 멀티프로세스 응용
- 단일 스레드화된 프로세스들이 존재
- 자바 응용
- 자바 언어 자체가 멀티스레드화된 응용 개발에 용이하여 멀티코어 기술의 혜택을 받음
- 멀티인스턴스 응용
- 다수의 응용 인스턴스를 멀티코어 구조상에서 병렬적 실행함으로써 속도의 향상
- 격리(isolation)가 필요한 응용 인스턴스의 경우 가상 기술을 사용하여 각각의 인스턴스마다 독립되고 안전한 환경 제공