본문 바로가기
C.W.K.
Lesson 05 of 06 · published

맥 아홉 대, 한 집: 이 퀘스트의 실험실

~15 min · map, fleet, laboratory, measurement, privacy

Level 0스펙 시트 훑는 사람
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"이름 못 대는 기계에서 나온 벤치마크는 소문이야. ssh로 들어갈 수 있는 기계에서 나온 벤치마크는 데이터고."

기계들

이 퀘스트의 실측 숫자는 전부 한 집에 있는 맥 아홉 대 중 하나에서 나왔고, 2026-09-15에 ssh로 라이브로 읽었어. 여기선 역할 별칭으로 등장해. office, server, 이런 식으로. 칩, 메모리, 하는 일은 붙고, 호스트명, 주소, 주인은 절대 안 붙어. 프라이버시 규칙이면서 동시에 가르치는 규칙이야. 숫자를 해석하는 데 필요한 건 실리콘이 뭐고 그때 기계가 무슨 짐을 지고 있었냐지, 어디 사는지가 아니거든.

별칭기계칩CPUGPU 코어메모리역할증거
officeMac StudioM3 Ultra24P + 8E80512 GB엔진들과 컨트롤 플레인들, 피파의 집실측 2026-09-15
serverMac StudioM3 Ultra24P + 8E80512 GB추론 허브: 임베딩, 리랭킹, 이미지 생성, 채팅 모델실측 2026-09-15
workerMac StudioM2 Ultra16P + 8E76192 GB임대받은 작업: 미디어 스캔, 트랜스코딩, 전사실측 2026-09-15
musicMac StudioM2 Ultra16P + 8E76192 GB음악 작업실실측 2026-09-15
macbookMacBook ProM5 Max슈퍼 6 + 성능 1240128 GB메인 노트북실측 2026-09-15
pro2024MacBook ProM4 Max12P + 4E40128 GB노트북실측 2026-09-15
pro2023MacBook ProM3 Max12P + 4E40128 GB노트북실측 2026-09-15
airMacBook AirM34P + 4E1024 GB전자 드럼 세트의 맥실측 2026-09-15
miniMac miniM4 Pro10P + 4E2064 GB음악 서버실측 2026-09-15

아홉 대 전부 macOS 26.6.2를 돌리고 페이지 크기 16 KB를 보고해. 전부 rdma_ctl 도구가 깔려 있고, 전부 disabled라고 답해. 이건 그 기계가 Thunderbolt RDMA를 쓸 수 있는지에 대해선 아무 말도 안 해(그건 Thunderbolt 5 문제고, 큰 모델 트랙에서 정리해). 아무도 안 켰다는 뜻일 뿐이야.

어느 네 대가 실험실이고, 왜

측정은 변수가 한 번에 하나만 움직일 때만 정보가 돼. 플랜은 그걸 가능하게 하는 네 대를 골랐어.

  • office (M3 Ultra), pro2023 (M3 Max), air (M3) — 한 마이크로아키텍처의 세 티어. 같은 코어, 같은 메모리 세대, 같은 운영체제. 버스 폭, GPU 개수, 용량만 바뀌어. '대역폭이 뭘 사주냐'를 위한 사다리야.
  • music (M2 Ultra) — office의 819 GB/s 대 800 GB/s, GPU는 한 세대 전. 대역폭은 거의 같고 GPU만 다른 짝. '대역폭 고정일 때 GPU 세대가 뭘 사주냐'를 위한 짝이야. 다른 M2 Ultra인 worker도 되긴 하는데, 프로덕션 작업을 지고 있어.

빠지는 다섯 대는 이래. server는 이 집 앱들이 의존하는 추론 허브야. 피파의 검색을 굶기는 벤치마크는 통합 메모리의 교훈을 비싸게 배우는 방법이지. worker는 컨트롤 플레인한테서 작업을 임대받고 있고, mini는 음악을 스트리밍하고 있고, pro2024는 이 퀘스트가 측정하는 어떤 것에도 M4 점 하나를 더할 뿐이고, macbook은 M5 Max야. 플랜의 규칙은 M5 세대는 일부러 별도 evolve로 측정하기 전까진 벤더 주장으로만 등장한다는 거야. 세션이 우연히 그 기계에서 돌았다고 곁다리로 재는 게 아니라.

