PR

Framework LaptopのUMA変更でOSが不安定?XServer VPSで256MB〜1GBのOOM隔離を実測

【PR】この記事にはA8.netのアフィリエイト広告を含みます。

先に結論:Framework LaptopUMA Frame Bufferを変更してOSごと不安定になる問題は、XServer VPSから修復できません。ただし、メモリを大量消費するAI処理をDockerhard limit内へ移せば、失敗範囲を実験コンテナだけに限定できます。256MiB・512MiB・1GiBの3条件で全コンテナがOOM終了しましたが、公開APIの監視91回はすべて成功し、既存サービスの復旧は不要でした。判定は一部解決です。

2026年9月1日、4GBのXServer VPSで32MiBずつ実メモリを確保する段階負荷を実行しました。終了コード、OOMKilledcgroupピーク、ホスト空きRAM、公開APIの生存、終了直後の確認時間を記録しています。

Framework LaptopUMA割当変更でOSが不安定になるのはなぜ?

CPUiGPUが同じ物理メモリを使うため、GPU向け固定枠を変えるとOS側の利用可能量やGPUドライバの動作条件も変わるからです。大きく固定すればシステムRAMが減り、小さくしすぎれば対象機・ドライバ・ワークロードによってGPU処理が不安定になる可能性があります。

ただし、クラッシュの原因を常にOOMと決めつけることはできません。GPUハング、ハードウェアウォッチドッグ、BIOS、メモリ互換性なども候補です。

ZennFramework Laptop 13実例では何が起きた?

Zennの「Ryzen AI 9 HX 370でローカルLLMのメモリを取り戻す ― UMA Frame Buffer最小設定でシステムが落ちた話」では、Framework Laptop 1332GB RAMRadeon 890MFedoraGemma4 26B QATという構成が紹介されています。

UMA固定枠 システム側 記事内の結果
16GB 約15GiB 31.87 tok/s
8GB 約23GiB 28.56 tok/s、安定
0.5GB 記録不能 ログイン画面へ戻るクラッシュ

同記事では、0.5GB時に実際のOOM killamdgpuリセットのログが見つからず、ハードウェアウォッチドッグの記録だけが残ったとしています。今回のDocker OOMとは原因も障害範囲も異なります。

RedditではFramework 13iGPUメモリ設定に何を悩んでいる?

Redditr/frameworkには「Setting shared RAM/VRAM in BIOS for 7040U series」という相談があります。Framework 13Ryzen 7840Uで、BIOSのAutoとGaming以外に大きなiGPU割当を設定したいという内容です。

投稿内では非公式ツールによる変更に触れつつ、投稿者自身もsoft brickの危険を心配しています。AI用途で割当を増やしたい需要があっても、機種・BIOS世代を無視した値変更は安全とは限りません。

[PR]
VPSでいろいろ試すなら『XServer VPS』

Framework CommunityでもUMA増量は求められている?

Framework Communityの「BIOS Feature Request: Add ability to specify UMA size on AMD APUs」では、ROCmPyTorchなどのML用途向けに大きなUMA bufferを設定したいという要望があります。一方、64MB相当の設定で起動時クラッシュし、自動的に戻ったという報告もあります。

「設定できる」と「安全に常用できる」は別です。一次情報を取るなら、機種名、BIOS版、設定値、OS、ドライバ、モデル、クラッシュ後のログを一緒に残す必要があります。

XServer VPSFramework LaptopUMA問題を再現できる?

再現できません。XServer VPSGPUなしのLinux AMD64環境で、Radeon 890MUMA Frame BufferGTTFramework BIOSを備えていません。VPSの結果からFramework Laptopに安全な0.5GB・8GB・16GBを決めることもできません。

検証できるのは、危険なAI負荷を自宅PCから切り離し、Linux cgrouphard limit内で意図的に失敗させる構成です。OS全体ではなくジョブ単位で落とせるかを測ります。

Docker公式はメモリ上限をどう説明している?

Docker公式のResource constraintsは、既定のコンテナにはリソース制限がなく、ホストが許す範囲でメモリを使えると説明しています。Linuxホストが深刻なメモリ不足になると重要プロセスまでOOM対象になり得るため、事前の必要量テストとコンテナのメモリ制限を勧めています。

今回、OOM killerを無効化する--oom-kill-disableは使いません。hard limitへ達した実験ジョブを終了させ、既存サービスを守ることが目的だからです。

実験前のXServer VPS状態

項目 実験前
契約構成 4 vCPU / 4GB RAM / 150GB NVMe SSD
RAM 620MB used / 3.47GB available
swap 131MB / 2.15GB
ストレージ 15.52GB / 154.99GB(11%)
公開API database=ok、artifact_storage=ok
既存コンテナ Caddy / FastAPI / PostgreSQLhealthy

段階負荷はどのように作った?

Python 3.13.15で32MiBのbytearrayを繰り返し生成し、4KiBごとに書き込んで実ページを確保しました。1段階ごとに0.25秒待ち、Docker外からcgroupと公開APIを監視しています。

制御項目 設定
メモリ上限 256MiB / 512MiB / 1GiB
memory-swap memoryと同値、追加swapなし
CPU 1 vCPU上限
pids 64上限
再起動 restart=no
ready監視 約0.1秒間隔

256MiB上限ではどこでOOMになった?

指標 実測
最後に成功したアプリ確保 224MiB
cgroup peak 228.77MiB
終了まで 2.697秒
Exit / OOMKilled 137 / true
再起動 0回
ready 12/12成功

