암드해킨을 시도하기 전에 암드해킨과 관련해서 별 달리 리서치한 게 없다고 하면 , MacOS가 암드머신 위에서도 별 탈 없이 부트한다고 하니 해킨위에서 돌아가는 대부분의 앱들도 아무 문제 없이 돌겠지 생각하게 됩니다. 왜냐면 암드머신에서 윈도우즈도 문제 없이 잘 돌고 있기 때문이고 암드가 하루 이틀 장사한 게 아니니까요.
MacOS 상에서는 일개 앱에 불과한 가상머신 (Parallels/VMware Fusion/...) 역시 문제 없이 돌겠거니 하게 됩니다 (그게 뭐 대단한 거라고). Docker의 경우 그 자체가 가상머신은 아니지만 Linux kernel위에서 돌아야 되므로 리눅스 커널이 기본제공 되지 않는 OS 상에서는 Linux VM이 필요하게 됩니다. 따라서 MacOS 상에서는 Docker 역시 가상머신으로 취급하게 됩니다.
그러나, 최근 버전의 VM이나 Docker desktop은 암드해킨 위에서 돌지 않습니다. 이 모두 다 Apple의 hypervisor.framework을 이용하기 때문입니다. 패럴이나 VMware의 구버전의 경우는 hypervisor.framework을 쓰지 않고 마치 virtualbox처럼 자체 hypervisor를 쓰기 때문에 암드 해킨에서도 사용이 가능합니다. 아마도 hypervisor.framework을 지원하지 못하는 (구버전의 인텔 CPU를 사용하는) 맥과의 호환성을 고려한 것으로 보입니다.
그래서 실험해 봤습니다. 암드해킨 위에서 VM 되나 안되나? 가 아닌 제대로 되나 안되나?/누가 누가 잘하나?
오직 제가 가진 단 한 대의 암드머신으로 실험한 것이라 모든 암드 머신에 대해서 일반화하긴 어려운 점이 있을 수 있으니 '이렇구나' 하고 보시면 되겠습니다.
0) 실험 환경
2020년의 시각으로 보기엔 좀 아쉬운 구성입니다만 2018년이었다면 괜찮았을 조건입니다.
Ryzen 7 2700x (no OC) + Gigabyte B450M DS3H
1) 기준 비교대상
암드머신에서 가상머신이 얼마나 잘 돌아가는지 확인하기 위해서 Linux에서 QEMU/KVM으로 윈도우즈10을 돌려봤습니다.
Ryzen 7 2700x 에서 Geekbench 5 점수가 대략 900대 후반 (싱글)/6천 후반 (멀티)로 잡힙니다. Native 조건에서는 1000대 초반(싱글)/7천 초반(멀티)로 잡히니까 괜찮은 점수라고 할 수 있겠습니다. 이 차이는 아마도 host와 guest간 context switching시 발생하는 손실 때문이라고 봅니다.
2) Parallels desktop
구버전은 설치도 되고 윈도우즈도 큰 문제없이 설치할 수 있습니다. 문제는 VM에 할당한 processor의 수를 늘려도 성능 개선이 거의 없다는 겁니다. 또, 윈도우즈에서 하는 일이 아무것도 없어도 MacOS에서 보여지는 load가 기본 100% 입니다. 이를테면 코어가 2개 할당된 상황에서 윈도우즈에서 풀로드가 되면 MacOS에서 보여지는 load는 200%가 됩니다. 윈도우즈가 idle이 되어도 MacOS 상에서의 VM의 load는 100%가 잡힙니다. 신기하죠?
3) VMware Fusion
VMware Fusion 11 아래부터는 암드해킨에서 윈도우즈 설치도 되고 잘 돌아갑니다. 이때 가상머신의 hyper-V 기능은 반드시 꺼두어야 합니다. 신기한 것은 패럴랠즈나 VMware나 VM이고 (인텔맥 위에서 돌겠거니 하니까) VM 역시 인텔CPU 상에서 돌아가는 것 처럼 보여지겠지 싶지만, guest OS인 윈도우즈에서 바라보는 CPU는 모두 Ryzen 7 2700x로 나타납니다 (그러니까 CPU emulation이 되는 것은 아니구나 하게 됩니다).
그래서! VMware 상에서 hyper-V 기능을 켜면 문제가 발생합니다. VMware Fusion은 MacOS (정확히는 MacOS on Intel CPU)에서 돌아가고 있다고 가정하고 있으니 당연하게 intel의 hyper-V를 제공하려 하겠지만, guest OS인 윈도우즈에서는 CPU가 AMD CPU로 보여질테니 당연히 hyper V라고 하면 AMD의SVM을 기대했기 때문이 아닐까 합니다.
또 하나의 문제는 할당한 Core 수를 늘려줘도 geekbench score가 2500대 위로 가질 않습니다. 윈도우즈 상에서 thread를 벌여놓으면 최대 한도에 이르기 전까진 MacOS에서 보여지는 VM의 load는 계속 증가하지만 geekbench의 multicore score는 대략 core가 3-4개에서 수렴합니다.
4) Docker Desktop
- Docker Destop on MacOS
Docker desktop은 Apple의 hypervisor.framework를 이용하고 있고, 이 프레임웍이 MacOS의 kernel을 기반으로 한 것이고 kernel은 인텔 CPU를 염두해두고 만들어진 것이라 암드 해킨에선 아예 되지 않습니다. 최근 버전의 Docker toolbox도 별도로 VM을 만들어주지 않으면 hypervisor.Framework이 기본 제공되겠지 하고 있네요. Hypervisor.Framework이 얼마나 좋은 것인지는 꿩대신 닭(?)의 심정으로 Docker desktop 대신 Docker toolbox를 virtualbox위에서 돌려보면 압니다.
- Docker Desktop on Windows running as a Guest OS
Docker desktop이 암드해킨에서 제대로 돌지 않으니, '아 암드해킨에서 그래도 VMware는 나름 돌아가는 것 같으니 그 위에 윈도우즈를 돌리고 또 그 위에서 Docker Desktop을 돌려보면 어떨까?' 할 수 있을 것 같은데,
경우에 따라 다릅니다.
VMware에서 hyper-V 기능을 켜면 됩니다.
문제는 Hyper-V 기능을 켜도 Windows가 VMware에서 잘 돌아갈 때도 있고 아닐 때도 있다는 것입니다.
Core를 8개 이하로 할당할 때: Hyper-V가 동작합니다. 그래서 Docker Desktop for WIndows를 정상적으로 기동할 수 있습니다.
Core를 8개 이상으로 할당할 때: 윈도우즈 부팅 과정이 초반에 중단되고 repair-autoboot-boot crash-repair의 무한 루프를 초래합니다.
그러면 Core 8개일 때 Docker Desktop의 성능은 어떤지 궁금하게 됩니다. Windows의 성능은 Geekbench 5 score 2500 근처에서 수렴하는데, Docker Desktop은 그와 상관없이 잘 돌지 않을까? 독립적으로 구동하는 app을 multithread로 열어봤을 때 MacOS에서 보여지는 VM의 load가 800%까지 가진 않지만 생각보다 결과가 매우 빨리 얻어짐을 알 수 있었습니다.
- Docker toolbox on virtualbox
체감속도는 Hyper-V (SVM)이 제대로 제공되는 상황을 가정했을 때 대비 거의 1/10 정도 됩니다 (같은 머신에서 윈도우즈나 리눅스 상에서 docker desktop을 쓸 때 대비). virtualbox에 할당한 core의 수를 아무리 늘려줘도 MacOS상에서 보여지는 virtualbox의 load는 250%를 밑돕니다. 즉 2.5 core를 생각해볼 수 있는데 VM에서의 여러 가지 손실을 생각하면 1.x 정도 되는 듯 합니다. 2700x의 최대 thread가 16이니까 체감성능이 1/10 정도밖에 안되는 것이 충분히 말이 됩니다.
- Docker toolbox on VMware (+boot2docker.iso)
Core 16개 할당하고 16개 쓰레드를 벌려놓으면 그만큼 성능이 나온다고는 못해도 충분히 잘 동작합니다. 다만 설치과정이 좀 지저분한데 일단 설치해놓으면 잘 됩니다. 아마도 암드해킨에서 가장 쓸만한 세팅이 아닐까 합니다. 좀 뻔한 얘기일 수 있는데, volume binding을 해서 호스트 OS의 파일 시스템을 가상 OS에 붙여 작업하면 작업속도가 현저히 떨어집니다. 이것은 hypervisor.framework을 사용하는 인텔의 경우보다 더 심하게 느껴집니다.
그래서 결론은?
암드해킨에서 VM 사용가능하다, 그러나...
CPU core의 수가 2-4개 정도 되던 시절의 관점으론 암드 해킨에서 VM은 리얼맥/인텔 해킨과 견주어도 손색이 없겠다 할 것 같지만, 지금처럼 많은 core를 사용해서 병렬처리가 가능해진 시점에서는 이부분에선 애플이 하루 빨리 암드씨퓨에 관심을 가져주기만을 (그래서 암드 씨퓨도 고려한 hypervisor.framework으로 업데 해주길) 바랄 뿐입니다. CPU가 기본 제공하는 core수가 많지 않다고 보면 암드 씨퓨에서 SVM(intel VT-x)의 도움없이 VM을 돌려도 성능 차는 크지 않습니다. (그러니 쓸만하다고 볼 수 있습니다? )
그래서, 암드해킨에서 불가피하게 VM을 써야 한다고 하면,
- Windows VM
잉여력을 동원해서 얻은 결론으로는 VMware (<= ver 11)가 가장 좋았습니다. 2700x 기준 core를 3-4 개 정도 할당하는 게 최적이었고 대충 윈도우즈에서 office 작업 정도 하기에 (약간 답답해도) 적당하지 싶었습니다. Core수를 늘렸을 때 thread간 통신이 별로 없는 app을 multi-thread로 돌리면 그만큼 성능이 향상되지 싶었는데 system load만 그만큼 늘어날 뿐, 체감 성능은 그다지 좋아지지 않았습니다.
- Docker
Docker toolbox를 VMware위에서 돌리면 잘 됩니다. 인텔해킨 위에 Docker Desktop을 돌리는 것만큼 설치가 깔끔하진 않아도 비교적 깔끔하게 돌 뿐더러 성능도 괜찮게 나옵니다. 아직 사용기간이 길지 않아서 특별한 문제점을 발견하진 못했습니다만.
피드백 감사합니다. 제 경우에 core를 16개 할당하고 Hyper-V 기능을 켰는데 윈도우즈가 무한 부팅 (부팅 - repair - 부팅) 루프에 빠져서 안되는 것으로 결론 지었는데, Core를 8개 이하로 잡으니 Hyper-V 기능이 정상적으로 동작해서 VMware-Windows상에서 Docker Desktop이 정상동작하는 것을 확인했습니다. 이 포스트의 내용은 그에 맞춰 업데이트 했습니다. Core를 8개 초과로 할당하고 Hyper-V를 켜놓으면 윈도우즈에서 문제가 발생하는 것은 제가 사용하는 환경에만 국한될 수 있습니다.
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +29 | 937 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +23 | 575 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1402 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 575 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 909 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 4002 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5086 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
Hot AMD Sequoia용 AppleALC 1.9.2 +3 | 106 | 24.10.2319:04 | 사노라맨 |
Hot [Sequoia 15.0.1, OC r1.0.2] ASUS TUF B550-PLUS / RYZEN 5 5600X / RX470 +2 | 102 | 24.10.2322:26 | 뿌엥 |
Hot OCLP로 지원되지 않는 기기/dGPU를 사용하는 해킨토시의 사이드카 품질 문제 해결방법 +1 | 119 | 24.10.2321:29 | 해킨도전자 |
102 | 24.10.2322:26 | 뿌엥 | |
119 | 24.10.2321:29 | 해킨도전자 | |
106 | 24.10.2319:04 | 사노라맨 | |
784 | 24.10.1412:27 | shl628 | |
664 | 24.10.1316:00 | 수박 | |
344 | 24.10.1222:56 | Stultus | |
937 | 24.10.1121:10 | 좌절금지 | |
732 | 24.10.1115:53 | 수박 | |
575 | 24.10.0900:22 | 줌바이퍼 | |
1402 | 24.07.1219:19 | Stultus | |
1210 | 24.10.0500:31 | 줌바이퍼 | |
569 | 24.10.0410:49 | Tamy | |
749 | 24.09.2923:48 | 머트 | |
628 | 24.09.2822:28 | 머트 | |
463 | 24.09.2808:22 | Tamy | |
894 | 24.09.2321:32 | Stultus | |
994 | 24.09.2210:59 | 좌절금지 | |
644 | 24.09.2203:23 | 누림어멈 | |
1191 | 24.09.1919:17 | 좌절금지 | |
575 | 24.09.1917:09 | 좌절금지 | |
498 | 24.09.1813:37 | Stultus | |
909 | 24.09.1723:58 | 좌절금지 | |
601 | 24.09.1722:40 | 좌절금지 | |
453 | 24.09.1717:13 | 맥가즈아 | |
562 | 24.09.1708:13 | 김경석 | |
234 | 24.09.1617:47 | Panictosh | |
768 | 24.09.1504:35 | Tamy | |
584 | 24.09.1319:18 | Stultus | |
706 | 24.09.1019:44 | 치토 | |
484 | 24.09.0118:13 | 머핀X | |
462 | 24.09.0112:54 | 해킨도전자 | |
546 | 24.08.3115:34 | 머핀X | |
306 | 24.08.2601:42 | 화정큐삼 | |
305 | 24.08.2422:59 | 하나브 | |
318 | 24.08.2316:25 | 화정큐삼 | |
415 | 24.08.1810:56 | CanBe | |
363 | 24.08.1800:04 | 화정큐삼 | |
300 | 24.08.1722:03 | 화정큐삼 | |
201 | 24.08.1710:14 | jbhlyk | |
312 | 24.08.1622:06 | Stultus | |
218 | 24.08.1511:16 | hackillious | |
169 | 24.08.1421:30 | 세유니 | |
419 | 24.08.1419:58 | Stultus | |
377 | 24.08.1311:26 | 오디세이 | |
270 | 24.08.1115:46 | 좌절금지 | |
186 | 24.08.1111:21 | 티타보르 | |
233 | 24.08.1022:46 | Stultus | |
538 | 24.08.1022:10 | 오디세이 | |
168 | 24.08.1019:05 | jbhlyk | |
200 | 24.08.0923:20 | RogerT |
수고하셨어요.