← ~/parksy-logs/webzine
docs/session-logs/2026-05-22_phone-lmk-diagnosis.md
세션 기록: 2026-05-22 — S25 Ultra LMK가 Termux 죽이는 문제 진단
[세션] · 2026-05-22_phone-lmk-diagnosis

작업 개요

핸드폰(7번, S25 Ultra Android 16)에서 MCP 워커(voice/audio/publish)가 계속 죽는 원인 분석. Termux SSH 세션이 "E6 에러"로 계속 끊기는 현상의 근본 원인을 logcat + dmesg로 추적.

진단 결과: LMK (Low Memory Killer)가 Termux를 SIGKILL

로그 증거

05-22 11:35:07  lmkd: Reclaim 'com.termux' (11997), uid 10445, oom_score_adj 200
                  → signal 9 (Killed)
05-22 11:37:13  lmkd: Reclaim 'com.termux' (20706), uid 10445, oom_score_adj 200
                  → signal 9 (Killed)

죽음의 연쇄 (2초 안에 3개 프로세스)

  1. com.termux.widget (oom_score_adj=915) killed
  2. com.termux.api (oom_score_adj=250) killed
  3. com.termux (oom_score_adj=200) killed — Zygote: "Process exited due to signal 9 (Killed)"

트리거

시스템 스펙

항목
S25 Ultra (SM-S938N), Android 16
RAM 11.6 GB
Termux 평시 RSS ~143 MB
ONNX 추론 시 추가 200~400 MB 예상
ADB oom_score_adj 편집 ❌ Permission denied (root 필요)

결론

핸드폰 7번 Termux 환경에서 MCP 워커 + ONNX 추론은 구조적으로 불안정. LMK 회피 방법 (oom_score_adj 조정, LMK 파라미터 변경)은 ADB shell에서 Permission denied.

추천 대안

  1. WSL2 (6번)에 MCP 워커 전부 이전 — 메모리 32GB, LMK 없음, 안정적 - FastMCP SSE 서버로 통일 - edge-tts + sox normalize로 TTS 파이프라인 이미 검증됨 (메시지 ID 1281/1282/1283)
  2. 폰 Termux는 MCP 러너에서 제외
  3. ONNX 모델은 필요 시 WSL2에서도 실행 가능 (CPU only)

관련 파일

실행 결과: WSL2 전면 이전 성공

변경사항

MCP 서버 이전 (7번 폰) 이후 (6번 WSL2)
voice TTS (8015) ONNX 5개 모델 920MB → LMK 사망 SoVITS worker (sovits_worker.py)
audio MCP (8016) sox normalize sox normalize (동일, WSL2)
publish MCP (8018) curl Telegram curl Telegram (동일, WSL2)

신규 파일

파이프라인 검증 (2026-05-22 14:18)

▶ [tts]      WSL2 voice MCP      → 3.1s WAV 생성
▶ [normalize] WSL2 audio MCP     → sox gain normalize
▶ [publish]  WSL2 publish MCP    → Telegram message_id=1300 전송 완료

7번 폰 잔여 역할

태그

#phone #lmk #termux #memory #critical #s25ultra #android16 #wsl2 #migration #done

cat: sessionsrc: docs/session-logs/2026-05-22_phone-lmk-diagnosis.md
index F2record F3whitepaper F4reports F5plans F6sessions