マルチプレイ中に「Out of Memory」のエラーが出てフリーズしてしまうことがあるので、事例共有します。
飛行中に突然「Out of memory」のエラーメッセージが表示され、Condor3の動作が止まります。フレームレートが落ちる、といったの事前の兆候はありません。「OK」を押してメッセージを消してもCondor3は再開しません。
Condor3になってから2回ほど、これでマルチプレイが中断しています。いずれも飛行開始から1時間以上経った時に起こっています。
普段使い用のノートPCでプレイしていて、メモリは16GBです。
Condor3をプレイする際は、直前にPC再起動し、他の不要なアプリケーションは終了するなど、極力メモリを節約できるようにしていますが、それでもエラーは発生します。
以上、事例共有でした。毎回このエラーが発生するわけではなく、原因・対策など不明です。メモリを節約できる設定などあればよいのですが...。
投稿ありがとうございました。確か先週切れてしまった方もOut of memoryとおっしゃってました。
実はCondorは32ビットアプリなのでメモリー空間は3GBまでしか使えません。これはメインメモリーの問題だけではなく、グラフィックボードのほうでも3GBまでしか使えなくて、どちらも今どきのCPU, GPUでは使い切れていないのが現状です。ですのでパフォーマンスを上げるために他の常駐アプリを制限するのは考えられますが、Out of memory対策としてCondor以外でのメモリー節約をするというのは特に考えなくてもよいと思います。
それで、今のところ本家Forumでも言われているのは、グラフィック周りのトラブル対策としてSetupでVsyncを必ずONにしておくようにというくらいで突然切れてしまう原因はまだよくわかっていません。あとはどうも雲が多いとエラーが出るようなのでタスクセッター側で調整をしたほうが良いのかなぁと思ったりしています。
対応策はまだよくわかりませんので今後もおかしなエラーが出たときはこのForumに投稿していただけると助かります。みなさん、よろしくどうぞ。
Naoki_NT3
私もout of memoryでフリーズしました。12/14のJPSFでファイナルグライドに入ったところでです。
Vertual Syncはoffでした。次回はonにしておきます。
condor cafeでよく飛んでいるのですが、そこではなりにくいように感じます。
本件の対策として、「仮想ファイル」の固定サイズ化と適量サイズ(実メモリと同等の大きさ)へのファイルサイズの拡大を実行してみたところ、安定したのではないか?と思っています。
エラーが出現した時のエラーログには以下が記録されていました。
Cache threads started at 22:27:24.
Landscape refresh stopped at 22:27:45.
Cache threads started at 22:29:13.
Landscape refresh stopped at 22:29:35.
Cache threads started at 22:30:07.
Landscape refresh stopped at 22:30:28.
NetPlayer connected: G.Invalshoek.
Cache threads started at 22:36:41.
TerrainCacheThread terminated with error: Load textures: Out of memory.
Cache threads started at 22:36:47.
TerrainCacheThread terminated with error: Load textures: Out of memory.
Cache threads started at 22:36:53.
TerrainCacheThread terminated with error: Load textures: Out of memory.
Cache threads started at 22:36:59.
TerrainCacheThread terminated with error: Load textures: Out of memory.
Cache threads started at 22:37:05.
TerrainCacheThread terminated with error: Load textures: Out of memory.
Cache threads started at 22:37:11.
TerrainCacheThread terminated with error: Load textures: Out of memory.
Cache threads started at 22:37:16.
Thermals at 22:37:19: Access violation at address 00762632 in module 'Condor.exe'. Read of address 00000008.
ランドスケープの読み込みで時々止まりかけになりつつ、テクスチャーが読み込めず「Out of memory」とメッセージが出ていました。
動きが鈍い古いPCに古の軽量化方法として、ダイナミックにファイルサイズが変化するPagefile.sysを固定サイズにするという手段があったのを思い出して、深く考えずにPagefile.sysを以下のように変更しました。
要点は仮想メモリをカスタムサイズに変更し、最大サイズと最小サイズを同じ値を指定。幸い下には推奨値なんて書いてあるからその値を指定すれば問題ないはず、と思っていました。
その設定でCondor3を動かしたら、暫くのフライトの最中で今度はブルースクリーンでCondor3が停止してしまいました。その時のエラーログは以下が記録されていました。
Cache threads started at 14:42:45.
Landscape refresh stopped at 14:43:06.
Cache threads started at 14:43:29.
Landscape refresh stopped at 14:43:50.
Cache threads started at 14:45:05.
Landscape refresh stopped at 14:45:26.
Avion.DrawTowplane at 14:50:35: Access violation at address 50EB3709 in module 'nvwgf2um.dll'. Write of address 0D875C00.
まぁ、仮想メモリが足りないというオチ。確かに推奨値の4GBは「小さすぎでは?」と思っていました。
この結果から、Windows側での仮想メモリのサイズ拡大操作がCondor3からの書き込みリクエストに間に合っていない可能性が高いと判断。
あとは、一番上に記載した通り、仮想メモリを十分大きな値で指定してあげれば理論上は改善するはず。但し、無駄に大きなサイズの仮想ファイルはWindowsが遅くなってしまう可能性もあります。
どれくらいか適正化といえば「搭載メモリと同じサイズ」が良いと考えます。また「古いおまじない」として実搭載メモリの値に1024を掛けた数値を入力すればよいと思います。
以下操作案内
・Windowsキー+Rと操作して「ファイル名を指定して実行」のウインドウを表示させて、その中に「sysdm.cpl」と入力後、「OK」を選択。
・表示された「システムのプロパティ」ウィンドウで、「詳細設定」タブに移動し、「パフォーマンス」の下にある「設定」ボタンを選択。
・新たに表示される「パフォーマンス オプション」ウィンドウの「詳細設定」タブで「変更」を選択。
・「仮想メモリ」ウインドウが表示されるので、一番上の「すべてのドライブのページング ファイルサイズを自動的に管理する」のチェックを外せば、入力が可能となるので「カスタムサイズ」を選択し、その横にある「初期サイズ」と「最大サイズ」へ搭載実メモリGB数に1024を掛けた値を入力(16GBなら16x1024=16384)した後に「設定」ボタンを選択して値を決定する。
・数値が適切に入力されたことが確認出来たら「OK」ボタンを選択し、端末に促されるままPCを再起動してください。
あとは通常通りCondor3を実行してください。
本事案の対策の参考とした文章を以下に紹介します。
これを考えていたのはCondor3のVer3.0.2の頃でしたので、ひょっとしたら既に解決済みかもしれませんが、今回案内したこの方法そのものについては他プログラムへのリスクも少ないので、お気楽に試せると思います。
本操作を実行しても尚「Out of memory」が再発したら?
-その時にはまた別の手段を考えましょう。
以上。
追記:上級者向け内容になりますので詳細は省きますが、仮想メモリがサイズ拡大により断片化してしまうのを防ぐ為には、既存のPagefile.sysは一旦削除してから再度仮想メモリのサイズを設定するのが望ましい。HDDの頃ならそこまで気にしてましたが、SSDなら気にしなくても何とかなるとは思います。
2024年12月27日に行われたFriday Flightのオンラインレースにて上記設定での動作試験を行いました。
積極的に「雲低まできっちり登っては一気に増速」を繰り返してターンポイントを目指すようにフライトを行い、「Out of memory」のエラーが出ないままタスクを完走できました。
私のエラーログと同じような状態なら、上記設定で効果がありそうです。
追記: もしNvidia系のGPUを使用している場合には、「Nvidia コントロールパネル」からCondor3に対して以下のように設定したほうが今回のページファイル設定に効果が出やすくなると思います。
「3D設定の管理」項目の「CUDA - システムメモリフォールバックポリシー」の項目にて
「システム メモリ フォールバックを優先」に設定し、ウインドウ右下の「適用」を選択。
「ドライバのデフォルト」に設定されていても良いとは思いますが、Condor3では低速のRAMも使うことを指示しておいたほうが良いと思います。
Condorのバージョンが3.0.3に更新されて、エラー内容が今までとは明らかに変化してしまいました。
例えば、直前のWindowsイベントログエラーにはこんな感じで、「Out of memory」のメッセージも無く突然停止するのみ。
障害バケット 2231648586989619597、種類 5
イベント名: RADAR_PRE_LEAK_WOW64
応答: 使用不可
Cab ID: 0問題の署名:
P1: Condor.exe
P2: 3.0.3.0
P3: 10.0.19045.2.0.0
P4:
P5:
P6:
P7:
P8:
P9:
P10:
改めて事象発生状況を集めてからの調査やり直しになります。
Condorのバージョンが3.0.3に更新されて、エラー内容が以前とは変化しました。
3.0.2>3.0.3へのアップデートで「Out of memory」に関して何らかの問題をCondor側で認識しており、「対策」が行われたと思われます。
そこでしばし考えて、以前紹介した対策とは全く真逆の事を行いました。
・本件の対策として、「仮想ファイル」の固定サイズ化とファイルサイズの最小化 を実施
少なくとも週末に行われる定例「オンラインレース」では完走出来るようになりました。
設定変更手順については以前の投稿を参照してください。
では仮想メモリの最小値は幾つが適切か?となりますが、それは仮想メモリの設定画面にある最小値に合わせました。
上記図の赤下線部に最低必要メモリサイズが表示されますので、赤線楕円のように値を合わせて設定してください。
十分な物理メモリがあるなら、理論上はページファイルは無くても動作するはずです。それでもWindows側でどうしても動作上ページファイルが必要な場合があるので、「ページファイル無し」の設定ではなく、「最小値」の設定にて固定値としました。
念のためにCondor3を動かしている端末内にある、ほかのアプリケーションで問題等が出ない事も確認してください。
以上、同様の問題で困っている方がいらっしゃいましたら、参考にしてみてください。