224MiBの次に32MiBを確保しようとした段階で終了しました。hard limit 256MiBの全量をアプリデータへ使えるわけではありません。

512MiB上限ではどこでOOMになった?

指標 実測
最後に成功したアプリ確保 480MiB
cgroup peak 485.18MiB
終了まで 4.662秒
Exit / OOMKilled 137 / true
再起動 0回
ready 26/26成功

1GiB上限ではホストも危険になった?

指標 実測
最後に成功したアプリ確保 992MiB
cgroup peak 998.29MiB
終了まで 8.766秒
最小host MemAvailable 2,271.85MiB
Exit / OOMKilled 137 / true
ready 53/53成功

1GiB条件でもホストには約2.22GiB availableが残りました。公開サービス用の余白を先に残し、その内側だけを実験へ割り当てた結果です。

3条件を比較するとどうなった?

hard limit 最後の確保 cgroup peak Exit API失敗
256MiB 224MiB 228.77MiB 137 / OOM 0/12
512MiB 480MiB 485.18MiB 137 / OOM 0/26
1GiB 992MiB 998.29MiB 137 / OOM 0/53

全条件で実験コンテナだけが終了し、再起動回数は0でした。公開APIの合計91回の監視はすべてHTTP 200です。

OSと公開APIの復旧時間は?

復旧は不要でした。公開APIは一度も異常になっていません。各OOM直後の最初のreadyプローブは256MiB条件31ms、512MiB条件28ms、1GiB条件26msでHTTP 200でした。

これは「31msで障害復旧した」という意味ではありません。障害が実験cgroup内に閉じ、公開APIが継続していたことをOOM直後にも確認できた時間です。

実験中に分かりにくかった点は?

Pythonログは最終のALLOCATED_BYTES行で突然止まり、MemoryErrortracebackを出しませんでした。最初はアプリ例外のような説明が得られません。

そこで、終了コード137だけで判断せず、docker inspectState.OOMKilled=trueを確認しました。Exit 137SIGKILLを示しますが、OOMか手動停止かを区別するには追加情報が必要です。

初心者が迷いそうなポイントは?

迷いやすい点 今回の確認方法
memory=1gならアプリが1GiB使える ランタイムなどの分を差し引き、992MiBで次チャンクが失敗
Exit 137なら必ずOOM OOMKilledも確認する
swapがあれば安全 遅延やホスト圧迫もあるため今回は追加swapを無効化
コンテナが落ちればVPSも停止 cgroupの公開APIを同時監視する
VPS実験でUMAの安全値が分かる ハードウェア固有値は実機で検証が必要

AIスマホ調査システムではどう応用できる?

処理 隔離の考え方
スクリーンショットOCR 画像枚数と解像度に応じたRAM上限
小型LLM要約 モデル別のcgroup上限とOOM記録
複数アプリ調査 ジョブごとにコンテナを分離
失敗時 ExitOOMKilled、最後の操作、スクリーンショットを保存
再試行 同条件を無限再起動せず、上限または入力を変更

司令塔のAPIと実験ワーカーを同じ制限へ入れないことが重要です。今回も公開APIは既存コンテナ、負荷処理は使い捨てコンテナへ分けました。

XServer VPSで便利だった点・限界は?

観点 実体験
便利 3種類のhard limitを短時間で作り直せた
便利 OOM後もSSHと公開APIが継続し、外側から証拠を回収できた
便利 実験コンテナだけを削除し、公開構成を維持できた
限界 Framework BIOSUMARadeonGTTの挙動は測れない
限界 ノートPCの画面暗転、温度、バッテリー、復帰性は検証できない

実験後のVPSは正常?

3つの検証コンテナとVPS上の一時スクリプトを削除しました。実験後はRAM 618MB used3.48GB availableswap 129MB used、ストレージ使用率11%です。

CaddyFastAPIPostgreSQLhealthy、公開readydatabase=okartifact_storage=okでした。

よくある質問

Framework LaptopUMAを何GBにすれば安全?

今回のVPS実験からは決められません。機種、RAM容量、BIOS、OS、GPUドライバ、モデルをそろえた実機試験が必要です。

VPSへ移せばFramework LaptopGPU性能も得られる?

いいえ。今回のXServer VPSGPUなしです。得られるのは常時稼働、Docker隔離、ログ保存、司令塔機能です。

OOMしたコンテナは自動再起動すべき?

原因が同じなら再びOOMするため、無制限再起動は避けます。入力縮小、上限変更、別ワーカーへの振り分け後に再試行する設計が必要です。

[PR]
VPSでいろいろ試すなら『XServer VPS』

XServer VPSでこの悩みはどこまで解決する?

判定は一部解決です。Framework LaptopUMA設定やハードウェアウォッチドッグをVPSから直すことはできません。しかし、AI処理を256MiB・512MiB・1GiBのcgroupへ閉じ込めると、全条件で実験コンテナだけがOOM終了し、公開APIは91/91回成功しました。

自宅PCAndroid実機の操作と画面取得、VPSはジョブ管理・記録・安全なCPU処理を担当させる構成なら、UMA設定を攻めて日常PCごと不安定にする必要を減らせます。将来GPUワーカーを追加するときも、まずモデルごとのメモリ上限と失敗時の証拠をVPSで管理する方針を引き継げます。

コメント

タイトルとURLをコピーしました