1 điểm bởi GN⁺ 2 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Kết quả đo lại macOS 26.4.1 VM trên Mac mini M4 Pro cho thấy ngay cả với cấu hình 5 lõi ảo và 16GB vRAM, hiệu năng CPU đơn nhân và GPU vẫn gần sát với máy chủ
  • Theo Geekbench 6.7.1, CPU đơn nhân đạt VM 3.855 / host 3.948, GPU Metal đạt VM 106.896 / host 111.970, tương ứng khoảng 98% và 95% so với host
  • CPU đa nhân đạt VM 13.222 / host 23.342; do host có 14 lõi (10 P + 4 E) còn VM có 5 lõi ảo nên khó so sánh trực tiếp, nhưng hiệu năng VM vẫn khá tốt
  • Phần yếu nhất là Neural Engine ảo; trong các bài thử CoreML half-precision và quantized, nó chậm hơn host đáng kể, và có thể kỳ vọng các tác vụ AI trong VM sẽ được xử lý bằng CPU và GPU
  • Trong bài thử cấu hình tối thiểu, chỉ với 2 lõi ảo và 4GB bộ nhớ vẫn xử lý bình thường các tác vụ nhẹ như Safari và phân tích dung lượng lưu trữ trong Cài đặt; nếu tính đến cập nhật macOS thì dung lượng lưu trữ VM tối thiểu phù hợp là 60GB

Bối cảnh thử nghiệm

  • Các con số hiệu năng dùng trong bài đánh giá ảo hóa macOS trên Apple silicon là các số đo trước đó, và chưa đề cập đến cấu hình tối thiểu để có một VM đủ dùng
  • Trong bối cảnh ngày càng có nhiều quan tâm đến việc chạy VM trên MacBook Neo, bài viết kiểm tra lại hiệu năng và cấu hình tối thiểu theo macOS Tahoe

Đo hiệu năng và cách diễn giải

  • Máy host dùng để thử nghiệm là Mac mini M4 Pro, chạy macOS 26.4.1, cấu hình 14 lõi (10 P + 4 E), RAM 48GB, SSD trong 2TB
  • Máy khách VM được cấp 5 lõi ảo và 16GB RAM ảo
  • Điểm Geekbench 6.7.1 của cả host và VM đều nhanh hơn đôi chút so với trước đây
  • Kết quả đo như sau
    • CPU đơn nhân: VM 3.855, host 3.948
    • CPU đa nhân: 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
  • Ba con số của Neural Engine CoreML lần lượt là kết quả cho các bài thử đơn chính xác, bán chính xác, lượng tử hóa
  • Kết quả CPU đa nhân khó so sánh trực tiếp vì host có số lõi nhiều hơn VM hơn gấp đôi, trong đó có 4 lõi E
  • So sánh hiệu năng GPU là kết quả trong điều kiện host không đồng thời cạnh tranh sử dụng GPU
  • Khi chạy trong VM, có thể kỳ vọng macOS sẽ xử lý các tác vụ AI bằng CPU và GPU thay vì Neural Engine

Thử nghiệm cấu hình tối thiểu

  • Sau khi MacBook Neo xuất hiện, đã có sự quan tâm đến việc liệu thiết bị đó có thể chạy VM hay không
  • Với vai trò host Linux thì có vẻ ổn, nhưng việc nó có thể làm được công việc hữu ích với macOS VM hay không từng bị nghi ngờ; tuy nhiên thử nghiệm thực tế cho thấy là có thể
  • Để xác nhận cấu hình tối thiểu, cùng VM macOS 26.4.1 đó được chạy trong Viable với mức cấp phát lõi CPU và bộ nhớ giảm dần
  • Cửa sổ hiển thị VM được đặt ở chuẩn 1600 × 1000
  • Safari được dùng theo nhiều cách khác nhau, cùng với các tác vụ hằng ngày nhẹ bao gồm phân tích dung lượng lưu trữ trong Cài đặt
  • Kết quả theo từng cấu hình như sau
    • Với 4 lõi ảo và 8GB vRAM, VM chạy hoàn toàn mượt mà, bộ nhớ sử dụng khoảng 5GB
    • Với 3 lõi và 6GB, mức dùng bộ nhớ giảm còn 3,9GB và mọi tác vụ đều hoạt động tốt
    • Với 2 lõi và 4GB bộ nhớ, chỉ dùng 3,1GB và vẫn tiếp tục xử lý bình thường các tác vụ nhẹ
  • Một macOS VM chỉ được cấp 2 lõi ảo và 4GB bộ nhớ cũng có vẻ khả thi trên MacBook Neo, và có thể đáp ứng tốt các công việc hằng ngày
  • Đây không phải là nơi để thử chạy LLM, nhưng đủ hữu dụng cho các tác vụ macOS nhẹ

