본문 바로가기

FSX.cfg - AffinityMask

ko.konene 발행일 : 2012-08-02
반응형

FSX.cfg파일안에 보면

[JOBSCHEDULER]
AffinityMask=

이 있습니다. 요놈을 설정하는 법을 설명 드리고자 합니다.

 

타 싸이트에서는 이런 내용이 어디선가 보긴했는데 잘 나오진 않고 몇코어일때 쓰레드 사용에 따라 값을 다르게 주더군요.

그 이유에 대해선 설명해 놓지를 않아서 제가 설명 드리고자 합니다.

 

AffinityMask는 최대값255 이하로 주라고 하는 글을 많이 보았습니다.

코어가 8코어 일경우 255라는 것인데 여기서 물리적 코어만을 생각한 큰 잘못입니다.

안타깞게도 쓰레드라는 병목현상을 해결해주기위한 방법으로 쓰레드를 만들어 놓았는데 이 쓰레드를 쓰지 못하는 그런 경우 입니다.

여기서 제가 255라는 숫자가 어떻게 나왔나 2진수를 계산해보았는데11 11 11 11 입니다. 즉 4코어에 4쓰레드 그러니까 물리+가상해서 8코어를 사용하겠다는 말입니다.  컴퓨터는 멍청해서 물리코어인지 가상코어인지 모르고 사용하니까요(아마도?)

뭐 어쨌거나 가상코어까지 해서 8코어는 맞으니까 뭐 틀린것은 아닙니다. 그러나 255라는 값은 실제 4코어짜리 CPU에 쓰는것이 가장 알맞겠습니다.

 

메모리 저장할때 보았던 그런 개념으로 보시면 됩니다.

그러니까 11 11 11 11 11 11 메로리로 보면 11 하나가 1바이트죠. 1바이트 안에 각각 4비트씩 저장됩니다.

플심에서도 비슷하게 써먹으면 됩니다. 11하나가 1Core입니다. 그리고 안의 숫자 하나는 1쓰레드의 개념이라 생각하시고 쓰시면 문제 없을듯 합니다.

 

여전히 확실한 것은 아닌데 아마 그런것 같더군요...

 

제 CPU는 AMD FX-6100입니다. 6코어 이고 6쓰레드 그래서 12코어 입니다.

때문에 아래와 같습니다.

 

계산방법

 2048+1024

  512+256

 128+64

  32+16

    8+4

2+1

 11

 11

11 

11 

11 

 11

물리6개 가상 6개 =>12코어 :  [따라서:4095]

 

아래는 각각 값을 주었을때 어떻게 변하는가를 보여드리고자 올립니다.

6코어[5코어와 5쓰레드=10코어]    11 11 11 11 11 00    [따라서:4032] 

위 스크린샷을 보면 11 11 11 11 11 00 이라고 입력했더니만 코어 앞쪽이 사용을 거의 안함을 알 수 있습니다.

이게 뭐드라..-_-;  CPU연산 방식에 의해서 달라지는데 우리가 일반적으로 쓰는 CPU의 경우 리틀엔디안 방식으로 메모리에 거꾸로 들어가게 됩니다.  우리는 메모리의 입력을 바로 넣어 준 것이기 때문에 CPU에서 연산을 할 때 당연히 거꾸로 인식을하여 반대로 보여주게 된것이지요.

 

그럼 앞쪽코어를 쓰고자 한다면 어떻게 하느냐..

00 11 11 11 11 11 이걸 계산하여 넣어주면 되겠지요.

 

6코어[6코어와 6쓰레드=12코어] 11 11 11 11 11 11 [따라서:4095]

여기서 저는 4032를 사용합니다. 왜냐하면 4095나 4032나 플심에서 버벅임 없이 잘 돌아가기 때문입니다.

그럼 그래도 좀 높은 4095를 사용하는게 좋지 않나라고 의문을 갖으실 수 있겠습니다.

둘다 잘 돌아가는데 굳이 큰것을 쓴다는것은 그만큼 릭이 발생한다는것입니다. 쓸데없이 많이 잡고 있는 것입니다.

저렇게 설정하더래도 그만큼의 영역을 주고 안주고는 운영체제 마음이지만 Hz가 딸리는 분들이라면 코어를 모두 쓰는것보다 하나 쯤 빼는것이 좋을것이라 생각합니다. 뒤에 00을 주기 싫다 하면 11 11 11 11 11 10 이렇게 주시던가 하여 사용하시면 되겠지요.

 

 

 

오늘도 정보의 바다에 쓰레기를 던졌습니다. From 젠티

반응형

댓글