Windows 8.1 のメモリ管理に問題があるようで、メモリ使用量が4GB~5GBぐらいになると、3GB~4GBも空きがあるのにも関わらず「メモリが不足しています。いくつかのアプリケーションを終了してください」(記憶によるものなので正確なメッセージではない)みたいなメッセージが表示されてしまい、メモリ使用量が5.5GBぐらいになると3.5GBぐらい空きがあるのにも関わらず、勝手にアプリケーションが終了されたり、アプリの動作不良が頻発したりします。
Windows 8.1 は「ページングファイルなし」の設定だと実メモリの半分ぐらいしか使えないという残念な仕様なようです(memtest などではエラーが発生しないので、メモリの不具合ではありません)。勿論、ページングファイル有りだとこの症状は発生しません。
スワップ忌避症 (スコア:2)
自分の管理下のPCは、メモリ8GBページファイルなし。で運用してる。
というか、ページファイルをなしにしたいから、8GB積んでるとも言う。
ページファイルをなしに設定するのはよくないと聞く、
このへん [microsoft.com]でも、
すべてのページングファイルを削除することはお勧めしません。
と書かれてるし、何か問題が発生する危険もあるのだろう。
だが、それでも、自分には、pagefile.sysが存在しないことが、すごく幸せに思えるのだ。
Windows 8.1 だと 実メモリ8GB だと 4GB ちょっとしか使えないorz (スコア:2)
私も、メモリ8GBのノートパソコン(Let'snote、Windows 8.1)を、ページングファイルなしの設定で使っています。
Windows 8.1 のメモリ管理に問題があるようで、メモリ使用量が4GB~5GBぐらいになると、3GB~4GBも空きがあるのにも関わらず「メモリが不足しています。いくつかのアプリケーションを終了してください」(記憶によるものなので正確なメッセージではない)みたいなメッセージが表示されてしまい、メモリ使用量が5.5GBぐらいになると3.5GBぐらい空きがあるのにも関わらず、勝手にアプリケーションが終了されたり、アプリの動作不良が頻発したりします。
Windows 8.1 は「ページングファイルなし」の設定だと実メモリの半分ぐらいしか使えないという残念な仕様なようです(memtest などではエラーが発生しないので、メモリの不具合ではありません)。勿論、ページングファイル有りだとこの症状は発生しません。
この問題って、Windows 10 では改善されていますか? もし、Windows 10 を「ページングファイルなし」で使っている人がいたら、教えていただけると嬉しいです。
Re:Windows 8.1 だと 実メモリ8GB だと 4GB ちょっとしか使えないorz (スコア:2, 参考になる)
メモリが空いているように見えて、実は、メモリマップドファイルでマッピング用に使われていて空いていないということがあります。メモリが必要になったら解放可能ということで、空きメモリ扱いされていますが、実行中のアプリにロックされていたりすると、解放できないため、リソースモニタでは空き領域があるように見えるのに、、メモリ不足が発生するという状態になります。この状態になるとOSのOOMKillerが活動を開始して、勝手にアプリケーションを終了させたり、メモリ確保系のAPIのエラー時の例外処理が甘いアプリケーションが異常動作し始めたりします。
リーソースモニタではなく、Sysinternals SuiteのRAMMAPあたりを利用すれば、詳細が表示されることでしょう。(ちなみに、RAMMAPはWindows10には非対応のようです。)
Re:Windows 8.1 だと 実メモリ8GB だと 4GB ちょっとしか使えないorz (スコア:2)
分かりやすい解説をありがとうございます。
「タスク マネージャー」の「パフォーマンス」→「メモリ」の「利用可能」(合計 - 利用中)が「実際の空きメモリ」だと信じていましたが、違ったんですね。
さっそく、Rammapツールを使ってみようと思います。
Re:Windows 8.1 だと 実メモリ8GB だと 4GB ちょっとしか使えないorz (スコア:1)
物理メモリに関係なくページファイル上に事前にアロケートするAPIもあるし、ページファイル上に確保できないとメモリ不足返します。
パフォーマンスのために明示的にやってることだからOS のアップデートでは改善される可能性もありません。
ちなみに Win8.1 で、ページファイルないと半分しか使えないというような不具合もありません。物理シミュレートしてるマシンではページファイルなしで、16GBのマシンで14GBのワークを使う演算が普通に動いてます
そもそも一般的な使い方だと Windowsでページファイルなし設定は、動作速度も結構落ちるので、OFFにするのはデメリットしかないけど。
Re:Windows 8.1 だと 実メモリ8GB だと 4GB ちょっとしか使えないorz (スコア:2)
教えていただきありがとうございます。
そういうAPIが使用された場合、いくら物理メモリを積んでいたところで、ページングファイルを無効にしていると不具合が発生する訳ですね。
それについては私の勘違いでした。どう勘違いしていたかを図解 [saloon.jp] してみました。
上記のスクリーンショットでは「タスクマネージャー」の表示で「使用中2.8GB」「利用可能4.2GB」とありますが、実際にはメモリの空きが 580GBしかない状況が描かれています。
これを、メモリの空きが4.2GBあると勘違いしていました。「メモリ構成」のところにマウスを置くとツールチップで詳細が表示されることに、今まで気が付いていませんでした。
「スタンバイ」(キャッシュデータやアクティブに使用されていないコードが含まれているメモリ)と「空き」の合計が「利用可能メモリ」と扱われているため、スタンバイのキャッシュデータ等の解放に失敗した場合、物理メモリが不足することになりそうです。
ページングファイルが有効だと、暗号化された外部メディアのファイルを開いているとき(メモリに復号されたコンテンツが展開されているとき)に当該データがスワップされてHDDに書き込まれてしまったり、もっと悪いケースではメモリ上にある秘密鍵の情報がスワップされてHDDに書き込まれてしまったりするといったセキュリティ上のデメリットがあって気分が悪いため、ページングファイルは無効にしています。
確かに、ページングファイル無効化に、速度面でのメリットはなさそうですね。
Re: (スコア:0)
暗号化って出来ないんですかね。デフォでやってるのかな?
MacOSXにはそういうオプションがありました。負荷かかりそうだったから使ってなかったけど。
Re: (スコア:0)
ページファイルを置いているドライブをBitLockerで暗号化してみたら?
Re: (スコア:0)
メモリ管理に問題があるのはOSではなくてアナタです
Re:スワップ忌避症 (スコア:1)
ページングは運次第なのですが、
ダーティページよりクリーンなよく使われるページを主記憶上に維持した方が
性能が出る場合があります。
当然ページファイルがないとそれはできません。
基本的にページファイルがあった方が性能がでます。
あって損はありません。
ただしチューニングの良し悪しと運次第です。(お察し下さい)
基本的に主記憶はワーキングセットが収まるだけあればいいのであって、
ページイン(アウトではない)が最小になればよいのです。
で、前述の通りページファイルなしの場合はワーキングセット以外も主記憶上に
置かれてしまいますので注意してください。
Re: (スコア:0)
実際のところ無効にする利点ってほぼないんですよね
標準のメインメモリ1.5倍はさすがに不要な場面が多いけど数GB程度は確保しておいた方が
パフォーマンスが出るパターンが大部分ですし
Re: (スコア:0)
ページファイルがなければよく使われるページも常に主記憶上に維持されるはずですが、なぜ性能が劣化するのですか? Windowsのメモリ管理が腐っているだけでは?
Re: (スコア:0)
ページファイルも実メモリの空きもなければ、たとえよく使われるページでもファイルキャッシュなどを開放するしかなくなる。
あと、実メモリのフラグメントはページファイル経由でデフラグしてた気がして、フラグメントはCPUキャッシュとかの効きに影響してなかったっけ。
Re:スワップ忌避症 (スコア:1)
VirtualAlloc()系の関数の実装で、古い実装だと、コール時にページングファイル上に領域を確保する実装がされている場合があるので、ページングファイルを完全に無効にしてしまうと、これらの関数がコールされたときに不具合が発生することがあります。それなりの実装上の理由があるのです。
Re: (スコア:0)
今でもCreateFileMappingの第1引数にINVALID_HANDLE_VALUEを指定する事でそういう動作になりますよ。
Re: (スコア:0)
このへん [microsoft.com]でも、
すべてのページングファイルを削除することはお勧めしません。
と書かれてるし、何か問題が発生する危険もあるのだろう。
メモリ不足になった時に動作不良を起こすから、必ず有効にしておけということ。
現状で問題なくても将来的に絶対にメモリ不足にならない保証はない。
Re: (スコア:0)
ページファイルのサイズが上限に達したりページファイルを格納しているドライブの空き容量がなくなれば結局最終的にメモリ不足になるだろ。メモリ不足で動作がおかしくなるのは単にそのアプリがバグっているだけ。
メモリーマップの時に不具合が起きるかも (スコア:0)
メモリーマップドファイルを作成するときにページファイルを指定してプロセス通信することがあるので、なしにするのはやめた方がいいかと