들어가면서

 

안녕하세요 프섭 ch.41 주둔하고있는 간지 길마입니다

 

본 글에서 알려드리는 내용은

'마비노기 영웅전'이라는 게임이 코어를 어디까지 지원하는지

 

또한 이게임을 하고자할때 어떤 CPU가 유리한지

마영전 개발자들이 진행하고자 하는 차후 최적화 업데이트는 어떤것인지

 

다소 추측성을 함유한 팁입니다.

 

너무 깊게 파기만하면, 글이 재미없고, 두리뭉실할 것 같아

현역 개발자로 뛰고있는 지인분의 조언 QA 면담 글도 첨부하였습니다.

 

글이 딱딱해도 이해해주시기 바랍니다 ㅋㅋ

 

 

 

1.스래드와 멀티코어 패치 적용에 관하여.

*스래드란

프로세서의 하위개념, 스레드는 프로세스 아래의 서로 다른 영역,

역할을 수행하게 되는 코드 영역이다.

*멀티코어

단위 프로세서에 1개 이상의 코어가 동작할 경우 멀티코어 프로세서 라고 부름

 

*적용하는 이유

1.처리속도가 향상됨

2.CPU사용률이 높아짐.

3.안정성이 상승함.

 

예시)메모리 위에 1~10의 데이터가 있다고 가정.

a.     스래드 1

b.    스래드 2

c.     스래드 3

l  a.스래드가 1데이터의 처리를 완료했을 때 4데이터 처리 진행

l  병렬 처리 방식

 

 

 

*스래드 에 있어서 중요한 것은 우선권과 동기화'

 

동기화 부분이 가장 중요한 포인트

스래드 간의 실행순서를 제어하는 기법

 

우선권이란, 두 개 또는 그 이상의 함수가 실행될 때,

어느 함수에게 작업할 권한을 줄 것인지 정하는 것

 

*스래드 동작 삼단계 구조

<준비->실행->대기->종료>

 

 

 

2.코어와 스래드의 관계

 

어떠한 단일 프로그램의 기본값은 코어 1개당 스래드 1개이다

이 경우, 싱글코어의 시스템일 경우 CPU점유율이 100%

듀얼코어의 시스템일 경우 CPU점유율이 50%

쿼드코어의 시스템일 경우 CPU점유율이 25%...

 

과거의 경우, 프로그램의 스래드가 많아 질수록, 처리가 느려졌었지만

오늘날의 경우 일을 처리할 수 있는 코어가 늘어남에 따라서, 멀티스래드가 일처리에 유리해지기 시작함

 

 

 

위 자료그림 과 같이

 

프로그램에서의 어떠한 일 처리 요청(Submit)이 들어오게 되면, 프로세스는 스래드에게

해당 자료의 처리요청을 추가로 하게됨, 각 스래드는 해당 자료를 할당된 자원으로 처리를하며

처리가 완료되면 자료를 기다리는 대기/보류상태로 넘어감.

 

 

 

 

<12.08.17 iRis (hjo0000)블로거 님이 포스팅하신 자료참조>

보시고 계시는 위 캡쳐자료는 마영전 멀티코어 게임옵션의 ON/OFF 비교자료이며

매우 근소한 차이를 보이고 있다. 프레임의 차이 또한  2~3FPS로 오차범위 3%이내에 해당함

 

 

 

3.마영전에 과연 멀티코어 기능이 동작하고 있는 것 인가?

 

심심치 않게 올라오는 이야기, 마영전의 내부옵션 멀티코어 옵션은 과연 작동하고 있는것인지..

 

http://www.parkoz.com/zboard/view.php?id=vga_freeboard&page=1&sn1=&divpage=9&sn=off&ss=on&sc=off&keyword=%BD%BA%C5%B8%25%C4%F5%B5%E5&select_arrange=headnum&desc=asc&no=23656

↑ 파코즈 하드웨어 스타2는 쿼드코어를 지원하는가게시글 참조

 

 

마영전에서 현재 멀티코어 옵션의 ON/OFF 테스트 결과 위 파코즈 회원분의 밴치마크 자료와

