テレポ落ちの原因と対策

フォーラムでも書きましたが、テレポ落ちの原因は仮想メモリアドレスの枯渇が原因でした。

※テレポ落ちとは、テレポやデジョンあるいはエリア移動などにおいて、画面の動きが止まるか非常に遅くなり(コマ送り状態になります)、その後 FF XIV がアプリケーションエラーで落ちるという現象です
image

知っている人はわかると思いますが、FF XIV は32ビットアプリケーションなので、64ビット版 OS で動かしたとしても、アプリケーションが使用可能なメモリアドレス空間の上限は 2GB です (実際のメモリ使用量とは違い、メモリを確保する前に一定のアドレスう空間を予約するのですが、その値です)

一般的にはメモリアドレス空間を1.8GB以上使っている場合には、アプリケーション自体の 64ビット化を考えたほうが良いことになっていますが、FF XIV は使い切ってしまい、アプリケーションエラーで落ちるという現象が、特にテレポ時に顕著にみられます

ただ、FF XIV が悪いとは 100% 言い切れない点は、この制限はプロセスで発生するため、同じプロセス空間に読み込まれているモジュールが影響を与えます。例えば、IME やディスプレイ ドライバーのモジュールです。 フォーラムのスレ主の場合は IME が原因だったようですが、私の場合は AMD のビデオカード2枚を CrossFireX という技術で高速化するディスプレイ ドライバーの影響である事がわかっています。 CrossFireX によって約 330MB 程余分にメモリを使う事がわかりました

根本的な対応は FF XIV が64ビット化するか、ドライバーがアップデートされてメモリの使用量が減ってくれるのを待つ事になりますが、これだとテレポ落ちを防ぐ事は出来ないので、フォーラムに投降したスクリプトの出番となります

ちなみに、落ちると困るのは HUD の配置やアクションの登録、ギアセットはリアルタイムに保存されていないので、落ちると前回ログインした時まで戻ってしまいます。一度ログオフしてログインしなおせば保存されますが、レベルアップ中とかに毎回それを行うのも煩雑ですよね

フォーラムに投降後、スクリプトを改変し音声で今何GB まで使っているのかわかるようにし、1.9GB を超えると教えてくれるようにしました。そのため、ゲーム中に危なくなると音声でわかりますので対処が可能です。 色々試した限りでは、 1.98 GBまで行くと次間違いなく落ちるので、1.9 GB でまだ少し余裕があるときに対処するのが得策です

スクリプトの使用方法

  1. ここからダウンロード (2014/4/20 アップデート)
  2. (2014/4/19追記) ダウンロード後に Explorer から Warning.zip のプロパティを開き、[ブロックの解除] をクリックし、[OK] を押します
    Script
  3. C ドライブ直下に Alert というフォルダを作成
  4. Alert フォルダにダウンロードしたファイルをすべて展開
  5. (2014/4/19 追記)今まで一度も使っている PC で PowerShell スクリプトを動かしたことがない場合には、管理者権限でPowerShellのコマンドプロンプトを起動し、次の内容を入力します
    Set-ExecutionPolicy RemoteSigned
  6. FF XIV ラウンチャーを起動し、「ログイン」ボタンを押す前に、 Warning.cmd を管理者権限で起動
  7. スクリプトは 2 分後に監視を開始し、5 秒ごとに監視します。 FF XIV が終了すると終了します

音声でワーニングが出た時の対処方法

2 種類の方法があります

a. FF XIV を最小化する

フルスクリーン(仮想フルスクリーンではない)で使っている場合には、ALT+TAB キーを押して、デスクトップに戻ります。

Windows OS の機能で、最小化すると使用しているメモリのうちページファイルへ書き出し可能な部分は書き出してメインメモリを開けるという機能があるのですが、この機能では仮想アドレス領域が解放されるという事はありません。

ところが、どうやら FF XIV なのか同じプロセス空間の他のコンポーネントなのかはわかりませんが、ガベージコレクションが働き、実際にメモリの解放をプログラム的に行っているようで、仮想ドレス領域が解放されます (ALT+TAB でスクリプトの画面に表示される値を見ていると、減少する事がわかります)

b. FF XIV を終了し、起動しなおす

これは a で効果が無い場合 (仮想アドレス領域が解放されずサイズが変わらない) に行います

この対処方法により、テレポ落ちに悩むことは無くなりましたので、もしかして?と思う人は試してみてください

広告