함대를 직접 읽어봐

코드 블록은 위 표를 만든 스크립트야. 별칭마다 ssh로 첫 레슨의 카드를 돌려서 기계당 한 줄을 찍어. 별칭은 네 ~/.ssh/config에서 나오고, 스크립트는 호스트명을 알 필요가 전혀 없어. 맥이 한 대면 한 줄이 나와. 그 한 줄이 네가 채우는 카드의 첫 항목이야.

Code

fleet_table.py — 역할 별칭으로 ssh 해서 맥당 한 줄·python
#!/usr/bin/env python3
"""Print a fleet table from ssh aliases. Aliases resolve in ~/.ssh/config;
this script never sees a hostname, and neither should a quest."""
import subprocess
import sys

ALIASES = sys.argv[1:] or ["office", "server", "worker", "music", "macbook",
                           "pro2024", "pro2023", "air", "mini"]

# One line per field. The cluster line reads hw.perflevelN.name for every level that
# exists, because the names move with the generation (M3: Performance + Efficiency;
# M5 Max: Super + Performance) -- a fixed P/E pair would mislabel the newest Mac.
REMOTE = (
    "sysctl -n machdep.cpu.brand_string; "
    "c=''; for n in 0 1 2 3; do name=$(sysctl -n hw.perflevel$n.name 2>/dev/null); "
    "[ -z \"$name\" ] && break; c=\"$c${c:+ + }$(sysctl -n hw.perflevel$n.physicalcpu) $name\"; done; echo \"$c\"; "
    "sysctl -n hw.memsize hw.pagesize; sw_vers -productVersion; "
    "system_profiler SPDisplaysDataType | awk -F': ' '/Total Number of Cores/ {print $2; exit}'"
)

print(f"{'alias':8} {'chip':10} {'CPU clusters':28} {'GPU':>4} {'GB':>4} {'page':>6}  macOS")
for alias in ALIASES:
    try:
        out = subprocess.run(["ssh", "-o", "BatchMode=yes", "-o", "ConnectTimeout=5", alias, REMOTE],
                             capture_output=True, text=True, timeout=30).stdout.split("\n")
        chip, clusters, mem, page, macos, gpu = (out + ["?"] * 6)[:6]
        print(f"{alias:8} {chip.replace('Apple ', ''):10} {clusters:28} {gpu:>4} "
              f"{int(mem) // 2**30 if mem.isdigit() else '?':>4} {page:>6}  {macos}")
    except (subprocess.TimeoutExpired, OSError) as exc:
        print(f"{alias:8} unreachable ({exc.__class__.__name__})")
여기 Thunderbolt RDMA가 켜져 있어? (복구 모드에서 켜는 스위치야)·bash
rdma_ctl status
# disabled        <- every Mac in this fleet, 2026-09-15
# The tool ships on every Apple silicon Mac, Thunderbolt 4 ones included.
# Its presence says nothing about eligibility; see the big-models track.

External links

Exercise

이제 네 맥 카드를 진짜로 열어. 네가 닿을 수 있는 맥마다 한 줄씩, 위 표의 칸에 네 말로 쓴 '하는 일' 칸을 더한 텍스트 파일로. 그다음 어느 줄들이 한 변수짜리 짝이나 사다리가 될 수 있는지 표시해. 같은 세대에 티어만 다르거나, 같은 대역폭에 세대만 다르거나. 안 되는 줄은 왜 안 되는지도 적고. 맥이 딱 한 대면, 어떤 공개 스펙 하나를 분리하려면 두 번째 기계가 필요한지 적어.
Hint
세대가 다른 같은 티어 노트북 둘(M3 Max랑 M4 Max 같은)은 메모리 기술이랑 GPU 세대를 동시에 바꿔. 둘을 구분 못 한다는 걸 받아들여야만 정직한 짝이야. 같은 세대 같은 티어에 메모리 크기만 다른 건 용량만 다른 짝이고, 메모리 트랙이 그런 짝을 하나 원할 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.