コンピューターは8GBのRAMのうち4つ以上を使用しません…?(64ビットコンピューター)


17

最近、私のコンピューターを将来に備えて、元の4GBのメモリの上に追加しました。合計メモリを8GBにしたので、速度に顕著な変化はありませんでした。タスクマネージャーを調べてみたところ、ChromeとFirefoxの両方が20タブずつ開いていても、コンピューターが4GBを超えるメモリを使用しないことがわかりました。

調査後、誰もが提案することはすべて、使用可能なメモリ量を確認することでした。奇妙なことに、8GBのメモリがあり、7.74GBが使用可能であると書かれています。

HP Pavilion g7-1075dxの仕様はここにあります。 AMD Phenom IIを搭載したWindows 7 Home Premium 64ビットを搭載したノートブックPCです。

私の主な質問は次のとおりです。私の64ビットコンピューターでは、なぜコンピューターが4 GBを超えるメモリを使用していないのに、7 GBを超えるメモリを使用できるのでしょうか。

編集:それが役立つ場合、リソースモニターは他のすべてのRAMを「スタンバイ」と説明します


1
4GBを超えて使用していないことをどのように確認できますか?メモリをテストまたは使用するために他のプログラムを試しましたか?ChromeとFirefoxはそれが賢明なメモリを要求しない...
Mokubai

9
これまでのところ、RAMを増やしてもコンピュータ自体が高速になるとは誰も言及していませ。顕著なスピードバンプが見られるのは、ワークロードが大量のRAMを消費し、Windowsがディスクに継続的にページングする必要がある場合のみです。この場合、RAMを追加すると、間違いなく速度が向上します。しかし、98%の人々は、4GB以上のRAMを必要とする種類のことをしておらず、その結果、追加のRAMをすべて使用することで目に見えるメリットを得ることができません。
-misha256

1
@mattycfp Windows RAMの使用量を制限する可能性のある他の可能性が1つあります。あなた、他の誰か、またはいくつかのソフトウェアがRAM使用量に制限を設けることは可能ですか?:この記事を見て、指示に従ってくださいhelpdeskgeek.com/windows-7/...
misha256

1
Firefoxには、すべてのタブ/プロセスで2GBの制限がありますが、Chromeも制限があります。これは、プロセスごとの通常の制限に追加されます。
ジェームズライアン

6
FirefoxとChromeをそれぞれ20のタブで開くだけでは十分ではありません。157個のタブでFirefoxを開いていますが、1 GBのRAMも消費していません。ゲームの実行中に確認してください。Jamie Hanrahanの答えは非常によく詳細です。詳細については、Mark Russinovichのブログ投稿「Pushing the limits of Windows」を参照してください。リンク
sbecker

回答:


27

それが役立つ場合、リソースモニターは他のすべてのRAMを「スタンバイ」と説明します

「スタンバイ」RAM 使用中です。ページキャッシュとして使用されています(すべてのプロセスワーキングセットから最近失われたページを保持します。つまり、これらのページフォールトはディスクに移動せずに解決できます)。また、SuperFetchによるプロアクティブなファイルキャッシュにも使用されます。

スタンバイページを他の用途に割り当てる前にディスクに書き込む必要がないため、「利用可能」と見なされます。プロセスがページフォルト当たったときのようなディスクからの読み取りが必要ですが、新しい物理ページ(複数可)は、そのプロセスに割り当てられている必要があり、必要に応じてこれらは、スタンバイリストから撮影することができます。(これは、この目的のためのページを見つけるための最初の選択肢ではありません。それが無料でゼロページリストになります。)

言い換えれば、システムは正常に動作しています。

Windows Internalsのtestlimit実験で使用されたツールの1つであるコマンドラインツールを使用すると、システムでより多くのRAMを強制的に「使用中」状態にすることができます。通常のsysinternalsツールの一部ではありませんが、関連付けられています。sysinternalsサイトで見つけてください。ダウンロードは、testlimit.exeとtestlimit64.exeの2つのバージョンを含むzipファイルです。両方ともリンクされたラージアドレス対応であるため、32ビットバージョンでは、/ 3GBでブートされた32ビットマシンで最大3 GiB、64ビットマシンで最大4 GiBを割り当てることができます。

c:\> testlimit -? 助けを与えます。

