_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › 최적화의우선순위

Contents

[-]
1 개요
2 암달의 법칙(Amdahl's law)
3 병렬처리
4 코드 병렬화
5 참고자료



문서 작성중..

1 개요 #

작업이 여러 개가 있다고 가정하자. MS-SQL Server의 경우는 전체 비용이 얼마인지 대충 계산을 할 수가 있다. 예를 들어 다음과 같이 쿼리를 실행했을 때에 SQL Server의 실행계획을 볼 수 있다.
select * from sys.sysobjects
plan01.jpg

그러므로 전체 SQL과 SP엗 대한 '하위 트리 비용'을 수집하고, 실행(또는 호출) 횟수를 수집하면 어플리케이션의 비용을 산출 할 수 있다. 그리고 각각의 SP와 SQL에 대해서 code line수 등으로 복잡성을 산출하여 수정 비용을 계산합니다. 그래서 아래의 법칙을 적용하여 계산을 때립니다.

맞나? 아.. 씨발.. 존나 어렵네..
더 정리 필요하다..

2 암달의 법칙(Amdahl's law) #

암달의 법칙이란, 병렬처리 프로그램에서 차례로 수행되어야 하는 비교적 적은 수의 명령문들이, 프로세서의 수를 추가하더라도 그 프로그램의 실행을 더 빠르게 할 수 없도록 속도향상을 제한하는 요소를 갖고 있다는 것이다. 암달의 법칙에 따르면, 어떤 시스템을 개선하여 P 만큼의 부분에서 S 만큼의 성능 향상이 있을 때 전체 시스템에서 최대 성능 향상은 다음과 같다.

SpeedUp = 1 / ((1-P) + (P/S))

예를 들어서 어떤 작업의 40%에 해당하는 부분의 속도를 2배로 늘릴 수 있다면, P는 0.4이고 S는 2이고 최대 성능 향상은 1.25(=1/((1-0.4)+(0.4/2)))가 된다. 개선 후 실행시간은 (개선에 의해 영향을 받는 실행 시간 / (100 + 영향을 받지 않는 실행 시간))으로 개산된다. ([http]위키백과사전) 쉽계 풀어보면..

  • 전체 시스템의 task1, task2로 구성되어 있다. (task1, task2는 소프트웨어)
  • task1은 시스템 전체 처리비용 중 70%의 차지.
  • task2는 시스템 전체 처리비용 중 30%의 차지.
  • 가정
    • task1을 2배 향상시키는데 10의 비용이 든다.
    • task2을 2배 향상시키는데 5의 비용이 든다.
  • 10의 비용을 들였을 때에 어떤 task를 향상시키는 것이 최적인가?
    • task1 = 1.53 = 1/((1-0.7)+(0.7/2))
    • task2 = 1.29 = 1/((1-0.3)+(0.3/4)) -- 5의 비용으로 2배이므로 10의 비용은 4배
  • 결론: task1

3 병렬처리 #

2개의 코어를 가진 CPU를 장착한 머신의 경우, 병렬 연산 효율 법칙에 따라 2개의 프로세서로 작업을 하는 경우 이론적으로 1.3배 정도의 향상이 있게 된다.

Tp = (%S + (1-%S) / N) * Ts
SpeedUp = Ts/Tp
  • Tp: 병렬 프로세스 수행시간
  • Ts: 직렬 프로세스 수행시간
  • %S: 직렬 프로세스 수행시간/전체 프로세스 수행시간 * 100
  • N: 프로세스 개수

좀 어렵다. 어쨌든 처음에 소개했던 SpeedUp = 1 / ((1-P) + (P/S)) 공식에 대입하면 P=0.5, S=2가 된다. 즉, CPU가 2개라면 하는 일은 1/2로 줄어들었고, 처리시간이 1/2로 되었다는 소리는 CPU가 1개였을 때보다 2배의 처리량을 갖는다는 것이다. 그러므로 1.33 = 1 / ((1-0.5) + (0.5/2)) 이 된다. 이것은 작업을 CPU 2개를 모두 이용하여 각각의 CPU가 50%씩 처리된다는 가정하에서 계산된 것이다. 만약 CPU 2개를 달아도 전체의 20%만 병렬화 된다면 1.11(1 / ((1-0.2) + (0.2/2)))배 밖에 성능은 향상되지 않는다.

4 코드 병렬화 #

SpeedUp = 1/(P/N + S)
  • P=전체 코드의 병렬화 비율
  • N = process의 수
  • S = serial fraction


댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:52

지혜로움을 나타내는 가장 분명한 표현은 명랑한 얼굴이다. (몽테뉴)