흡사한 결과가 나온 것이 확인되었습니다.

 

이는, 즉 멀티코어 옵션을 활성화 시켯을시, 각 코어의 점유율 변화를 확인 할 수는 있었으나

점유율만 놓고 봐서는, 싱글코어 지원의 프로그램을 윈도우 상에서 스래드의 세분화를 통해서

나누어 놓기만 한 것이 아닌가? 하는 결론이 나왔습니다.

 

==================================================

다음은 넥슨 고객센터 문의 답변입니다.

Q.마영전의 실질적으로 동작중인 코어에 대하여

 

A.기본적으로 하나의 코어만을 사용하며 (메인 랜더링 프로세서 1EA)

해당 부분은 이펙트 등이 출력되는 부분과 같이

순간적인 많은 연산처리를 요구할 경우

다른 코어를 활용하여 성능을 향상 시키고 있으며,

평소의 CPU를 전부 활용하지 않는 부분은 정상적인 사항입니다.

 

===================================================

*정리

부하가 집중 될경우, 메인 프로세서를 제외한 나머지 코어에

사운드, AI, 이펙트 등의 요소를 분배하여 동작하게 하는 것으로 추정됨

 

가령, 단일 코어에 높은클럭인 프로세서에서 성능이 높게 나온다는이야기 이지만

위에 언급한 일부 스래드는 다른 코어에서 작업을 옴겨다니는 것으로 보아

 

개발자 측에서 언급한 ‘Hosting’ 부분과, ‘G-UI’ 부분은 아무래도 이러한 요소인게

아닌가 싶습니다. 실질적으로는 멀티코어를 지원하지 않는 싱글코어 지원의 프로그램이지만

스래드를 나눠 줌으로써 마치, 멀티코어 지원의 게임인 것 처럼, 운영하는 것이죠

 

아무래도 개편이 된다면, 평소 부하가 높던 한 개의 코어의 부담이 다소 내려갈지도 모르겠습니다.

 

어디까지나 추측일 뿐이지만, 위 가설로 본다면 현재의 마영전에서 단위 코어 클럭이 높아야 프레임이 높게 나온다라는 이야기는 이제 안나오지 않을까 예상이 됩니다.

 

다만, 애초에 단위 코어 클럭이 높은 유저들에겐 별다른 변화가 없을지도 모른다는 이야기입니다.

코어 클럭이 낮은 유저의 경우, 부하가 집중되는 현재와 같은 구조에서 부하가 분산되도록 변경이 된다면

아무래도 프레임 드랍 등의 문제는 해소가 될 것 입니다

 

 

 

위 내용 관련하여 직접 G사 게임 개발자 지인분에게 문의 드려보았습니다

 

Q._싱글코어 기반의 게임이, 멀티코어가 지원가능하게 패치된 사례가 많은지?

A_결론부터 말하자면 미친짓이다.

처음부터 멀티코어를 지원하게 설계를 하지않았다면, 개인적으로 비추천한다.

일단, 코어지원을 했다 -> 스래드 동기화  이 작업이 반드시 필요하다.

CPU입장에선 저놈이 일이 끝났는지, 안 끝났는지 알게 뭐냐, 그냥 막 처리하고 보내버린다

그래서 생기는 문제가 동기화 문제인데, 이게 문제의 핵심이다.

이걸 해결하기 위해 수 십가지 이론이 나왔지만, 아직 완벽하게 해결된 문제가 아니다.

 

때문에 각 ‘ZONE’을 스래드 동기화 하는 작업을 프로그래머들이

수작업으로 진행을 해야 하는데 문제가 안 생길 리가 없다.

그리고 만약 한다 하면, 나 같으면 회사 때려친다.

 

 

Q_마영전에서 하려고 하는 멀티코어 최적화에 관해서

A_가장 정석에 가까운 현실적인 멀티코어 패치라고 볼수있다.

너에게 어떻게 말하면 신뢰하기 쉬울지 모르겠지만, 그 거대한 글로벌 기업인

블리자드도 이 방법을 채택하고있다. 대표적으로 스타크래프트 2’가 그 예시이다.

 