c:\> testlimit -d 4 -c 512それぞれ4 MiBの512割り当てで2 GiBのプロセスプライベート仮想アドレス空間を割り当てようとします。これは、64ビットマシンで正常に動作するはずです。32ビットマシンではない / 3GB(ほとんどではない)で起動され、それはそう、ものの数MIBはプロセス(プログラム自体のように、すべてのDLLなど)にすでにあります少し前B / Cをエラーありプログラムが割り当てる完全な2 GiBがありません。

どちらの場合も、「使用可能」RAMが減少し、「使用中」RAMが増加します、OSがプロセス内のすべての2 GiBをプライベートワーキングセットのままにする保証がないため、必ずしも2 GiBの価値はありません。たとえ短期的にそれを行ったとしても、OSが「HM、あなたは実際にそれで何もしていない、他のプロセスはそれをもっと必要としている」と判断し、ページアウトするため、プロセスのワーキングセットが後で減少することがあります。

割り当て「チャンク」のサイズを大きくしすぎて、それに応じてチャンクの数を減らします。各割り当ては事実上連続している必要があるため、すぐに失敗します。たとえば、4 GiBアドレス空間で7つの512 MiBチャンクを見つけようとすると、失敗する可能性があります。

d(irty)の代わりにl(eak)オプションを使用すると、プログラムは仮想空間を割り当てますが、それを参照することはありません。これにより、「使用可能な」RAMが大幅に減少することはありません

(d(irty)オプションは、x86 / x64ページテーブルエントリの「ダーティページビット」から名前を取得します。これは、対応する仮想ページが「変更」スタイルオペランドでアクセスされるときに設定されます。これは、プロセスワーキングセットからページを削除する必要がある場合、ページを他の目的に使用する前にその内容をどこかに保存する必要があることを示すWindowsの指示です。エビクション直後の「変更されたページリスト」。そこから、Windowsはそれらをそれぞれのバッキングストアに書き込みます。

これらのテストが上記のように機能するには、十分な「コミット」が必要です(このオプションはかなりの量のRAMを使用していませんが、l(eak)オプションでも)。具体的には、テストを開始する前に、「コミット制限」は「コミット料金」より少なくとも2 GiB(または割り当てている量が大きい)でなければなりません。これは、d(irty)だけでなくl(eak)オプションを使用している場合でも適用されることに注意してください。この制限に達すると、「システムのメモリが不足しています」ポップアップなどが表示されます。解決策は、もちろん、RAMを追加するか、ページファイルの設定を増やすことです。


16

実際に、WindowsはRAMの使用を制限するように構成できます。ラップトップでこの設定をどのように構成したか、または誰が構成したかはわかりませんが、以下を確認する必要があります。

最大ラム設定

この記事には詳細がありますが、上記のダイアログボックスへのアクセスは簡単です。

  1. [スタート]アイコンをクリックしmsconfig.exeて、検索ボックスに入力します

    msconfigの起動方法

  2. msconfig.exeを起動し、BootタブをクリックしてからAdvanced Options...ボタンをクリックすると、次のようになります。

    msconfigブート設定ダイアログ

  3. 8ギガバイトのRAMのために賢明な値、例えば8192を入力して、どちらかまたはオフにMaximum memoryWindowsは、あなたが持っているすべてのRAMを使用して行う必要があり、完全にチェックボックスを。私は間違いなく両方のオプションを試してみました。

    最大ラム設定


@ misha256-もともとほとんど内容がなかった回答に深く混乱しています。そして、他の誰かが回答の1つを提出した場合、回答について二度考えたことがなかったでしょう(おそらく、それらの有用性をわずかに厳しく判断する以外は)。
ラムハウンド

@ misha256これが問題である場合、OPは使用中の約4 GBと別の4 GBのスタンバイを認識しません。そのオプションによって除外されたRAMは、「スタンバイ」に表示されません。OPには「8GBのメモリ、7.74GBが使用可能」も表示されません。(たとえば、ビデオカードが原因で、「使用不可」の256 MBが予想されます)。
ジェイミーハンラハン

10

SysInternals RAMMapを使用して、PCが物理 RAM で何をするかを正確に確認できます。タスクマネージャーやプロセスエクスプローラーなどの他のツールは、主に仮想メモリに焦点を当てており、この状況に最適なツールではありません。

[使用回数]タブでは、多くのアプリケーションを開いていないときに大きな部分が使用されていないことがわかります。

SysInternals RAMMap

これは、PCがこの状態のままになるという意味ではありません。いくつかのプログラムを開くと、メモリが使用されます。


「仮想RAM」という用語は使用しないでください。また、他のツールが主に仮想メモリに焦点を当てているとは言いません。物理メモリの使用状況を示す多くのカウンタが利用可能です。
ジェイミーハンラハン

5

このテーマに関する非常に優れた記事からの引用:

実際にメモリを増やしても、[コンピューターの]処理速度は向上しません。それを行うことができるのは、より高速なCPUだけです。

私の経験では、それは一般的に絶対に真実です。同時に多くのプログラムを実行していてそれらのプログラムにかなりのRAM要件がある場合を除き、4GBを超えるRAMを搭載することで実際のメリットが得られることはほとんどありません。

4GBが大量のRAMであることに気付いていないようです。Windowsをそれ以上に使用するには、努力が必要です。多くの異なるアプリを開き、それらのアプリでいくつかの大きなファイルを開く必要があります。YouTubeビデオのいくつかのタブを開くと、4GBを超える使用率が表示されるようになります。


2
@mattycfp Internet Explorer、Firefox、Word、Excel、Outlook、Skype、Visual Studio 2010(既知のRAMホグ)、Photoshop、Media Player、VLC、MPC-HCなど、4GBマシンで16個のWindowsを開きました。さらに、他のいくつかのランダムなアプリもあり、それらを切り替えたり、ドキュメントを読み込んだり、ビデオを再生したり、すべてを実行したりしています。実際のRAM使用量は2.2GBで、マシンは従来どおり高速です。参照してください、4GBはすべて簡単です;-)
misha256

