Quão rápido pode ser um VM do macOS e quão pequeno ele pode ficar?
(eclecticlight.co)- Ao medir novamente um VM do macOS 26.4.1 em um Mac mini M4 Pro, mesmo com configuração de 5 núcleos virtuais e 16 GB de vRAM, o desempenho de CPU single-core e de GPU ficou próximo ao do host
- Segundo o Geekbench 6.7.1, a CPU single-core marcou 3.855 no VM vs. 3.948 no host, e a GPU Metal 106.896 no VM vs. 111.970 no host, o que corresponde a cerca de 98% e 95% do host, respectivamente
- A CPU multi-core marcou 13.222 no VM vs. 23.342 no host; como o host tem 14 núcleos (10 P + 4 E) e o VM tem 5 núcleos virtuais, a comparação direta é difícil, mas o desempenho do VM é bastante bom
- O ponto mais fraco foi o Neural Engine virtual, que ficou bem mais lento que o host em testes de meia precisão e quantização no CoreML; no VM, é razoável esperar que tarefas de IA sejam processadas por CPU e GPU
- No teste de configuração mínima, mesmo com apenas 2 núcleos virtuais e 4 GB de memória, tarefas leves como Safari e a análise de armazenamento nos Ajustes funcionaram normalmente; considerando atualizações do macOS, o ideal é que o armazenamento do VM tenha pelo menos 60 GB
Contexto do teste
- Os números de desempenho usados na análise sobre virtualização do macOS no Apple silicon eram medições anteriores e não abordavam as especificações mínimas para um VM utilizável
- Com o aumento do interesse em executar VMs no MacBook Neo, o desempenho e a configuração mínima no macOS Tahoe foram verificados novamente
Medição e interpretação do desempenho
- O host de teste é um Mac mini M4 Pro, com macOS 26.4.1, 14 núcleos (10 P + 4 E), 48 GB de RAM e SSD interno de 2 TB
- Ao VM convidado foram atribuídos 5 núcleos virtuais e 16 GB de RAM virtual
- As pontuações do Geekbench 6.7.1 ficaram ligeiramente melhores do que antes, tanto no host quanto no VM
- Os resultados foram os seguintes
- CPU single-core: VM 3.855, host 3.948
- CPU multi-core: VM 13.222, host 23.342
- GPU Metal: VM 106.896, host 111.970
- Neural Engine CoreML: VM 5.291 / 8.577 / 6.877, host 5.973 / 41.251 / 56.616
- Os três números do Neural Engine CoreML correspondem, nessa ordem, aos testes de precisão simples, meia precisão e quantização
- O resultado de CPU multi-core é difícil de comparar diretamente, porque o host tem mais que o dobro de núcleos do VM, e 4 deles são núcleos E
- A comparação de desempenho da GPU foi feita em condição na qual o host não estava competindo pelo uso da GPU ao mesmo tempo
- Ao rodar no VM, é razoável esperar que o macOS processe tarefas de IA com CPU e GPU em vez de usar o Neural Engine
Teste de configuração mínima
- Após o lançamento do MacBook Neo, surgiu interesse em saber se seria possível executar VMs nesse dispositivo
- Para uso como host Linux, isso parecia viável, mas havia dúvida se seria possível fazer trabalho útil com um VM do macOS; nos testes reais, isso se mostrou possível
- Para verificar a configuração mínima, o mesmo VM do macOS 26.4.1 foi executado no Viable com alocações progressivamente menores de núcleos de CPU e memória
- A janela de exibição do VM foi configurada no padrão 1600 × 1000
- Foram realizados usos variados do Safari e tarefas leves do dia a dia, incluindo a análise de armazenamento nos Ajustes
- Os resultados por configuração foram os seguintes
- Com 4 núcleos virtuais e 8 GB de vRAM, o VM funcionou com total fluidez, e o uso de memória ficou em cerca de 5 GB
- Com 3 núcleos e 6 GB, o uso de memória caiu para 3,9 GB e todas as tarefas funcionaram bem
- Com 2 núcleos e 4 GB de memória, foram usados apenas 3,1 GB, e tarefas leves continuaram funcionando normalmente
- Um VM do macOS com apenas 2 núcleos virtuais e 4 GB de memória também parece viável no MacBook Neo e consegue lidar suficientemente bem com tarefas cotidianas
- Esse tipo de VM não é um lugar para testar execução de LLMs, mas é plenamente utilizável para tarefas leves no macOS
Restrições de armazenamento e atualizações
- Ao criar um VM em um Mac com SSD interno pequeno, é preciso ter cuidado com o tamanho do VM
- Um VM do macOS muito menor que 50 GB acaba não conseguindo realizar atualizações do macOS
- Para ter margem e segurança, o ideal é mirar em pelo menos 60 GB
- No APFS, o VM é armazenado como arquivo esparso, então mesmo um VM padrão de 100 GB precisa de apenas cerca de 54 GB no disco real
- Essa configuração pode ser acomodada de forma mais adequada em um MacBook Neo com SSD de 512 GB
1 comentários
Comentários do Hacker News
É um bom lembrete de que existe certa quantidade de memória atrelada a cada núcleo. Provavelmente isso tem mais a ver com cache de páginas ou coisas como tratamento de concorrência
Não só porque o sistema operacional pode alocar alguma memória por thread, mas também porque apps multithread que usam todas as threads, como a compilação de grandes projetos de software, muitas vezes consomem memória de trabalho proporcional ao número de threads ativas
Já vi muitos apps multithread funcionarem bem apenas com algo como 2 GB por thread no máximo, então para uma CPU desktop de 32 threads como o Ryzen 9 9950X, 64 GB faz bastante sentido
Ao compilar projetos como Chrome/Chromium, se você tiver uma CPU de 16 núcleos/32 threads e só 32 GB de RAM, precisa reduzir o paralelismo da compilação com parâmetros adequados, como
make -j, e deixar alguns núcleos ociosos. Caso contrário, pode acabar encontrando erros de falta de memóriaQuando há bastante memória, o kernel mantém o cache de leitura por mais tempo, prefere compressão de memória a swap em disco e limpa memória recuperável com menos frequência. O tamanho de buffers internos e da tabela de vnode também é ajustado com base na memória total
Isso é bom no sentido de aproveitar dinamicamente ao máximo os recursos disponíveis, mas tem o custo de dificultar enxergar a linha de base mínima necessária para o funcionamento real
Um comando interessante para conferir é
vm_stat, que permite ver valores como páginas free/active/inactive/wired/purgeable, compressor, pagein/pageout e swapin/swapout. Edit: não sei se o suporte a Markdown com cerca de código não funciona, ou se fui eu que fiz algo erradoComprei recentemente um M5 Air e, como é meu primeiro macOS, estou tentando entender essa parte, mas parece praticamente impossível ter ao mesmo tempo
pytorch, aceleração por GPU e isolamento no nível de VM/contêinerA camada
virtio-gpuparece ser a opção mais próxima, mas ao que tudo indica ela repassa apenas GPU gráfica, não GPU de computação, então não serve parapytorchvllm-metal) ou empodman libkrun, mas nenhum dos dois funcionou?torchem uma instância Tart da CirruslabsA única experiência que tive com VM no macOS foi com colima+docker, e foi relativamente dolorosa e ineficiente. Ainda assim, dá para usar
colima+dockercom bastante facilidadehttps://github.com/apple/container
Isolar do host a configuração de assinatura e notarização parecia difícil demais de administrar, mesmo usando um agente. Ainda assim, agora os builds no macOS estão realmente rápidos, e assinatura/notarização cabem em cerca de 200 linhas de Bash
https://github.com/trycua/cua/tree/main/libs/lume mostrou uma abordagem interessante para esse problema
Mesmo que use só 5 GB na inicialização da VM, quando você executa apps dentro dela, não vai acabar querendo os 8 GB inteiros alocados, e não apenas os 5 GB usados no início?
Edit: eu estava errado
Acho que eu tenho o menor deles.
docker.io/gotson/crossbuild latest d96ea9b7054b 3 years ago 6.71 GB, e estou usando para cross-build de DarwinSinceramente, parece que o macOS poderia ir bem mais para baixo do que isso se você desativasse as coisas de que uma VM realmente não precisa
O primeiro iPhone tinha só 128 MiB de RAM e, pelo que eu saiba, rodava uma versão reduzida do macOS Tiger. Até agora, a RAM era abundante o bastante para não haver motivo para enxugar isso, mas certamente é possível e provavelmente nem tão difícil assim. Basta tentarem de novo
Dá para rodar macOS em um PC? Ou pelo menos fazer desenvolvimento para Mac em um PC de alguma forma?
Pergunta talvez meio aleatória, mas será que é possível registrar no Intune uma VM de macOS como dispositivo pessoal?
Fico pensando por que ninguém cria um ambiente de agente dedicado a macOS. Seria legal se o agente fosse spawnado já dentro de um ambiente Mac