핸드폰(7번, S25 Ultra Android 16)에서 MCP 워커(voice/audio/publish)가 계속 죽는 원인 분석. Termux SSH 세션이 "E6 에러"로 계속 끊기는 현상의 근본 원인을 logcat + dmesg로 추적.
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)
com.termux.widget (oom_score_adj=915) killedcom.termux.api (oom_score_adj=250) killedcom.termux (oom_score_adj=200) killed — Zygote: "Process exited due to signal 9 (Killed)"min2x watermark is breached even after kill 상태에서 Termux를 최후로 희생| 항목 | 값 |
|---|---|
| 폰 | 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.
phone_mcp_server_sse.py — 폰 MCP 음성 서버parksy_audio_worker_sse.py — 폰 오디오 워커parksy_publish_sse.py — 폰 텔레그램 퍼블리시adb logcat -b system | grep -E 'lmkd|termux|signal 9'| 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) |
~/parksy-audio/mcp_voice/wsl2_voice_mcp_sse.py — TTS (aiohttp raw SSE, phone MCP 호환)~/parksy-audio/mcp_voice/wsl2_audio_mcp_sse.py — audio normalize/concat/master~/parksy-audio/mcp_voice/wsl2_publish_mcp_sse.py — Telegram publish~/parksy-audio/start_wsl2_mcp.sh — 3개 MCP 동시 시작 스크립트/tmp/recipe_runner.py — server_map을 전부 localhost로 수정▶ [tts] WSL2 voice MCP → 3.1s WAV 생성
▶ [normalize] WSL2 audio MCP → sox gain normalize
▶ [publish] WSL2 publish MCP → Telegram message_id=1300 전송 완료
#phone #lmk #termux #memory #critical #s25ultra #android16 #wsl2 #migration #done