서비스 호스트: dns client CPU 점유율 해결 방법

특정 프로그램을 실행하면 서비스 호스트: dns client의 CPU 점유율이 함께 높아지면서 프로그램을 원활하게 실행하지 못하게 되는 경우가 있다. 이럴 때 dns client를 실행하지 않게 하여 CPU 점유율을 빼앗기지 않는 방법이 있어서 적어둔다.

이 서비스가 실행되는 이유는 dns주소를 자동으로 가져오기 때문이다. 즉 수동으로 dns 서버 주소를 설정해두면 이 서비스가 필요가 없다.

네트워크 어댑터 속성 > 사용하는 어댑터 > 인터넷 프로토콜 버전 4 (TCP/IPv4) 속성에 들어가서 아래와 같이 DNS 서버 주소를 설정해준다.

제일 간단한 것은 1.1.1.1을 사용하는 것이다. 구글 DNS(8.8.8.8)를 사용해도 된다. 원하는대로 적어주고 확인을 눌러 저장해준다.

Public DNS server 설정

그 다음 관리자모드로 터미널을 열어 아래 커맨드를 실행해준 후 재부팅한다. 혹시 다시 enable시켜줄 것이라면 아래 4대신에 2를 넣어주고 재부팅하면 된다.

reg add "HKLM\System\CurrentControlSet\Services\Dnscache" /v "Start" /t REG_DWORD /d "4" /f

라즈베리파이 XBMC idle일 때 CPU 사용률 높은 현상

XBMC를 사용하지 않을 때 화면이 dim 되면서 대기 상태에 들어감에도 불구하고 CPU 사용율이 여전히 높다. ssh 접속하여 top 커맨드로 확인해보면 20% ~ 30%를 왔다갔다 하고 있다. XBMC 상에서 CPU usage를 보려고 시스템 > 시스템 정보에 들어가면 동적으로 CPU 사용률과 FPS를 보여주는데, 여기에선 항상 100%다.

라즈베리파이 XBMC에서 CPU 사용량 확인 화면
라즈베리파이 XBMC에서 CPU 사용량 확인 화면

이유는 다음과 같다. http://thepcspy.com/read/how-fix-idle-100-cpu-issue-xbmc/

XBMC was originally written for the XBox game console, which is a single-threaded system (not a multi-tasking OS like Windows). As such, it was written in a game loop, rather than being event-driven. This means that the screen refreshes as fast as possible in order to “feel” responsive to the user. What this boils down to is that while sitting on the idle screen, XBMC is still repainting the screen at 60-90 frames per second (as can be seen by the FPS number if debug mode is enabled). This takes up a lot of processor power, because the “game” is still running, even though you may not be doing anything with it.

XBMC 자체가 게임 콘솔용으로 만들어졌고, 항상 최선의 경험을 제공하기 위해서 화면을 최선을 다해서 갱신한다는 것인데…

과연 idle 상에서도 그럴 필요가 있을까? TV 화면을 꺼 놨는데도? 이건 XBMC가 개선되어야 할 부분이라 생각한다. 가뜩이나 CPU 파워가 모자른데, XBMC가 화면이 없는 상태에서도 CPU를 갉아먹고 있으니.. 화면 보호기를 dimming이 아니라 black screen을 선택해도 마찬가지다.

advancedsettings.xml에 dirty regions 값을 바꿔보면 CPU 사용률은 확실히 줄지만, 화면이 제대로 안 나온다. 1로 하든 2로 하든 마찬가지. 3번을 선택해서 fullscreen update를 해야 화면이 제대로 나온다. http://wiki.xbmc.org/index.php?title=Dirty_regions

Video refresh rate를 30으로 변경해보면 CPU 사용이 줄어든다. 그런데 TV에서 제대로 인식하지 못해 적당한 해결책은 아닌것 같다.

결국 해결 방법이 현재로선 없는 것 같다. 언제쯤 고쳐주려나… 🙁