特定のプロセスだけディスクへのスワップを禁止する方法

このQ&Aのポイント
  • 特定のプロセスだけディスクへのスワップを禁止する方法はありますか?
  • 物理メモリ上のデータがあふれた場合や、あまり頻繁に使わなさそうなデータはOSが選択的にディスク上の仮想メモリへスワップアウトするわけですが、このときに特定のプロセスのデータだけスワップアウトしないようにする事はできますか?
  • 特定のアプリケーションだけ頻繁に使うので、そのアプリのデータだけスワップさせたくないという事です。現状で、自分のPCは1.5Gのメモリを積んでいて、タスクマネージャのコミットチャージで見ると900Mぐらいしか使っていません。600Mもあれば、ひとつのアプリのプロセスを載せるには十分だと思います。
回答を見る
  • ベストアンサー

特定のプロセスだけディスクへのスワップを禁止する方法はありますか?

OSはWinXP Proです。下記の2つの投稿を踏まえて質問いたします。 http://okwave.jp/qa2418975.html http://okwave.jp/qa2821850.html 物理メモリ上のデータがあふれた場合や、あまり頻繁に使わなさそうなデータはOSが選択的にディスク上の仮想メモリへスワップアウトするわけですが、このときに特定のプロセスのデータだけスワップアウトしないようにする事はできますか? すなわち、スワップアウトするデータをOSに任せずに自分で選ぶ事は可能ですか? 目的は、特定のアプリケーションだけ頻繁に使うので、そのアプリのデータだけスワップさせたくないという事です。現状で、自分のPCは1.5Gのメモリを積んでいて、タスクマネージャのコミットチャージで見ると900Mぐらいしか使っていません。600Mもあれば、ひとつのアプリのプロセスを載せるには十分だと思います。 仮想メモリの設定でページングファイルを作らない、とすれば全てのデータは物理メモリ上におけるのでしょうが、それだとメモリを恐ろしく積まねばならず、非効率です。 ということなんですが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

> このときに特定のプロセスのデータだけスワップアウトしないようにする事はできますか? 「そのようなプログラムの書き方をすれば(そういう専用プロセスなら)」 物理メモリをある程度強制的にコミットすることも可能ですが 既存のプロセスをそのようにすることはできません。 (こういうプログラムはメモリが足りないと失敗するので一般的ではないです<仮想化の恩恵を受けられない)、 よって、恐らく質問者さんの望むことはできません。 # よく使ってるものや前面にあるものなどは極力スワップアウトしない筈なので、 # 多分、明示的に指定しなくてもそうなってる可能性も高そうですが…。

subarist00
質問者

お礼

ご回答ありがとうございました。今のOSではそこいらへんが限度なんですね。 まさに操作中のアプリでも、物理メモリが500M以上は残っているはずなのにハードディスクをガリガリやり始めたりします。この辺が不満なんですけどね。

その他の回答 (1)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

メモリがどれだけ余っていようが「ファイルアクセス」が必要なソフトもありますし(アプリ次第)、 アクセスしてるのはアンチウィルスソフトだったとかOSの管理機能だったとかいうこともありえますし、 見た目の残容量と実際の容量が違ったりすることもありますし…。 # 「全体では500MB余ってる」といっても実際に500MB取れるとは限らないのです。 まぁWindowsは一応個人ユースですから、ソフトの方も一般向け ・スワップしないアプリにすると、メモリがないと動かなくなる   ⇒一般には「売れない」 ・メモリがなくても動くようなアプリにすると、スワップされる可能性あり   ⇒商用ソフトは(専用ソフトを除けば)普通こう作る 要件に合致しないですから、まぁ難しいかと。

subarist00
質問者

お礼

まあ、そういうことなんでしょうね。お付き合いありがとうございました。 アプリが自分でテーブル値や処理中のデータをテンポラリなファイルに一時保存しているなどアプリ側でやってるのなら仕方ないのですが、OS側で前面表示のアプリを優先的にメモリに残すなんていう選択的なことができるのなら、それを全自動にせずに少しユーザーに開放してくれてもいいんじゃないか、と言う程度のことです。 実際、画像処理や解析計算でテンポラリの大容量データができる事は結構あるのですが、仕事でPCを使っているとそういう人は多いと思います。

