OpenBSD VM에 CPU 여러 개 주기, 8.0에서도 기본값은 1개

8.0으로 올리고 설정까지 바꿨는데 실행 중인 게스트에는 여전히 CPU가 하나만 보인다. 늘린 개수는 언제, 어떻게 해야 적용될까?

OpenBSD VM에 CPU 여러 개 주기, 8.0에서도 기본값은 1개
세 줄 요약
  • OpenBSD 8.0의 vmm은 게스트 하나에 최대 64개 가상 CPU를 제공한다.
  • 기본값은 1개다. 계속 쓸 개수는 vm.conf의 cpus로 지정한다.
  • vmctl start -p는 다음 부팅의 개수를 바꾸며, 실행 중인 VM은 reload만으로 바뀌지 않는다.

‘게스트 CPU는 하나’라는 제한이 8.0에서 바뀌었다

OpenBSD VM에 여러 vCPU를 배정하려면 8.0에서 원하는 개수를 지정하면 된다. 10월 20일 공개된 OpenBSD 8.0 릴리스는 내장 가상화 기능 VMM/VMD에 게스트당 최대 64개 vCPU를 지원하는 다중 프로세서 기능을 추가했다.

여기서 64는 동시에 띄울 VM 수가 아니라 가상 머신 하나에 줄 수 있는 가상 CPU 수다. 여러 VM을 각각 CPU 하나로 운영하는 구성과 한 VM 안에서 여러 CPU를 쓰는 구성이 달라진다. 과거의 단일 CPU 제한 때문에 다른 가상화 도구를 찾았다면 다시 검토할 변화다.

다만 업그레이드가 모든 VM의 CPU 개수를 늘려 주지는 않는다. 8.0의 vm.conf 매뉴얼에 명시된 기본값은 여전히 1이다. 게스트가 하나만 보고 있다면 ‘지원이 안 된다’고 결론 내리기 전에 해당 VM의 설정을 읽어야 한다.

계속 4개를 쓰려면 cpus, 한 번만 바꾸려면 -p다

반복해서 사용할 개수는 /etc/vm.conf의 해당 vm 블록 안에 적는다. 아래 한 줄은 이미 디스크와 메모리 등이 설정된 VM에 추가할 설정 예시다. 완전한 VM 생성 설정은 아니다.

cpus 4

기존에 같은 항목이 있으면 그 값을 바꾼다. 다음 시작에만 다른 개수를 쓰고 싶다면 vmctl의 start -p 옵션을 사용할 수 있다. 이미 등록돼 있고 정지된 VM 이름이 demo라면 다음 예시가 해당한다.

vmctl start -p 4 demo
목적설정 위치적용 범위
다음에도 같은 CPU 개수 사용vm.conf의 cpus 4저장된 VM 구성이다.
기존 VM의 다음 부팅만 변경vmctl start -p 4 demo그 부팅에서 설정된 개수를 덮어쓴다.
CPU 개수 미지정기본 설정기본값 1개를 쓴다.

-p로 시험한 값을 계속 쓸 생각이라면 파일에도 반영해야 한다. 한 번 실행한 시작 명령을 영구 설정 변경으로 기억하면 다음 부팅 때 결과가 달라질 수 있다.

파일을 바꿨다면 대상 VM을 멈춘 뒤 다시 읽는다

vmctl reload는 실행 중인 VM의 구성을 다시 읽지 않는다. 공식 매뉴얼은 현재 실행 중인 VM을 변경하려면 먼저 정지해야 한다고 명시한다. 파일만 수정한 뒤 reload를 실행하고 게스트 CPU가 그대로라고 해서 새 기능이 실패한 것은 아니다.

  1. 대상 게스트의 작업을 마치고 정상 종료한다.
  2. 해당 VM의 cpus 값을 저장한다.
  3. 호스트에서 vmctl reload로 설정을 다시 읽는다.
  4. VM을 시작한 뒤 게스트가 인식하는 CPU 개수를 확인한다.

이 순서는 CPU를 실행 중에 추가하는 작업이 아니라 정지와 재시작이 필요한 구성 변경이다. 다음 부팅에만 적용할 -p 방식과 파일을 다시 읽는 방식을 구분하면 시험 설정과 운영 설정을 혼동하지 않을 수 있다.

최대 64개라는 숫자가 호스트의 CPU를 늘리지는 않는다

가상 CPU는 호스트 자원을 사용한다. vmm 매뉴얼도 호스트 용량을 계획할 때 VM 수와 각 VM의 구성을 함께 고려해야 한다고 설명한다. 한 게스트의 개수만 늘리고 나머지 VM의 자원 사용을 빼놓을 수는 없다.

호스트 CPU에는 하드웨어 가상화와 nested 또는 extended paging 지원도 필요하다. 게스트당 vCPU 상한이 커졌다는 발표는 이 하드웨어 조건을 없앴다는 뜻이 아니다.

운영자가 얻은 것은 VM 하나에 여러 CPU를 배정할 선택지다. 새 개수로 부팅한 뒤 실제 작업의 처리 시간과 호스트 부하를 비교해야 적절한 값을 정할 수 있다. 설정의 출발점은 최대 숫자를 채우는 것이 아니라, 해당 VM이 쓸 개수를 명시하고 재시작 후 적용 여부를 확인하는 일이다.