Dung lượng lưu trữ và giới hạn cập nhật

  • Khi tạo VM trên các máy Mac có SSD trong dung lượng nhỏ, cần chú ý đến kích thước VM
  • macOS VM nhỏ hơn nhiều so với 50GB sẽ không thể thực hiện cập nhật macOS
  • Để có dư địa và an toàn, nên nhắm mức tối thiểu 60GB
  • Trên APFS, VM được lưu dưới dạng sparse file, nên ngay cả VM mặc định 100GB cũng chỉ cần khoảng 54GB trên đĩa thực tế
  • Cấu hình như vậy có thể phù hợp hơn với MacBook Neo có SSD 512GB

1 bình luận

 
Ý kiến trên Hacker News
  • Đây là một lời nhắc hữu ích rằng có một lượng bộ nhớ nào đó bị ràng buộc theo từng lõi. Có lẽ chủ yếu liên quan đến page cache hoặc xử lý đồng thời

    • Tôi sẽ đặt cược vào giả thuyết không. Nếu giữ cố định số lõi và chỉ điều chỉnh dung lượng bộ nhớ VM, có lẽ cũng sẽ xuất hiện cùng một mức thay đổi về sử dụng bộ nhớ
    • Nói chung, dung lượng bộ nhớ vật lý gắn trên máy cũng nên tỷ lệ với số luồng phần cứng mà CPU cung cấp
      Không chỉ vì hệ điều hành có thể cấp một phần bộ nhớ cho mỗi luồng, mà còn vì các ứng dụng đa luồng dùng hết mọi luồng, như biên dịch các dự án phần mềm lớn, thường chiếm bộ nhớ làm việc tỷ lệ theo số luồng tác vụ
      Tôi cũng đã thấy nhiều ứng dụng đa luồng chỉ chạy ổn khi có tối đa khoảng 2GB cho mỗi luồng, nên với CPU desktop 32 luồng như Ryzen 9 9950X thì 64GB là rất hợp lý
      Khi biên dịch các dự án như Chrome/Chromium, nếu CPU 16 lõi/32 luồng chỉ có 32GB RAM thì bạn phải giảm số lượt biên dịch đồng thời bằng tham số phù hợp như make -j, chấp nhận để một số lõi rảnh. Nếu không, bạn có thể gặp lỗi thiếu bộ nhớ
    • Đúng là có overhead theo từng lõi, nhưng có vẻ khả năng cao việc giảm mức sử dụng này là do cách kernel phân bổ bộ nhớ thay đổi khi bộ nhớ khả dụng giảm đi
      Khi có nhiều bộ nhớ, kernel sẽ giữ cache đọc lâu hơn, ưu tiên nén bộ nhớ thay vì swap ra đĩa, và ít dọn dẹp bộ nhớ có thể thu hồi hơn. Kích thước buffer nội bộ và bảng vnode cũng được điều chỉnh theo tổng lượng bộ nhớ
      Điều này tốt ở chỗ tận dụng tối đa tài nguyên khả dụng một cách động, nhưng cái giá phải trả là khó nhìn ra mức nền tối thiểu cần cho hoạt động thực tế
      Một lệnh thú vị để kiểm tra là vm_stat, nơi bạn có thể xem các giá trị như free/active/inactive/wired/purgeable pages, compressor, pagein/pageout, swapin/swapout. Chỉnh sửa: không rõ là Markdown không hỗ trợ code fence hay là tôi làm sai gì đó
  • Tôi mới mua M5 Air gần đây và đây là lần đầu dùng macOS, nên đang tìm hiểu phần này; nhưng có vẻ gần như không thể đồng thời có pytorch, tăng tốc GPU và mức cô lập kiểu VM/container
    Lớp virtio-gpu có vẻ là thứ gần nhất, nhưng dường như nó chỉ chuyển tiếp GPU đồ họa chứ không phải GPU tính toán, nên pytorch không dùng được

    • Tôi cũng cần thứ này nên đã tìm khá nhiều từ một năm trước. Tôi vẫn chưa có thời gian kiểm tra các thay đổi gần đây ở Docker Model Runner (vllm-metal) hay podman libkrun, nhưng cả hai đều không được sao?
    • Tôi đã chạy torch thành công trên instance Cirruslabs Tart
  • Trên macOS, thứ duy nhất tôi đã dùng VM với là colima+docker, và nó tương đối đau đớn, kém hiệu quả. Dù vậy vẫn dùng được

    • Bạn nên thử container CLI của Apple. Vài tuần trước, trong một cuối tuần, tôi đã chuyển một dự án của mình từ colima+docker sang đó khá dễ dàng
      https://github.com/apple/container
    • Tôi đã mua một chiếc Mac Mini cho CI cục bộ và định dùng cùng Forgejo Actions, nên đã khảo sát khá rộng hệ sinh thái, nhưng cuối cùng lại chọn hướng build trên host
      Việc cô lập thiết lập ký và công chứng khỏi host có vẻ quá khó để xoay xở, kể cả khi dùng agent. Dù vậy, giờ việc build macOS thực sự rất nhanh, còn ký/công chứng thì chỉ mất khoảng 200 dòng Bash
    • OrbStack khá tốt. Tôi không thấy nó kém hiệu quả gì đặc biệt
  • https://github.com/trycua/cua/tree/main/libs/lume đã cho thấy một cách tiếp cận thú vị với vấn đề này

  • Dù VM chỉ dùng 5GB lúc khởi động, chẳng phải khi chạy ứng dụng bên trong VM thì nó sẽ muốn toàn bộ 8GB đã cấp phát, chứ không chỉ 5GB lúc đầu sao?

    • Tôi không nghĩ ảo hóa trên macOS đủ tiên tiến để hỗ trợ memory ballooning, chẳng phải ý là vậy sao?
      Chỉnh sửa: tôi đã nhầm
  • Có vẻ tôi là người có bản nhỏ nhất. docker.io/gotson/crossbuild latest d96ea9b7054b 3 years ago 6.71 GB, và tôi đang dùng nó để cross-build cho Darwin

  • Thành thật mà nói, macOS có lẽ có thể xuống thấp hơn rất nhiều nếu tắt những thứ không thực sự cần trong VM
    Chiếc iPhone đầu tiên chỉ có 128MiB RAM, và theo tôi biết nó chạy một phiên bản macOS Tiger đã bị cắt gọt. Cho đến nay RAM vẫn khá dư dả nên chưa có lý do để tinh giản, nhưng rõ ràng là có thể, và có lẽ cũng không quá khó. Chỉ cần thử lại thôi

    • iPhone đời đầu không có đa nhiệm ứng dụng, nên khác biệt khá lớn. Ứng dụng sẽ bị thoát khi đóng lại
  • Có thể chạy macOS trên PC không? Hoặc ít nhất là có cách nào để phát triển cho Mac trên PC không?

    • Có thể boot macOS bằng QEMU, nhưng không dùng được đồ họa tăng tốc phần cứng và một số tính năng khác
  • Hơi lạc đề một chút, nhưng có thể đăng ký Intune cho một macOS VM như thiết bị cá nhân không?

  • Tôi tự hỏi vì sao không ai tạo ra một môi trường agent chuyên cho macOS. Sẽ hay nếu agent có thể được spawn trong một môi trường Mac