関連するQ&A

  • プロセスについて

    アプリを起動するとプロセスが発生すると思うのですが、そのプロセスはまず仮想メモリアドレス空間に待機しその後物理メモリにて処理され、いっぱいだった場合はページングファイルが使われると思います。 その場合、1つのアプリでのプロセスが物理メモリとページングファイルに分かれることはあるのでしょうか?

  • プロセスと仮想メモリについて

    プロセスと仮想メモリについて こんばんは。 プロセスについて勉強しています。 その過程で、「プロセスは物理メモリーとは切り離された仮想メモリーにアクセスする。 仮想メモリーはひとつのプロセスに対して4Gバイト割り当てられる。」 とありました。 今まで仮想メモリーと言うのは、ページングファイル(物理メモリの代わりに使用される ハードディスクの領域)のことだと思っていましたが、この仮想メモリーと、プロセスを 語る上での仮想メモリーとは別物なのでしょうか? 宜しくお願いいたします。

  • 特定のプロセスが使用している物理メモリ量

    特定のプロセスが使用している物理メモリを確認する方法を教えてください。 プロセスが使用している物理メモリ領域は「Working Set」と呼びますが、「Working Set」には「Private Bytes」と「Shared Bytes」が含まれます。 「Shared Bytes」は、他のプロセスと共有される物理メモリのため、特定のプロセス専用で使用される物理メモリではありません。 「Private Bytes」は、そのプロセスが物理メモリで利用中のものとページアウトされたものになり、ページアウトされたものは物理メモリにはありません。 「Working Set」は「Private Bytes」+「Shared Bytes」の総和といっても、ページアウトされたものをは物理メモリにないため、ページアウトされたものは引かれています。 「Working Set」の値から「Shared Bytes」の使用量を調べて、「Shared Bytes」の中で特定のプロセス専用のものでないものを引くことができれば、特定のプロセスが使用している純粋な物理メモリを知ることができるのではと考えております。 パフォーマンスモニターなどのツールでどの「カウンタ」のどの「インスタンス」を取得して、どのような計算をすれば、求めることができるかご教示頂けませんでしょうか。

  • SE初心者の質問(ページング編)

    仮想メモリと実メモリの間のやりとりを ページングというと思いますが、 私の持っている書籍には、 「実メモリ」と「仮想メモリ」を部分的にスワップしながら プログラムを実行する。 Windowsは、仮想記憶の仕組みが「ページング方式」である。 と書いています。 もう、質問内容がおわかりかもしれませんが、 「ページング」と「スワップ」の違いがわかりません。 IT用語辞典でも、スワップはプロセス単位で ページングはページ単位、と書いていますが、 やっていること(目的)は同じようにみうけられます。 どのような使い分けがなされているのでしょうか? また、各々の仕組みも違うのでしょうか?

  • スワップされたプロセスが他のプロセスに与える影響

    社内利用するウェブサーバーやファイルサーバーにするためにDebianでサーバーを構築しました。 で, Xについてなのですが, 初心者ですし, サーバーは机のすぐそばに あるのでコマンドなどを覚えるまでの間は立ち上げておきたい(使わないときにログアウトはする)と 思ったのですが, どうもメモリをいっぱい使っているようです。 物理メモリも1G程度のマシンなのでパフォーマンス的な観点から 苦労してでもXなし環境でやるかどうか悩んでいるのですが, でも, 長時間ログアウトしているままなら, 1. そのうちXのメモリはスワップアウトされ, 実メモリ上からはほとんど消える。 2. HTTPが重いCGI実行したりしてもXのメモリは既に スワップアウト済みなのでハードディスクへのアクセスはない 3. したがって, 応答速度にさしたる影響は与えない と, ふと思ったのですが, 間違っていますでしょうか? ログイン画面とかは実メモリに残り続けると思うので, その分スワップは発生しやすくなってパフォーマンスに影響を与えると 思うのですが。 皆様, ご教授よろしくお願いいたします。

  • タスクマネージャに乗らないプロセスは存在しますか?

    ■環境 OS:Windows 7 Professional(64ビット) メモリ:24GB パソコンをずっと起動していると、メモリが解放できずに、徐々にメモリを食いつぶしていってしまいます。 その時のタスクマネージャのプロセス毎のメモリ使用量を合計しても、物理メモリの合計にまったく届きません。 ということは、タスクマネージャに乗らないプロセスが存在すると思えるのですが、そんなことがありえるのでしょうか? また、あり得る場合、その謎のプロセスを確認する方法はありますか? また、メモリがたまった状態で、フリーのメモリ解放ソフトなどを使うと、フリーズ状態になります。 (ページアウト可能なページがない?) ページングファイル有でも無でも、同様のメモリ枯渇に陥ります。

  • スワップファイルの移動について

    こんにちは。 仮想メモリの断片化が気になったので、仮想メモリの 最適化(デフラグ)をしたいと思います。 デフラグの際、通常はロックされていて最適化できない スワップファイルをCドライブと同じHDD内のDドライブへ 移動させてからデフラグをし、その後移動した仮想メモ を元に(Cドライブに)戻す、といったことは可能でしょうか?。 物理メモリが64MBしかないため一時的に仮想メモリをOFF にはできないと思うので(メモリ不足でOSの起動自体がで きなくなる可能性があると聞きました)、移動する事でな んとかならないかと思ったんですが... 。 このような操作は危険なのでしょうか?。 この操作によるリスクなどもアドバイス頂けると嬉しい です。 どうか宜しくお願いいたします。 [環境] PC:Fujitsu FMV BIBLO MF460R (ノート) OS:98SE

  • 物理メモリとページファイル及びスワップについて

    参考サイト:http://www.atmarkit.co.jp/fwin2k/win2ktips/076pgfilesize/076pgfilesize.html メモリについて調べていて疑問に思ったことがあるので質問させてもらいます。 ・今まで仮想メモリというのは物理メモリの不足を補うために適時HDDに確保された領域(ページファイル)のみを示す用語だと認識していたのですが、そうではなく「仮想メモリ=物理メモリ+ページファイル」という実質使用可能なメモリの総量という意味の言葉ですか? ・例えば1GBや2GBなど、十分な物理メモリがあるとき、トータルで使用されるメモリがそれよりも少ないならば、HDDに領域を確保しない。つまり物理メモリを超えそうになったときに初めてページファイルは作成され、物理メモリで足るようになれば解放されるものだと思っていました。しかし、参考サイトを読んだ限りでは「ページファイルは必要に応じて生成されるのではなく、恒常的に存在し、使用頻度の低いデータはメモリにいくら空きがあったとしてもスワップされる。」と認識しました。必要に応じてページファイルが適時拡張されるのはいいのですが、ページファイルはどんなに物理メモリが使用状況に対して十分でも常に存在するものなのですか?また、物理メモリが十分に足りていても使われないデータはスワップアウトされてしまいますか? ・ページファイルはデフォルトで物理メモリの1.5倍の大きさがあるらしいのですが、当然このファイルがHDD上にとった領域は別のファイル(.txtなど)の保存領域としては利用できませんよね? 長くなりましたが、以上4点についてご教授お願いします。説明不足がありましたら追記しますのでよろしくお願いします。

  • 物理メモリとスワップ(仮想メモリ)について

    windows xp 搭載メモリ:512MB の環境です。 タスクマネージャでメモリ使用量を見ると、 物理メモリ 合計:514992(約512MB) 利用可能:251928KB PF使用量(物理メモリで利用されている量+スワップ?):340MB となっていまして この状態というのは 物理メモリで約260MB使っていて(合計-利用可能) スワップが約80MB(PF使用量-260MB) 発生しているということなのでしょうか? 利用可能な物理メモリが251928KBもあるのに、 残りの物理メモリを使わず、スワップが発生しているように 見えるのですが、物理メモリに、ある程度利用可能なメモリ領域が あっても必ず仮想メモリを利用するものなのですか? 自分としては、物理メモリの使用量がMAXになってから 搭載している物理メモリの最大値を超えて、溢れたからそらに 対応するために、仮想メモリが使われるような概念をもっていますが、 違いますでしょうか? 頭が混乱中ですw ご教授お願いいたします。

  • 仮想メモリは要らないのですけど・・・

    WindowsXPを使っている者ですが、システムのプロパティでページングファイルを無効にしても、タスクマネージャのプロセスの所を見ると、全てのプロセスで仮想メモリが使われています。 タスクマネージャによると、コミットチャージの制限値+カーネルメモリの合計が物理メモリの合計にほぼ等しいので、それらの数値によると仮想メモリは使われていないみたいなのですが・・・。 仮想メモリを殆ど使わせないようにはできないのでしょうか。