![]() ![]() ![]() |
제목 | [가마수트라] 특집:게임 태스크 스케줄링을 스스로 하라 | ||||||
---|---|---|---|---|---|---|---|
분류 | 게임 | 등록일 | 10.07.13 | ||||
출처 | 한국콘텐츠진흥원 | 조회수 | 0
|
||||
특집: 게임 태스크 스케줄링을 스스로 하라
Jérôme Muffat-Méridol
필자는 2008 년 생애 처음으로 데모 파티 Evoke in Germany 에 참석하게 되었다. 필자는 다음과 같은 질문이 제기되었을 때, 게임에서의 멀티코어 최적화 및 스레드에 작업을 효율적으로 전개하기 위해 Intel Threading Building Blocks(Intel TBB)를 사용하는 방법에 대해 얘기했었다. 64K 에서 이것을 사용할 수 있나?
64K 데모에 대한 규칙은 "최대 65536 바이트, 자체 실행가능" 이렇게 간단하지만, 그 결과는 종종 신뢰할 수 없는 경우가 있다. Intel TBB 는 정말로 우아하고 슬림한 라이브러이지만 200KB 에서는 그렇지 않다. 그러나 필자는 이에 대해 ‘노(no)’라고 말하기가 싫다. 어쩔 수 없이, 필자는 Intel Threading Building Blocks 의 워킹 스케일 모델 종류에 대한 개념을 보완해야 했다. 이것은 최소 태스크 스케줄러라고 할 수 있는데 연구나 해체, 플레이를 쉽게 하는 것이라고 보면 된다. 필자에 임무가 주어졌다!
Nulstein 은 이 요구를 해결하기 위해 필자가 만든 데모이다. 이 데모는 대부분의 게임 플랫폼에 채택할 수 있는 태스크 스케줄링을 구현하기 위한 간단하지만 효과적인 방법을 보여준다. Nulstein 코드를 다운로드하려면 이 링크를 클릭.
태스크 스케줄링
태스크 스케줄러에 대해 잘 모르거나 태스크 스케줄러가 게임에서 왜 유용한지에 대해 잘 모른다면, 스레드와 태스크 간의 차이점에 그 실마리가 있다. 스레드는 가상의 무한 작업스트림으로, 다른 스레드와 동기화해야 하는 경우 차단한다. 다른 한편으로 태스크는 다른 태스크와 독립적으로 수행되는 소량의 작업을 실행하는 짧은 작업 스트림으로, 차단하지는 않는다.
이러한 속성은 프로세서가 물리적 스레드를 실행할 수 있을 때 이와 동시에 많은 태스크를 실행할 수 있게 하며, 태스크 스케줄러의 작업은 주로 한 태스크가 끝나면 새 태스크를 찾는 것으로 귀착된다. 이것은 어느 한 태스크가 스스로 그 태스크의 일부로 또는 연속체로써 새 태스크를 생성할 수 있도록 추가할 때 상당히 강력해진다. 다소 작은 태스크들의 모음에서 작업을 분할한다는 것은 직접적인 개념으로, 스레드가 정상적으로 차단할 수 있지만 좀 더 어려울 수 있는 상황을 다룬다. 대부분의 경우 태스크는 예상 조건이 발생할 때까지 다른 태스크를 소비할 수 있으며, 그렇지 않은 경우 보통 대기점 주위의 2 개의 태스크에서 작업을 분할하고 간접적으로 동기화가 일어날 수 있게 하는 것은 간단한 문제이다. 그러나 우리는 나중에 다시 여기로 돌아와야 한다.
작업을 태스크로 분해하고 태스크 스틸링에 스케줄러를 사용하는 것은 멀티코어 프로세서를 사용하기 위한 편리하고 강력하며 효율적인 방법이다. 프로그래밍 관점에서 보면, n 로지컬 코어를 탑재한 시스템에서 Nulstein 은 n-1 워커 스레드를 만들어 태스크를 실행하는 게임의 메인 스레드를 지원한다. 각 워커는 실행할 준비가 된 태스크 목록인 자신의 “작업 더미”를 관리한다. 하나의 태스크가 끝날 때마다 워커는 해당 더미의 맨 위에서 다음 태스크를 고른다. 이와 유사하게 태스크가 만들어지면 그 만들어진 태스크는 더미의 맨 위에 바로 떨어진다.
이것은 하나의 전체 작업 대기열을 갖는 것 보다 훨씬 더 효율적이다. 각 스레드는 어떠한 분쟁도 없이 독립적으로 작업할 수 있기 때문이다. 그러나 캐시가 있다. 일부 더미는 다른 것보다 훨씬 더 빨리 비워진다. 이런 경우, 스케줄러는 바쁜(busy) 스레드 더미의 맨 아래 1/2 정도를 스틸하여 굶주린(starving) 스레드에 제공한다. 이것은 분쟁을 상당 수준제한하는 것으로 드러났는데, 단 2 개의 스레드만이 이 작업을 수행하는 데 필요한 상호 배제에 의해 영향을 받기 때문이다...(중략)
※ 자세한 내용은 첨부(PDF)화일을 참고하시기 바랍니다. ※ 본 아티클은 CMP MEDIA LLC 와의 라이선스 계약에 의해 국문으로 제공됩니다.
|
|||||||
첨부파일 |