3
@mattycfp 120 FFのウィンドウ?特にラップトップでは、RAMを使用するよりもCPUを最大にする可能性が高くなります。また、FFは32ビットアプリであり、複数のFFウィンドウが実際に単一の32ビットプロセスを共有することを忘れないでください。120 WindowsのFFではなく、WindowsがどのようにRAMを使用するかをテストするために、多くの異なるアプリを同時に実行する必要があるのはそのためです。
misha256

4
@ misha256あなたがしますお使いのシステムは常にメモリをスワップされている場合、パフォーマンスの向上を参照してください。メモリの負荷が増加すると、ページングが増加し、システムの速度が低下します。メモリを追加することで速度が向上するわけではありませんが、特に関連するソフトウェアがシステム要件で一定量のページングを想定している場合、速度が低下することはありません。その記事はページングについてあまり言及していないようです。ページングは​​あなたを遅くするものです。
phyrfox

4
@ misha256 IRC、Spotify、Notepad ++、Chrome、およびタスクマネージャーを開いており、合計4GBのうち3.02GBを使用しています:(3つのVS2013インスタンスを開きます(これは職場で行う傾向があります)。思っているよりも4GBの制限に達する方が少し簡単ですが、実際にはパワーユーザーが必要です。
Thebluefish15年

1
@ misha256修正:FFは大規模アドレスを認識し、32ビットプロセスで最大3GBをアドレス指定できます。64ビットバージョンのFF(現在はWindowsのベータ版)は、明らかにはるかに対処できます。また、4GBを超えるRAMを "使用"(常駐するプライベートワーキングセット)するのは難しいと言っているときに、少し一般化しすぎていると感じます。それは本当にあなたが何をしているのか、そしてあなたがどれだけオープンにしているかに大きく依存します。私のベースライン使用量はすでにそれを超えています。
ボブ

5

Windowsは、メモリのページングなどの巧妙な機能を実行します。実行中のタスクのほとんどが不要であると認識し、ページファイルに大量のデータをダンプすることを決定し、RAMを使い果たすことを避けるためだけに実行しているように見える可能性があります。ページングを無効にすることでこの理論をテストできますが、これは恒久的に設定するべきものではありません。これを行うための多くのチュートリアルがインターネット上にあります。それが行うことの1つは(24GBおよび64GBマシンでも)、ページングルールが約50%、80%、および90%の消費(これらの数値は概算値)に達したときに、より厳密にすることです。これらの各段階で、大量のものがページファイルにダンプされることに気付きました。

楽しいことは次のようなものです。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PAGE_SZ (1<<12)

int main() {
    int i;
    int gb = 2; // memory to consume in GB

    for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) {
        void *m = malloc(PAGE_SZ);
        if (!m)
            break;
        memset(m, 0, 1);
    }
    printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20);
    getchar();
    return 0;
}

これはいくつかのCコードです。GCCまたはいくつかのコンパイラを入手し、自分自身をexeにして、メモリ消費が増加するのを見てください。2 GBを超えるメモリを消費する場合は、64ビットプロセスとしてコンパイルして実行する必要があります。あなたがそのようなことに興味があるなら、それは面白い実験かもしれませんが、他に何もなければ:)