국내 밴치마커들에 의해서, ‘스타2’는 듀얼코어 지원의 게임이라는 것이 밝혀졌다.

그래도 쿼드코어급을 권장하는 이유는 부하율이다. 듀얼코어 였을시와 쿼드코어 였을시의

프레임은 거의 동일하다. 하지만, 어떠한 환경적인 요인이 대입됫을경우 그 변동은 미지수이다.

 

예를 들어서 스타2 4:4 리그하고 있는데 갑자기 트레이슬롯에서 알약광고가 튀어나왓다고

게임이 팅길지도 모르는 상황이 나오면 우습지 않는가?(근데 실제로 알약광고가 시스템리소스깡패이기도하다)

 

이런 현상을 막기위해서 블리자드는 스타2의 듀얼코어 기반의 스래드 들을

AI,사운드,텍스트 등으로 주요 메인스래드를 제외한 사이드 요소들을 남는 코어에 할당함으로써

부하를 분산 시키는데 성공했다고 볼 수 있다.

 

 

Q_개발자시점보았을 때, 마영전 개발진 수준은?

A_. 나도 마영전 나름 오래했으니, 마영전으로 비유해보자면

노강 60제 무기로 카단 마하 하드 솔로잉 유저집단이다. 그 빠듯한 스켸줄과

일일 업무처리량을 얘기들으면 등골이 오싹한다.

나 또한 마영전에 접속하면 한낱 평범한 뉴비의 게이머이다.

발적화다 개적화다 서버똥망이다 얘기 들으면 괜한 개발자 동정심이 샘솓는것도 잇긴하다..

 

 

Q_같은 게임 개발자로써 한마디 한다면?

A_얼마전에 서버가 내려갔다는 얘기가 있던데 ..

주말인가 휴일이라고 들었다.. 황금 개꿀휴일이 소멸한 서버담당M 에게 애도를 표한다.

 

그리고, 이건 여담이지만

종종 이런 게이머들이 많다 버그가 있어서, 버그리포트를 써올려도 매크로답변만 온다

당연하다.  개발자나 상담원수에 비해서 해당 게임을 이용하고자 하는 인원은 수십, 수백배에 달한다

 

또 양질의 리포트만 회신한다쳐도 그모든 것을 주관식 서술형으로 답변하는것또한 미친짓이다.

한가지 오해는, 매크로답변을 받았다고 해서 해당 버그를 무시하거나 덮어놓은 것이 아니라는 점이다.

 

나 또한 기술지원파트에서 경험했기를.. 보통 버그리포트가 오면

접수->QA팀답변->기술지원파트->수정시도->수정시도->수정시도->버그수정성공->서비스적용

 

이러한 과정을 거친다.

이미 오래노출된 버그인데도 처리가 안되엇다면

해당 버그의 중요도를 낮게 평가했다던지, 아니면 원인을 파악할 수 없는 버그라던지

그것도 아니라면 아직 차례가 아니라는 것으로 받아들이면 되겠다.

 

끝으로, 나는 아직 회사생활 더 해야되니 익명처리를 강력히 요구한다.ㅋㅋㅋㅋ

 

 

끝내면서 결론

 

 

 

정리해볼때, 기술적으로도 처음설계를 뒤짚어놓는

멀티코어 패치사례는 없다싶이하고

 

그렇게 한다하면 게임을 처음부터 코딩해야하는

대규모 프로젝트화 되버린다고 합니다.

 

앞으로 마영전 개발자들이 원하는 방향은 아무래도

언급햇던 호스트랙 부분과 밀접한 스래드

또한 많은 분들이 지적하는 어도비 UI 부하 관련하여

 

실질적으로 돌아가는것은 1코어 겠지만

부하가 높은 UI같은경우 다른 코어쪽으로 돌려놓는 식의 패치가 나오지 않을까 생각됩니다.

 

긴 글 읽어주셔서 고맙습니다.

끝으로 무조건 이렇게 된다는 보장은 없습니다만.

 

크나 큰 최적화 패치 기대는 안하시는편이 좋지않을까.. 싶습니다 ㅎㅎ;;

기술적으로도 많이 어렵다고 하네요 ~