암드 서버 렉 줄이는 방법, taskset 간단 사용법

Tip 2011. 5. 18. 00:49
이 포스트에 정확히 제목을 붙이자면, 암드 서버에 자원 제한하는 방법, 암드 서버 구동시 다른 게임 서버에 발생하는 렉을 줄이는 방법이 되겠습니다. 추가로 이 포스트의 내용에는 taskset에 대한 간단한 사용법이 포함되어 있습니다.

듀얼코어로 ArmA(암드)의 dedicated server를 구동할 경우 엄청난 CPU 자원을 ArmA 서버가 차지합니다.
이 경우 다른 게임 서버에 렉이 발생할 가능성이 높아집니다.

본인은 남는 iMac을 서버로 사용하고 있는데, T7700 듀얼코어 CPU에서 ArmA 데디 서버를 돌리니까, 다른 게임 서버에 잦은 렉이 발생했습니다.

이럴 경우 해결 방법은 두가지 입니다.

1. ArmA 서버 구동시 -cpuCount=1 파라미터를 추가합니다. 만약 메모리도 제한하고 싶다면 -maxMem=512 파라미터를 추가합니다. 값은 512~2048까지 허용되고 단위는 MB입니다.

[예] # ./server -cpuCount=1 -maxMem=512 -config=server.cfg
이 경우 ArmA 서버가 사용할 수 있는 CPU의 코어는 하나, 메모리는 강제로 512MB로 제한합니다.

이렇게 서버를 돌리더라도, 종종 ArmA 서버가 사용하는 코어를 0번 코어에서 1번 코어로, 1번에서 0번 코어로 바꿉니다. 이 때 다른 게임 서버에 렉이 발생하는데, 이것을 해결하기 위해서는 2번 방법을 사용하면 됩니다.

2. 이 방법은 리눅스를 OS로 사용하고 있는 서버에서만 사용할 수 있으며 가장 확실한 방법입니다.

터미널을 열고
# taskset -pc processor-number pid
를 입력합니다.
여기서 processor-number는 사용할 CPU 코어이고, pid는 CPU를 제한할 프로세스의 PID입니다.

[예] # taskset -pc 0 28664
이 경우 PID가 28664인 프로세스는 0번 코어만 사용하게 됩니다.

taskset이 설치되어 있지 않다면 자신이 사용하는 리눅스 배포판에 맞게 schedutils를 설치하면 됩니다.
[데비안 리눅스] # apt-get install schedutils
[레드햇 리눅스] # yum install schedutils

만약 0과 1번 코어를 모두 사용하고 싶다면
# taskset -pc 0,1 pid

taskset의 더 자세한 사용법은 터미널에
# taskset --help
를 입력하거나, 구글링을 하면 정보를 얻을 수 있습니다.

: