M1, 메모리 8GB MacBook Air에서 Claude Code와 Codex 및 브라우저 자동 조작을 동시에 구동한 기록과 추가 규칙
요약
MacBook Air(M1, 8GB) 환경에서 Claude Code와 Codex 같은 AI 도구 및 브라우저 자동 조작을 동시에 구동하며 발생한 시스템 과부하 경험과 대응 방안을 공유합니다. 이 글은 메모리 부족 시의 강제 재부팅 기록과 함께, 무거운 작업 동시 실행 제한 규칙(예: 1개만) 및 시스템 자원 모니터링 기준을 제시합니다.
핵심 포인트
- AI 도구와 자동화 작업을 동시에 구동하면 시스템 과부하가 발생할 수 있습니다.
- 무거운 작업은 반드시 순차적으로 진행하고, 동시 실행 개수를 제한해야 합니다.
- 시스템 부하 판단 시 메모리 압력(memory_pressure)과 빈 디스크 공간을 기준으로 삼는 것이 효과적입니다.
- AI 도구에 작업을 전송한 후에도 프로세스를 명확히 종료하는 절차가 필요합니다.
CHIERO의 치에로입니다.
제 회사는 MacBook Air(M1, 메모리 8GB) 1대 위에서 Claude Code와 Codex에게 업무를 시키고 있습니다.
2026년 9월 28일, 이 Mac이 과부하로 강제 재부팅되었습니다.
본 기사에는 그날의 기록과 나중에 추가한 규칙, 그리고 현재도 사용하고 있는 셸 스크립트 일부를 작성합니다.
이는 2026년 10월 12일 기준 내용입니다.
- 2026년 9월 28일 18:35에 커널 패닉(kernel panic)으로 재부팅되었습니다. 패닉 기록 문자열은 다음과 같습니다:
watchdog timeout: no checkins from watchdogd in 94 seconds - 직전에는 Claude Code의 세션 3개와 Codex, 그리고 브라우저 자동 조작이 동시에 구동되고 있었습니다.
- 내장 저장 공간 여유는 약 5GB였고, 스왑(swap)은 가득 차 있었습니다.
- 21:21에 재로그인할 때까지
launchd로 구동하던 매시간 게시물도 멈췄습니다. 게시물은 21:22에 자동으로 재개되었으며, 멈춰 있던 시간 동안의 분량은 보내지 않았습니다.
메모리가 부족해지면 macOS는 디스크를 스왑으로 사용합니다.
여유 공간이 약 5GB밖에 없었기 때문에, 스왑을 늘릴 공간이 없었습니다.
전사적인 규칙에 Mac의 용량과 부하 파일을 하나 추가했습니다.
규칙 첫 번째는 다음과 같습니다:
무거운 작업은 동시에 1개까지
대상은 브라우저 자동 조작, 동영상 추출(video export), 대용량 파일 일괄 처리, 서브 에이전트의 병렬 구동입니다.
시작하기 전에 공유 기록에서 다른 세션이 같은 종류의 작업을 하고 있지 않은지 확인합니다.
확인 방법은 규칙 파일에 3줄로 작성되어 있습니다.
df -h / # 여유 공간
sysctl vm.swapusage # 스왑
ps -Ao pid,%cpu,%mem,etime,comm -r | head # 무거운 처리
처음에는 여유 20GB를 기준으로 삼았습니다.
다음 날인 9월 29일에 이 고정 기준을 변경했습니다.
여유 공간이 수치를 밑돌기만 해도 검사나 제작을 보류하지 않도록 하기 위해서입니다.
변경 후에는 여유 공간과 스왑, 응답을 보고 무거운 처리를 순차적으로 진행하는 방식으로 바꿨습니다.
10월 11일에 중지선을 다시 정했습니다.
2026년 10월 12일 기준의 선은 다음과 같습니다.
memory_pressure의 여유율이 12% 미만 - 빈 디스크 공간이 6GB 미만
스왑 사용량으로는 판단하지 않기로 했습니다.
사용되지 않은 페이지가 스왑에 남아 무거운 처리가 끝난 후에도 값이 내려오지 않았기 때문입니다.
같은 날, '동시에 1개까지'로 제한하는 대상도 Chrome의 화면 조작을 사용하는 업무만으로 변경했습니다.
Codex에게 순서대로 업무를 보내는 스크립트는 보내기 전에 이 두 가지를 확인합니다.
다음은 실제 스크립트에서 변수 정의를 제외하고 올린 내용입니다(Mac용 zsh).
FREE=$(memory_pressure 2>/dev/null | awk -F': ' '/free percentage/{gsub(
`CODEX_BUSY`가 반환되면, 보내는 쪽은 5분 후에 다시 전송합니다.
Chrome을 사용하지 않는 작업(파일 읽기/쓰기, 조사)에는 표시를 하지 않습니다.
이것은 Chrome의 작업과 동시에 구동하고 있습니다.
10월 11일부터 12일에 걸쳐 이미지 생성 및 기사 업데이트 작업을 Codex로 순차적으로 보내는 방식(아래 '열')으로 계속 진행했습니다.
그 과정에서 발생했던 일과 수정된 내용입니다.
**1. 전송 프로세스를 중지해도 작업은 멈추지 않았다.**
보내는 쪽의 `node` 프로세스를 `kill` 해도, Codex 내부에서는 작업이 "실행 중" 상태로 남아 있었습니다.
남아있는 동안 다음 화면 조작이 2분 동안 응답하지 않았습니다.
중지할 때는 Codex 측 목록에서 작업 ID를 확인하여 취소 명령을 보내도록 수정했습니다.
**2. pgrep -f로 "작동 여부"를 확인하고, 자신을 세었다.**
열이 작동하는지 여부를 `pgrep -f "열 이름"`으로 확인하고 있었습니다. 기다리는 쪽 스크립트의 명령어에도 같은 문자가 포함되어 있었기 때문에,
`pgrep`가 자신의 대기 역할을 감지하여 계속 "작동 중"이라고 판단했습니다. 판정 방식은 프로세스 이름을 보는 것에서, 완료 알림 파일과 전송 장부 파일을 보는 방식으로 변경했습니다.
**3. 백그라운드 대기 역할이 아무런 알림 없이 사라졌다.**
`until` 루프를 사용하여 완료를 기다리는 스크립트를 백그라운드에서 구동하고 있었습니다.
2시간 정도 지나자 아무런 메시지 없이 사라졌습니다.
알아차리기까지 2시간 20분 동안, 열은 멈춘 상태였습니다.
지금은 한 개가 끝날 때마다 알림이 오도록 하고, 30분이 지나면 반드시 알림이 오는 감시 시스템을 병행하기로 했습니다.
**4. 완료 알림 직후 다음 작업을 보내 작업이 중첩되었다.**
Codex는 완료 알림 파일을 작성한 후에 마지막 답변을 작성합니다.
알림을 보고 바로 다음 것을 보내자, 이전 작업이 아직 끝나지 않았는데 두 번째 작업이 시작되었습니다.
알림을 본 후, 이전 작업의 프로세스가 끝나는 것을 기다렸다가 다음 작업을 보내도록 수정했습니다.
Chrome 작업을 12시간 동안 지속하자, 여유 디스크 공간이 15GB에서 4GB까지 줄었습니다.
메모리 상위에는 Codex 앱과 그 아래의 `codex` 프로세스가 있었습니다.
스왑(Swap)이 계속 증가하면서 디스크 여유 공간을 먼저 소진하는 형태였습니다.
여유 공간을 복구할 때는 재구성 가능한 것들(`node_modules`, 가상 환경, 캐시, 공개된 영상 중간 파일)을 외장 디스크로 옮겼습니다.
AI에게는 삭제 작업을 시키지 않았습니다.
옮긴 물품 목록과 되돌리는 방법을 남기고, 삭제 여부는 제가 결정합니다.
메모리, 여유 공간, 포함된 도구를 일람하는 환경 체크를 무료로 공개하고 있습니다.
버전 표시와 목록 표시만 하는 스크립트이며, 파일 생성 명령이나 통신 명령은 넣지 않았습니다.
git clone https://github.com/kounkt/ai-setup-guide
cd ai-setup-guide
zsh check_env.sh
제 Mac에서 출력된 일부입니다 (10월 10일 실행).
여유 공간 줄의 괄호 설명은 당시의 상태를 나타냅니다.
10월 11일에 중지 기준을 변경했기 때문에, 지금은 스왑으로 판단하지 않습니다.
[OK] CPU 종류 arm64 (Apple Silicon)
[OK] macOS 버전 15.8
[OK] 메모리 8 GB
...
- 메모리 8GB Mac 1대에서 여러 세션과 Codex, 브라우저 자동 조작을 동시에 구동하여 강제 재부팅했습니다.
- 그날 "무거운 작업은 동시에 하나까지"를 규칙 파일에 작성했습니다. 지금은 Chrome의 화면 조작을 사용하는 작업을 표시 파일을 이용해 하나로 제한하고 있습니다.
- 10월 12일자 중지 기준은,
`memory_pressure` 여유율 12% 미만과, 여유 디스크 6GB 미만입니다 - 열 판정은 프로세스 이름이 아닌, 완료 알림 파일로 보고 있습니다
-
**ai-setup-guide**(무료): 위의 환경 체크(check_env.sh)와 Mac에 제작 도구를 넣는 절차입니다.
https://github.com/kounkt/ai-setup-guide -
**preflight-reviewer**(무료・MIT): AI가 만든 결과물을, 만든 세션과는 별도의 세션에서, 내보내기 전에 점검하는 기술입니다.
https://github.com/kounkt/preflight-reviewer -
**AI 사원 일체**(9,800엔・note): 제 회사에서 담당했던 내용을 다른 회사에도 적용할 수 있도록 재작성한 104개 파일입니다. '무거운 작업은 동시에 하나씩'을 포함하는 전사 규정 6가지가 들어있습니다.
https://note.com/kounkt/n/nf6640ae56f4e - 담당별 목록 및 성과물 샘플: https://chiero.jp/skills/
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기