VirtualBox의 CPU 점유 문제 해결

언제부터인지 기억나지 않지만, 내 Laptop, Ubuntu에 설치된 VirtualBox는 항상 Host의 CPU를 100% 사용하고 있다. Guest가 일을 많이 해서가 아니라, 그냥 가만히 두고 있어도 그러니 문제.

(특히 내 개인의 일에) 게으름의 극치를 달리는 요즘, 그냥 이 꼴을 지켜보고 있었는데, 오늘은 갑자기 짜증이 치달아… 간단히 Google 신에게 물어보았다. (왜 진작 물어보지 않았는지…) 그리고 첫 검색에서 발견한 답. 내게도 먹힌다.

해답은, 그냥 용도가 없는 VM을 하나 더 만들어서 그저 띄워 놓기만 하면 된다. 이렇게 했더니, 그동안 CPU를 100% 사용하던 VM의 CPU 사용률이 10% 수준으로 떨어졌다. 그리고 도우미 VM의 CPU는 3% 정도. (도우미 VM은 메모리, CPU 등을 그냥 최소로 주었고, Disk나 OS 설치는 하지 않았다. 그냥 빈 깡통.)

참고한 사이트는,

두 번째 URL은 이런 저런 방법이 나오는데, 크게 신경쓰지 않았다. 이제 해방!

왜 그랬을까?

보통, CPU를 100% 먹는 경우는 헛바퀴. 헛바퀴라 함은, while(true) {} 같은 것이 있는데, 참인 동안 수행해야 하는 업무가 너무 짧고 쉼 없이 돌아갈 경우, while 자체가 CPU를 먹어버리는 상황이 발생한다.

이 때 usleep(1) 정도로, 전반적인 Timing에 영향을 주지 않을 정도로 잠깐의 여유만 줘도 CPU 점유 현상은 사그라진다.

아마, 이 문제에서는, 추가의 VM이 VM간 경쟁을 유발하여 (뭔가 Time Sharing을 위한 루프 내에 추가 작업을 유발하여) CPU를 잠재우는 것이 아닌지…

그냥 짐작.