코어마다 묶이는 메모리가 어느 정도 있다는 좋은 reminder임. 아마 주로 페이지 캐시나 동시성 처리 같은 쪽일 가능성이 큼
귀무가설 쪽에 걸겠음. 코어 수를 고정하고 VM 메모리 크기만 조정해도 같은 메모리 사용량 변화가 나타났을 것 같음
일반적으로 컴퓨터에 장착한 물리 메모리 용량도 CPU가 제공하는 하드웨어 스레드 수에 비례해야 함
운영체제가 스레드마다 일부 메모리를 할당할 수 있을 뿐 아니라, 큰 소프트웨어 프로젝트 컴파일처럼 모든 스레드를 쓰는 멀티스레드 앱은 작업 스레드 수에 비례해 작업 메모리를 잡는 경우가 많음
스레드당 최대 2GB 정도가 있어야 잘 도는 멀티스레드 앱도 많이 봤고, Ryzen 9 9950X처럼 32스레드 데스크톱 CPU라면 64GB가 맞아떨어짐
Chrome/Chromium 계열 같은 프로젝트를 컴파일할 때 16코어/32스레드 CPU에 32GB만 있으면, make -j 같은 적절한 파라미터로 동시 컴파일 수를 줄여 일부 코어를 놀려야 함. 아니면 메모리 부족 오류를 만날 수 있음
코어당 오버헤드가 있는 건 맞지만, 이 사용량 감소는 사용 가능한 메모리가 줄어들면서 커널의 메모리 할당 방식이 바뀐 영향일 가능성이 더 커 보임
메모리가 많으면 커널은 읽기 캐시를 더 오래 유지하고, 디스크 스왑보다 메모리 압축을 선호하며, 회수 가능한 메모리 정리를 덜 자주 함. 내부 버퍼 크기와 vnode 테이블도 총 메모리에 따라 조정됨
사용 가능한 자원을 동적으로 최대한 활용한다는 점에서는 좋은데, 실제 동작에 필요한 최소 기준선을 보기 어렵게 만드는 대가가 있음
확인해보면 재미있는 명령은 vm_stat이고, free/active/inactive/wired/purgeable 페이지, compressor, pagein/pageout, swapin/swapout 같은 값을 볼 수 있음. 편집: 코드 펜스 Markdown 지원이 안 되는 건지, 내가 뭔가 잘못한 건지 모르겠음
최근 M5 Air를 샀고 macOS는 처음이라 이 부분을 파악하는 중인데, pytorch, GPU 가속, VM/컨테이너 수준 격리를 동시에 얻는 건 사실상 불가능해 보임 virtio-gpu 계층이 가장 가까워 보이지만, 계산용 GPU가 아니라 그래픽 GPU만 넘겨주는 듯해서 pytorch는 안 됨
나도 이게 필요해서 1년 전 꽤 많이 찾아봤음. 최근의 Docker Model Runner(vllm-metal)나 podman libkrun 쪽 변화는 아직 확인할 시간이 없었는데, 둘 다 안 됐나?
Cirruslabs Tart 인스턴스에서 torch를 실행하는 데 성공했음
macOS에서 VM을 써본 건 colima+docker뿐인데, 비교적 고통스럽고 비효율적임. 그래도 쓸 수는 있음
로컬 CI 용도로 Mac Mini를 샀고 Forgejo Actions와 함께 쓰려고 생태계를 넓게 훑어봤지만, 결국 호스트에서 빌드하는 쪽으로 갔음
서명과 공증 설정을 호스트로부터 격리하는 일은 에이전트를 써도 감당하기 어려워 보였음. 그래도 이제 macOS 빌드는 정말 빠르고, 서명/공증도 Bash 약 200줄이면 됨
VM 시작 시 5GB만 쓴다고 해도, VM 안에서 앱을 실행하면 시작 때 쓰는 5GB가 아니라 할당한 8GB 전체를 원하게 되는 것 아닌가?
macOS 가상화가 메모리 벌루닝을 지원할 만큼 고급이라고 생각하지 않았는데, 그 얘기가 아닌가?
편집: 내가 틀렸음
내가 가장 작은 걸 갖고 있는 것 같음. docker.io/gotson/crossbuild latest d96ea9b7054b 3 years ago 6.71 GB이고, Darwin 크로스 빌드에 쓰고 있음
솔직히 macOS는 VM에 꼭 필요하지 않은 것들을 끄면 그보다 훨씬 낮게도 내려갈 수 있을 것 같음
첫 iPhone은 RAM이 128MiB뿐이었고, 잘라낸 macOS Tiger 버전을 돌렸던 것으로 알고 있음. 지금까지는 RAM이 꽤 넉넉해서 줄일 이유가 없었을 뿐, 분명 가능하고 아마 그렇게 어렵지도 않을 것임. 다시 시도하기만 하면 됨
초기 iPhone에는 앱 멀티태스킹이 없었으니 차이가 꽤 큼. 앱은 닫히면 종료됐음
PC에서 macOS를 실행할 수 있나? 아니면 최소한 PC에서 Mac용 개발을 어떤 식으로든 할 수 있나?
QEMU로 macOS 부팅은 가능하지만, 하드웨어 가속 그래픽이나 몇몇 기능은 쓸 수 없음
좀 뜬금없는 질문이지만, macOS VM을 개인 기기로 Intune 등록하는 게 가능할까?
왜 아무도 macOS 전용 에이전트 환경을 만들지 않는지 궁금함. 에이전트가 Mac 환경에서 spawn되는 식이면 좋을 텐데
Hacker News 의견들
코어마다 묶이는 메모리가 어느 정도 있다는 좋은 reminder임. 아마 주로 페이지 캐시나 동시성 처리 같은 쪽일 가능성이 큼
운영체제가 스레드마다 일부 메모리를 할당할 수 있을 뿐 아니라, 큰 소프트웨어 프로젝트 컴파일처럼 모든 스레드를 쓰는 멀티스레드 앱은 작업 스레드 수에 비례해 작업 메모리를 잡는 경우가 많음
스레드당 최대 2GB 정도가 있어야 잘 도는 멀티스레드 앱도 많이 봤고, Ryzen 9 9950X처럼 32스레드 데스크톱 CPU라면 64GB가 맞아떨어짐
Chrome/Chromium 계열 같은 프로젝트를 컴파일할 때 16코어/32스레드 CPU에 32GB만 있으면,
make -j같은 적절한 파라미터로 동시 컴파일 수를 줄여 일부 코어를 놀려야 함. 아니면 메모리 부족 오류를 만날 수 있음메모리가 많으면 커널은 읽기 캐시를 더 오래 유지하고, 디스크 스왑보다 메모리 압축을 선호하며, 회수 가능한 메모리 정리를 덜 자주 함. 내부 버퍼 크기와 vnode 테이블도 총 메모리에 따라 조정됨
사용 가능한 자원을 동적으로 최대한 활용한다는 점에서는 좋은데, 실제 동작에 필요한 최소 기준선을 보기 어렵게 만드는 대가가 있음
확인해보면 재미있는 명령은
vm_stat이고, free/active/inactive/wired/purgeable 페이지, compressor, pagein/pageout, swapin/swapout 같은 값을 볼 수 있음. 편집: 코드 펜스 Markdown 지원이 안 되는 건지, 내가 뭔가 잘못한 건지 모르겠음최근 M5 Air를 샀고 macOS는 처음이라 이 부분을 파악하는 중인데,
pytorch, GPU 가속, VM/컨테이너 수준 격리를 동시에 얻는 건 사실상 불가능해 보임virtio-gpu계층이 가장 가까워 보이지만, 계산용 GPU가 아니라 그래픽 GPU만 넘겨주는 듯해서pytorch는 안 됨vllm-metal)나podman libkrun쪽 변화는 아직 확인할 시간이 없었는데, 둘 다 안 됐나?torch를 실행하는 데 성공했음macOS에서 VM을 써본 건 colima+docker뿐인데, 비교적 고통스럽고 비효율적임. 그래도 쓸 수는 있음
colima+docker에서 꽤 쉽게 옮겼음https://github.com/apple/container
서명과 공증 설정을 호스트로부터 격리하는 일은 에이전트를 써도 감당하기 어려워 보였음. 그래도 이제 macOS 빌드는 정말 빠르고, 서명/공증도 Bash 약 200줄이면 됨
https://github.com/trycua/cua/tree/main/libs/lume가 이 문제에 대해 흥미로운 접근을 보여줬음
VM 시작 시 5GB만 쓴다고 해도, VM 안에서 앱을 실행하면 시작 때 쓰는 5GB가 아니라 할당한 8GB 전체를 원하게 되는 것 아닌가?
편집: 내가 틀렸음
내가 가장 작은 걸 갖고 있는 것 같음.
docker.io/gotson/crossbuild latest d96ea9b7054b 3 years ago 6.71 GB이고, Darwin 크로스 빌드에 쓰고 있음솔직히 macOS는 VM에 꼭 필요하지 않은 것들을 끄면 그보다 훨씬 낮게도 내려갈 수 있을 것 같음
첫 iPhone은 RAM이 128MiB뿐이었고, 잘라낸 macOS Tiger 버전을 돌렸던 것으로 알고 있음. 지금까지는 RAM이 꽤 넉넉해서 줄일 이유가 없었을 뿐, 분명 가능하고 아마 그렇게 어렵지도 않을 것임. 다시 시도하기만 하면 됨
PC에서 macOS를 실행할 수 있나? 아니면 최소한 PC에서 Mac용 개발을 어떤 식으로든 할 수 있나?
좀 뜬금없는 질문이지만, macOS VM을 개인 기기로 Intune 등록하는 게 가능할까?
왜 아무도 macOS 전용 에이전트 환경을 만들지 않는지 궁금함. 에이전트가 Mac 환경에서 spawn되는 식이면 좋을 텐데