라즈베리파이 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에서 제대로 인식하지 못해 적당한 해결책은 아닌것 같다.

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

댓글 남기기