テレポ落ちの原因と対策」への18件のフィードバック

  1. Dai

    これだ!と思いダウンロードさせていただきましたが、音声ワーニングが出ることなく、カクカク→異常終了してしまったので質問させてください。
    0.00 の表示が延々と続くのはメモリ使用量?の取得がうまくいってないのでしょうか。
    最初、「スクリプトの実行がシステムで無効になっているため云々・・・」で動かず、ググった結果、コマンドプロンプトから PowerShell → Set-ExecutionPolicy RemoteSigned でなんとかエラーが出なくなったのですが、上記の通り0.00の表示が続くだけで正常に機能しているのかよくわかりません。
    WIndows7の64bitを使用しています。アドバイスいただければ幸いです。

    返信
    1. rynerluter 投稿作成者

      コメントありがとうございます!
      そうでした、PowerShell の Set-ExecutionPolicy RemoteSigned が初回だけ必要でした^^;
      0.00 というのは変ですね、パフォーマンス モニターのカウンターを拾っているだけなので、私も他の環境で(スクリプトの “\Process(ffxiv)\Virtual Bytes” の ffxiv のところを notepad とかに変えて)値が取得できるかどうかは試してみますが、念のためパフォーマンス モニターで値が出てくるか確認していただけますでしょうか ?

      方法は、 ff xiv を起動してキャラクター選択画面まで表示しておいて、ALT + TAB で Windows に戻り
      1. Windows + R キーを押して、ファイル名を指定して実行を選択し、perfmon と入力して、OK を押してパフォーマンス モニターを起動します
      2. 左側から パフォーマンス モニターをクリック
      3. 右の画面上部の緑色の + をクリック
      4. 左側の使用可能なカウンターの中から、Process の中の Virtual Bytes を選択
      5. 左下の選択したオブジェクトのインスタンスの中の ffxiv を選択
      (ここで右側の追加されたカウンターに出てくるはずですが、出てこなければ 左下の [追加 >>] をクリック)
      6. [OK] を押して閉じます
      7. パフォーマンス カウンターのグラフが動いている右側の一番下に追加されたはずなので、それを選択すると、最新、平均、最小、最大の値が変化していることがわかります

      ここまでがうまくいくなら取得できるはずなんですよね~

      返信
  2. Dai

    丁寧なお返事ありがとうございます。パフォーマンスモニター上では正常に取得できているようです。(値の変化も確認しました。ログイン時700MB強→ログイン後1.4GB弱)

    なんでわたしのPCでは動いてくれないのだ・・・残念!

    返信
    1. Dai

      追伸
      何度もすみません。
      http://technet.microsoft.com/ja-jp/magazine/ee872428.aspx
      ここを参考に、コマンドプロンプトから

      powershell
      Get-Counter -Counter “\Process(ffxiv)\Virtual Bytes”

      と入力したところ、

      Timestamp    CounterSamples
      2014/04/19 14:20:01 \\*****\process(ffxiv)\virtual bytes :
            1369620480

      と正常?に表示されました。

      返信
      1. rynerluter 投稿作成者

        データとれますね。 ということは、PowerShell のバージョンが Windows 7 と Windows 8 以降で違っているのが影響しているんだろうか。。。
        データは取れていますので、あとは判断に使っているプロパティの問題かもしれませんので、ちょっとスクリプトを変更してみてほしいのですが、
        Warning.ps1 の $VByte の 前の行に
        $data.CounterSamples.CookedValue
        を入れてそのまま出力してみてください。 これが 0 の場合、いただいた結果から $data.CounterSamples にして出力してみてください。
        (もしかすると $data.CounterSamples の下の CookedValue というのが無いのか、バージョンによって違うのかもしれないです)
        考えられる可能性としては、
        1. $data.CounterSamples までで値が取れる
        2. $data.CounterSamples の下のプロパティ名が Windows 7 だと違う

        いずれにせよ、スクリプトの $data.CounterSamples.CookedValue となっている箇所が 2 か所出てきますが、そこを数値だけが取れる記述にすれば行けるはずです。

      2. rynerluter 投稿作成者

        ちなみに、Windows 8.1 の環境で $data.CounterSamples のみを出力すると、下記のようになり、CookedValue に数値が入っている事がわかります。
        Path InstanceName CookedValue
        ---- ------------ -----------
        \\alienm18xr2\process(ffxiv)\virtual... ffxiv 1429622784

        #手元に Windows 7 の環境があるとよいのですが、全部置き換えちゃったんですよねぇ^^;

      3. Dai

        お世話になります。早速、元スクリプトへ挿入し試してみました。

        > Warning.ps1 の $VByte の 前の行に $data.CounterSamples.CookedValue を入れてそのまま出力してみてください
        これは 0.00 のままで変化ありませんでした。

        > これが 0 の場合、いただいた結果から $data.CounterSamples にして出力してみてください。
        CookedValueを消して $data.CounterSamples のみにしたところ変化がありました!

        Path InstanceName CookedValue
        —- ———— ———–
        \\*****\process(ffxiv)\… ffxiv 1263165440
        0.00
        \\*****\process(ffxiv)\… ffxiv 1263865856
        0.00
        \\*****\process(ffxiv)\… ffxiv 1261764608
        0.00
        .
        .
        .
        .
        .

        > ちなみに、Windows 8.1 の環境で $data.CounterSamples のみを出力すると、下記のようになり、CookedValue に数値が入っている事がわかります。
        上記の結果と同じに見えます。なぜ0表示になってしまうのか・・・><

      4. rynerluter 投稿作成者

        うーん、変ですねぇ CookedValue に値が入っているということは、同じように表示されてしかるべきなのに。。。
        では、次に $data.CounterSamples.CookedValue を $data.CounterSamples[0].CookedValue に変更して試してもらえますか ?
        (どちらかというとより厳密に記述した場合は[0] を付けるので)

      5. Dai

        うまくいったようです!スクリプト内の
        $data.CounterSamples.CookedValue 二か所を
        $data.CounterSamples[0].CookedValue に置き換えたところ

        C:\Alert>echo off
        1.30
        1.30
        1.31
        1.31
        1.28
        1.30
        1.30
        .
        .
        .
        と、それらしい表示になりました。
        アラーム機能はまだ検証できていませんが、取り急ぎご連絡まで。
        ありがとうございました!

      6. rynerluter 投稿作成者

        おー、うまくいってよかったです。
        あとでアップロードしてあるスクリプトも変更しておきますね (Windows 8.1 ではどっちでも OK だったので~)

  3. ★つづれおり★

    こんにちは、★つづれおり★というものです。
    テレポ落ちの原因をさぐり、それなりに分かったことがありました。私のブログにて記事にしましたので、よろしければご覧になってください。
    こちらのスクリプトと、説明には大変お世話になりました。私の記事からこちらの記事へリンクさせて頂いたのでそのご報告です。

    返信
    1. rynerluter 投稿作成者

      コメントありがとうございます^^
      実はですね、ドライバー14.4でついてきた AMD Gaming Evolved というソフトを使ってこのソフトが示すように最適化をすれば、現在までテレポ落ちしない事を確認済みです。
      設定した時のブログはこちら
      仕組みは簡単で、このソフトで右端の品質に思いっきり振って設定すると、あらかじめ最高品質に設定してあった FFXIV の設定が変更され、オクルージョンとLODにチェックが付きます (3つ)。これなら大丈夫w
      これは、どう考えても AMD は知っていた!としか考えられないですよねw 直す気が無いともいうw

      返信
      1. ★つづれおり★

        おおっ! RADEONユーザーに希望の光が・・!?
        お返事ありがとうございます、それにしてもAMDさん、ちょっとひどいですね!w
        この設定でテレポ落ちが解消されることを祈るばかり!
        Twitter特派員だったのですね! お疲れ様でした!!

  4. ゆき

    グーグル先生のトコから来ましたw
    詳細な解説、大変参考になりました。ありがとうございます。

    先日、参考にして試してみた事なのですが、LODをOFFのままでも
    システムコンフィグ→その他の設定 から
    「キャラクターやオブジェクトの表示数」という項目を変更すると、メモリ使用量が減るように感じます。
    まだまだ検証不足ではありますが、R9-280X CrossFire & 4K解像度という私の環境で
    「最大→やや少なめ」への変更で、数100MBも全使用量が減り、テレポ落ちも発生しにくくなったように感じます。

    見える人の数がグンと減るので、う~~ん・・・ という感じではありますが・・・w
    ハイクラスGPUでLODを入れるのは、個人的にあり得ないと思ってますので
    お礼を兼ねて、報告させて頂きます。

    返信
    1. rynerluter 投稿作成者

      なるほど!その手がありましたか~ ただ、人が減ると寂しいですよねw
      LOD ねぇ遠くの景色が明らかに違っているというか、角度によっても変わるので早く離脱したいのは山々なんですけどねぇ。
      DX11 クライアントも大詰め & 64 ビット クライアントになると言っていたので、個人的にはあともうちょっとの辛抱かな~って思ってますw

      返信
      1. ゆき

        さっそくの返信、ありがとうございます。

        Geforceドライバの方が、その辺のメモリ管理に長けている感じなのかも?ですね~
        4K描画設定も詰まってきたので(LODは入れたくない!w)、何とかGeforceグラボをポチらずに64bitクライアントを待てそうです・・・w

  5. Rilm Aroy

    お世話になります。
    テレポ落ちに関して「既存IMEをoffice IME2010にする」を読んでこちらに来ました。
    win7 64bit
    core i7 2600k
    GTX660
    のプレイ環境ですが、そちらの処置で、一発で治りました。
    最高画質プレイでも、yojinbo鯖では、問題なくできています。
    重ねてお礼を言わせてください、ありがとうございますm()m

    また、自分のPCには、officeが入ってないのですが、DL可能でした。
    win7環境であれば真っ先に試すべき価値があると思います!

    返信
    1. rynerluter 投稿作成者

      おーよかったです^^
      でも、もうすぐ3.0で64ビット版クライアントが出てくるので、この悩みからも一気に解消ですね~^^

      返信

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中