編集:プログラムがこれで死ぬことはないことに注意したかっただけです。他のコードが機能したかどうかわからないので、以前のコードから編集しました(メモリがページングされ、メモリが消費されないことになります(笑))。新しいコードには行が含まれていますint gb = 2; // memory to consume in GB-2を変更すると、プログラムが消費するメモリ量が調整されるため、必要なだけ使用するように設定できます。システムの設定よりも高い値に設定すると、おそらくクラッシュします(テストされていないため、注意して使用してください)


コンパイルできたらいいのに、インターネットでダウンロードしようとすると破損することがあります:U
mattycfp

5
@mattycfpそれでは、OSで4GBを超えるRAMを使用することはできず、すべてのダウンロードが破損し続けますか?までの時間()のハードドライブをWIPE、新鮮なOSをインストールしますか、または(b)のビンにラップトップを投げると、既に適切なものを取得します。
misha256

1
提供されるプログラムは、2 GBの仮想メモリを一度に1ページずつ割り当てて「タッチ」します。これにより、割り当てられた直後に各ページがRAMにフォールトされます。ただし、WindowsがすべてをRAMに同時に保持することを保証するものではありません。プログラムはすべてのvmに繰り返しアクセスするわけではないため、最初に割り当てられたページはページアウトされる可能性があります。Windows Internalsツール「testlimit」のオプション-dを使用すると、そのプログラムと同じ効果を得ることができます。
ジェイミーハンラハン

@mattycfpその場合、RAMが故障していないことを確認したいかもしれません...ダウンロードしたすべてのファイルが何らかの形で破損していますか?互換性のないスティックにも問題がある場合があるため、マザーボードのマニュアルを確認し、RAMがこれらの指示に従って構成されていることを確認する必要があります(スロットには1と2または1〜4の番号が付けられ、通常1と3は2および4と同様に、RAMの同じ「タイプ」または「メーカーとモデル」。&はい、このプログラムは2GBを使用する必要があります。これは、行を変更することで編集できますint gb = 2; // memory to consume in GB。2を変更するだけです。
XtrmJosh15年

なぜ唯一のuseがunsigned longにキャストするときにgbがint型であると宣言したのですか?また、iを同じように扱い、intとcast-to unsignedの混合比較行っています。だから、私も長く署名しないようにします。
JDługosz

1

32ビットプログラムを使用して、コンピューターの実行速度をテストしていますか?その場合、RAMがさらにある場合でも、32ビットアドレスは4 GBのRAMしか指すことができないことに注意してください。有用な結果が必要な場合は、64ビットプログラムを使用してテストを繰り返し、4 GBのRAMを使用して速度をチェックし、8 GBのRAMを使用してテストを繰り返す必要があります。また、より高速に実行するには4 GBを超えるメモリを使用できる64ビットプログラムである必要があります。すべてが使用できるわけではありません。プログラムが32ビットかどうかを確認するには、プログラムを起動して実行したままにし、Windowsタスクマネージャーを起動して[プロセス]をクリックし、目的のプログラムが見つかるまで下にスクロールします。[イメージ名]列のプログラム名の後にスペースが続き、* 32の場合、それは32ビットプログラムです。


複数の32ビットプログラムを実行する場合、それらの合計RAM使用量は簡単に8 GBに達する可能性があります。
ジェイミーハンラハン

0

Sysinternalsからプロセスエクスプローラー(procexp)を取得します。リソースグラフがあり、プロセスごとのメモリ使用量を表示できます。ストックプロセスビューよりもはるかに優れています。

物理RAMの使用と仮想spqceの使用を比較して、単純にすべてを使用していないのか、それ以上を必要としているように見えるのに物理的な使用を制限しているのかを確認できます。

ほとんどのありふれたプログラムは、需要を低く抑える別のワーキングセットサイズを使用します。プログラムが大量のメモリを割り当てる場合、実際にはすべてを同時に使用しているわけではありません...

Windowsは、プログラムからページを使用可能なリストに積極的に移動します、ページフォールトが発生すると、スワップファイルからロードすることなく、リストから元に戻ります。スタンバイは、これらを含む可能性があります。さまざまなツールがさまざまな方法でさまざまなセットにラベルを付けます。

少なくともこのテストでは、スワップファイルをオフにしてみてください。これにより、データメモリが実際に使用されます。procexpはそれを明確に見るのに十分かもしれませんが。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.