t_hazawaの日記

株式投資とWebエンジニアリングのブログです。株式投資の目次は→です。 https://t-hazawa.hatenablog.com/entry/2021/02/12/220933

ゆるくやるRAMMapなどを使ってプロセスの使用量に表れないメモリ使用量を特定 (Windows、DriverLocked) (Bing Chat頼り)

この記事は「ゆるくやる」

この記事の概要

  • この記事は 34000 文字あります (文庫本68ページ分)
    • でも、途中の10000文字目で「解決編」と「まとめ」に到達します (文庫本20ページ分)
      • (その後は、解決に至るまでに調べたメモリに関すること)

解決したい問題

  • 僕のノートPCに 32GB のRAMがある
  • しかし、起動直後で既に メモリ使用量が 70% ある (by タスクマネージャー プロセスタブ)
  • しかし、タスクマネージャー (←タスクバーのWindowsボタン(旧スタートボタン)を右クリックして出せる) のプロセスの欄をみても、プロセスが使用しているメモリ量を足しても全く 22GBには届かない
    • (タスクマネージャーのパフォーマンスタブから開ける「リソースモニター」で見ても同じ)

解決法

  • 自分のメモリについての理解をBing Chat (Bing AI)に話したら、 「RAMMap」 を教えてもらった (Bing Chat も RAMMap も Microsoft 提供)
  • それをみたら、Driver Locked が 17GB も使っていることを知った
  • Driver Locked でググったら、「仮想化技術」を使ってないかい?という英語の書き込みを見つけた
    • 自分は Hyper-V も有効にしていた

解決

  • そういえば、たまにしか使わないけど Docker Desktop を使っている
    • とはいえ、コンテナ起動数は0 だった
  • しかし、Docker Desktop の設定で Resource で mem を 16GB から 8GBにしたら、その分タスクマネージャーのメモリ使用量が減ったので、これが 原因 だった
    • (コンテナを起動してなくても Docker Desktopはメモリを確保するし、そのメモリは Windows のスタンバイに回されたりしない)
  • 快適ノートPCライフとなった

感想

  • パソコンが軽くなってよかった
  • Windowsのことがまた1つ分かってよかった
  • Bing Chat (現 Copilot Chat?) は (創造性モードなら) 友だち!
    • (詳しくは記事の続きで)

次の記事


(↓ここから↓は上述のことを詳細に書いたものとなります!↓)

勉強の詳細・経過

Bing Chat (Bing AI) とのやり取り

(色々Bing Chat (創造性モード ← 創造性モードだけがGPT-4) に訊いていったら、最終的にRAMMapにたどり着いた、という流れになります)

  • Windowsではリソースモニターのメモリタブで「スタンバイ」とされているものが、 OSによってキャッシュとして使われる (Linuxと同じ)
    • (Windowsはとても積極的にswapを使うが、Linuxはかなりswapを必要になるまで使わない…ので、Linuxでは swapの発生をメモリ不足の指標として使える、という部分が違ったのだと思う)
    • (空きメモリはかなり大部分がスタンバイになる。32GB搭載、22GB使用中でも、10GBスタンバイになる。)
    • (でも 4.5GBくらいしかスタンバイにならなかったこともあったかも。)
      • (残りは空きメモリ)
質問:
リソースモニターのメモリタブの物理メモリの欄をみると、「利用可能」と近いくらいの値で「キャッシュ済み」とかいてあるのですが、使用中でないメモリのスタンバイの部分も、OSによってキャッシュとして使われている、ということですか?
つまり、スタンバイのメモリが2GBくらいないと、OS(Windows)がキャッシュとして使うメモリがなくなり、極端にパソコンの動作が遅くなるということですか? 2023/10/21 20:44
--
回答: 
はい、そのとおりです。物理メモリの欄に表示されている「キャッシュ済み」とは、使用中でないメモリの一部をOSがキャッシュとして使っているメモリ量を指します1。キャッシュとは、よく使われるデータやプログラムを高速に読み書きできるように、物理メモリに一時的に保存しておく領域のことです2。キャッシュが多いほど、パソコンの動作が速くなります。

しかし、キャッシュ済みのメモリは、必要に応じて他のプロセスに割り当てられることもあります1。その場合、キャッシュ済みのメモリ量は減少し、利用可能なメモリ量は増加します。つまり、キャッシュ済みのメモリは、利用可能なメモリの一部でもあると言えます1。
  • ↓でBing は「スタンバイが2GB切ったときではなく、仮想メモリの読み書きが大量になった時に遅くなる」と言っているが、自分のパソコン(32GB RAM)は、タスクマネージャーのメモリ使用率 (= スタンバイをぬいた量)が 92%を超えたら遅くなるので、やはり3GBくらいOS用のキャッシュメモリがないと遅くなる (Linuxでの感覚と同じ)
    • Windowsでも 3GBくらいOSがキャッシュとして使えるRAMメモリがないと、OSが使用する分が仮想メモリ(=ディスク というか SSD)になるので遅くなる
      • ↓の方でSSDがRAMに比べてどれだけ遅いかも訊いたよ
質問:
スタンバイのメモリが2GBくらいないとパソコンは遅くなるの?
--
回答:
スタンバイのメモリが2GBくらいないと、OSがキャッシュとして使うメモリがなくなり、極端にパソコンの動作が遅くなるということはありません。スタンバイのメモリは、物理メモリの中でまだ使用されていない領域を表します3。スタンバイのメモリが少なくても、OSは必要に応じてキャッシュ済みのメモリを解放して、スタンバイのメモリを増やすことができます1。

パソコンの動作が遅くなる原因は、物理メモリが不足して仮想メモリに頼らざるを得なくなった場合です?。仮想メモリとは、物理メモリが足りなくなったときに、ディスク(HDDやSSD)の一部をメモリとして使う機能です?。しかし、ディスクは物理メモリよりも読み書き速度が遅いため、仮想メモリを使うとパフォーマンスが低下します?。

物理メモリが不足するときは、「コミット」という値を見るとわかります。「コミット」とは、プロセスが確保した仮想メモリの量を表します。「コミット」が「インストール済み」(物理メモリ)よりも大きくなると、仮想メモリが使われ始めます。この状態が続くと、パソコンの動作が遅くなります。

以上が、「利用可能」と「キャッシュ済み」、「スタンバイ」と「コミット」の意味と関係についての説明です。詳しくは、以下のサイト123?  を参考にしてください。

ソース: Bing との会話 2023/10/22
(1) Windows メモリ消費の確認方法(リソースモニター編) - 中年 .... https://www.ma-se.com/entry/tech-mem-info-rm.
(2) Windows標準「リソースモニター」でより高度にCPUやメモリを .... https://michisugara.jp/resource_monitor/.
(3) NEC LAVIE公式サイト > サービス&サポート > Q&A > Q&A .... https://bing.com/search?q=%e3%83%aa%e3%82%bd%e3%83%bc%e3%82%b9%e3%83%a2%e3%83%8b%e3%82%bf%e3%83%bc%e3%81%ae%e3%83%a1%e3%83%a2%e3%83%aa%e3%82%bf%e3%83%96%e3%81%ae%e7%89%a9%e7%90%86%e3%83%a1%e3%83%a2%e3%83%aa%e3%81%ae%e6%ac%84%e3%81%ae%e6%84%8f%e5%91%b3.
(4) リソースモニタで コミットサイズ<ワーキングセット なのは .... https://answers.microsoft.com/ja-jp/windows/forum/all/%e3%83%aa%e3%82%bd%e3%83%bc%e3%82%b9%e3%83%a2/5678815c-3351-4897-b2fa-64ddd8d67e9f.
質問:
WindowsLinux と同じように余っているメモリをOSがキャッシュとして活用しているのですね(?)

ー
回答:
はい、そのとおりです。WindowsLinuxと同じように、余っているメモリをOSがキャッシュとして活用しています。キャッシュは、よく使われるデータやプログラムを高速に読み書きできるように、物理メモリに一時的に保存しておく領域のことです。キャッシュが多いほど、パソコンの動作が速くなります。

しかし、キャッシュは必要に応じて他のプロセスに割り当てられることもあります。その場合、キャッシュ済みのメモリ量は減少し、利用可能なメモリ量は増加します。つまり、キャッシュ済みのメモリは、利用可能なメモリの一部でもあると言えます。

以上が、WindowsLinuxのメモリ管理についての説明です。詳しくは、以下のサイト    を参考にしてください。
  • リソースモニターに出てくるメモリ用語
コミット(KB): プロセス用にオペレーティングシステムによって予約されている仮想メモリの量(KB:単位)
ワーキングセット(KB): プロセスによって現在使用されている物理メモリの量(KB:単位)
共有可能(KB): プロセスによって使用されている、他のプロセスと共有可能な物理メモリの量(KB:単位)
プライベート(KB): このプロセスで使用しているため別のプロセスでは使用できない物理メモリの量
  • コミットについて
    • 実際には、プロセスの管轄ではなくOSの管轄となるDriver が Lockedしているメモリのことを質問では言いたかったのだが、コミットも実際に確保しているものよりも大きくなるので、Bingはそれだと思ってしまった (ので、答えにたどり着かなかった)
質問:
コミット(KB) プロセス用にオペレーティングシステムによって予約されている仮想メモリの量(KB:単位) という説明がリソースモニターにあって、かなりたくさん、物理メモリの搭載量を超えるくらいあるのですが、これも全部プロセスが確保して、何らかのデータが入ってるものなのですね。

--
回答:
はい、そのとおりです。コミット(KB)は、プロセスが確保している仮想メモリの量を表します1。仮想メモリとは、物理メモリが足りなくなったときに、ディスクの一部をメモリとして使う機能です2。プロセスが実際に使っているメモリ量よりも、コミット(KB)は大きくなることがあります1。これは、プロセスが将来的に必要とするメモリ量を予測して、オペレーティングシステムに予約しておくためです1。コミット(KB)が物理メモリの搭載量を超えるということは、プロセスが仮想メモリを多く使っているということです。仮想メモリは物理メモリよりも読み書き速度が遅いため、パフォーマンスが低下する可能性があります2。

以上が、コミット(KB)の意味についての説明です。詳しくは、以下のサイト12 を参考にしてください。

ソース: Bing との会話 2023/10/22
(1) . https://bing.com/search?q=%e3%82%b3%e3%83%9f%e3%83%83%e3%83%88%28KB%29%e3%81%ae%e6%84%8f%e5%91%b3.
(2) 「コミット」とはどういう意味? ビジネスでの使い方や注意点 .... https://domani.shogakukan.co.jp/899390.
(3) 結果に「コミット」するの意味とは?「コミット」の正しい .... https://eigobu.jp/magazine/komitto.
(4) コミット(commit)とは? 意味・読み方・使い方をわかりやすく .... https://dictionary.goo.ne.jp/word/%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88/.
(5) 「コミット」の意味とは?ビジネスで使える例文を分かり .... https://okikura.jp/commit-meaning/.
(6) コミットとは - 意味をわかりやすく - IT用語辞典 e-Words. https://e-words.jp/w/%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88.html.
(7) undefined. http://www.bing.com/translator/?ref=TThis&text=&from=&to=.
(8) undefined. https://bing.com/search?q=.
  • ハードフォールト (RAMのデータをディスク上の仮想記憶に書き込んだり、逆にRAMに読み出したりすること、つまりスワップ(多分…)) について
質問:
リソースモニターでプロセスをみると、ワーキングセットよりも多くのメモリをコミットしてるプロセスがたくさんあるのですが、コミットの方にあるデータをプロセスが参照する時に起こることがハードフォールトですか?

--
回答:
2023/10/22 10:57

はい、そのとおりです。コミットの方にあるデータをプロセスが参照するときに起こることがハードフォールトです。ハードフォールトとは、プロセスが必要とするデータが物理メモリになく、仮想メモリ(ディスク)にある場合に、そのデータを物理メモリに読み込むことです1。ワーキングセットとは、プロセスが現在使用している物理メモリの量です2。コミットとは、プロセスが確保している仮想メモリの量です3。

コミットがワーキングセットよりも多い場合は、プロセスが物理メモリに収まらないほどのデータを扱っていることを意味します。その場合、物理メモリからディスクにデータを移動させたり、ディスクから物理メモリにデータを読み込んだりする必要があります。これらの操作は、ハードフォールトと呼ばれます1。

ハードフォールトは、必ずしも悪いことではありません。OSは、効率的なメモリ管理のために、使用頻度の低いデータをディスクに移動させたり、必要なデータを物理メモリに読み込んだりします1。しかし、ハードフォールトの発生頻度が高すぎると、パフォーマンスが低下する可能性があります1。これは、ディスクの読み書き速度が物理メモリよりも遅いためです1。

以上が、コミットとワーキングセット、ハードフォールトの関係についての説明です。詳しくは、以下のサイト123 を参考にしてください。

ソース: Bing との会話 2023/10/22
(1) ハードフォルト/秒とは?大量のハードフォルト/秒が発生する .... https://www.partitionwizard.jp/disk-recovery/hard-faults-per-second.html.
(2) ハードフォールトって何? | MacRuby. https://macruby.info/windows/what-is-hardfault.html.
(3) メインメモリ(主記憶装置)の役割【図解・パソコン購入術】. https://www.pasonisan.com/pc-memory/top.html.
  • 読み出し速度
    • RAMは SSDの25倍高速 (秒間転送データ量)
    • 応答遅延は多分次の回答にある
質問:
RAMとSSDの読み出し速度はどのくらい違うのですか?

- 
回答:
RAMとSSDの読み出し速度は、それぞれの特性や規格によって異なりますが、一般的には、RAMの方がSSDよりも桁違いに高速です。理論的には、SSDの転送速度は、約6Gbps(750MB/sに相当)の SATA インターフェイスに達することが可能です2。 しかし、実際には、SSDの読み出し速度は、約500MB/s前後が一般的です1。 一方、RAMの速度はPC番号によって決まり、PC3-12800メモリのモジュールは12,800MB/秒の速度でデータを転送できます2。 つまり、RAMはSSDよりも約25倍から約30倍ほど高速な読み出し速度を持っていると言えます。

以上が、RAMとSSDの読み出し速度の違いについての説明です。詳しくは、以下のサイト123?? を参考にしてください。

ソース: Bing との会話 2023/10/22
(1) RAMとSSD、どちらを最初にアップグレードすべきか? - MiniTool. https://jp.minitool.com/partition-disk/ram-vs-ssd.html.
(2) SSD/HDDの速度比較・選び方 - Web便利ノート. https://note.cman.jp/hdd/ssd_hdd_speed/.
(3) [方法2選]Windows11/10でRAM速度を確認する方法- EaseUS. https://jp.easeus.com/partition-manager/how-to-check-ram-speed-windows-10.html.
(4) NANDの10倍、Intel Optaneの2倍の速度を実現するMRAM .... https://pc.watch.impress.co.jp/docs/column/semicon/1147803.html.
(5) メモリとストレージ(SSD)の違い|Crucial Japan | Crucial JP. https://www.crucial.jp/support/memory-storage-differences.
質問:
500MB/s もあれは、ハードフォールトには十分対応できそうなのですが、データ読み出しにかかる時間というか応答時間SSDとRAMでだいぶ違うのですか?

-- 
回答:
はい、データ読み出しにかかる時間というか応答時間は、SSDとRAMでだいぶ違います。SSD応答時間は、約100?200マイクロ秒 (100,000?200,000ナノ秒)程度です3。一方、RAMの応答時間は、約1?4ナノ秒程度です2。つまり、RAMはSSDよりも約25,000倍から200,000倍ほど高速な応答時間を持っていると言えます。

応答時間とは、データの読み出しや書き込みを要求したときに、その要求に対してデータが返ってくるまでの時間のことです。応答時間が短いほど、データのアクセスが速くなります。応答時間は、データの転送速度とは異なる概念です。転送速度とは、データが一定の速度で連続的に流れるときの速度のことです。転送速度が高いほど、大量のデータを一度に処理できます。

ハードフォールトには十分対応できそうなのですが、というのは、SSDの転送速度が高いからだと思います。SSDの転送速度は、約500MB/sから12,000MB/s程度です2。しかし、ハードフォールトでは、連続的なデータではなく、ランダムなデータにアクセスすることが多いです。その場合、転送速度よりも応答時間が重要になります。応答時間が長いと、プロセッサが待ち時間を増やしてしまいます。

以上が、SSDとRAMの応答時間の違いについての説明です。詳しくは、以下のサイト123   を参考にしてください。

ソース: Bing との会話 2023/10/22
(1) ディスクの適切な応答時間の目安を解説 ~Premium SSD を使っ .... https://blog.ryukiy.net/post/2015/07/premium-storage-part4/.
(2) 各種メモリ/ストレージのアクセス時間,所要クロック ... - Qiita. https://qiita.com/zacky1972/items/e0faf71aa0469141dede.
(3) メモリとストレージ(SSD)の違い|Crucial Japan | Crucial JP. https://www.crucial.jp/support/memory-storage-differences.
  • ↓で、今回の解決の緒を、現時点での理解をBingに話してみたことで得られた
    • ↓のBingからの回答にあったリンクで、ちょっと今回は消したけど(怪しいサイトだったので)、そこに載っていた情報で「RAMMap」を知り、解決に至った
質問 (というより、手元のテキストファイルに自分の理解を書き出したものをBingに入力した): 
Windows 10のリソースモニターのメモリタブでみる空きがほぼゼロだと、スタンバイ、つまり、OSが使っているキャッシュ(や使ってないコード)を入れる領域がいっぱいということ
 だから、スタンバイが0に近いと、遅くなる
 3.5GB(12%スタンバイ)でも足りない 2023/11/02 10:29

ー
回答: 
こんにちは、これはBingです。??

Windows 10のリソースモニターのメモリタブで見る空きがほぼゼロだと、スタンバイ、つまり、OSが使っているキャッシュ(や使ってないコード)を入れる領域がいっぱいということです。スタンバイメモリは、必要に応じて他のプロセスに解放されるので、メモリ不足の状態ではありません1。しかし、スタンバイメモリが0に近いと、キャッシュが少なくなり、ディスクアクセスが増える可能性があります2。これはパフォーマンスに影響するかもしれません。

3.5GB(12%スタンバイ)でも足りないということは、実行中のプログラムやサービスが多くのメモリを消費している可能性があります。タスクマネージャーやリソースモニターでメモリ使用量が高いプロセスを確認してみてください3。もし不要なプロセスがあれば、終了させることでメモリを解放できます?。また、メモリリークという現象で、プロセスが正常にメモリを解放しないこともあります?。この場合は、プロセスを再起動したり、アップデートしたりする必要があるかもしれません。

1: [1](https://tonahazana.com/windows10-commited-memory-leak/)
2: [2](https://qastack.jp/superuser/976356/free-standby-memory-without-a-reboot)
3: [3](https://tonahazana.com/windows10-commited-memory-leak/#%E3%82%BF%E3%82%B9%E3%82%AF%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%83%BC)
?: [4](https://tonahazana.com/windows10-commited-memory-leak/#%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95)
?: [5](こっちではないけど削除)

ソース: Bing との会話 2023/11/2
(1) メモリのスタンバイが多い。メモリ不足? - 教えて!goo. https://oshiete.goo.ne.jp/qa/8164982.html.
(2) 【Windows10】パッと見だと分かりにくいメモリ使用率の高い .... https://tonahazana.com/windows10-commited-memory-leak/.
(3) 再起動せずにスタンバイメモリを解放 - QA Stack. https://bing.com/search?q=Windows+10+%e3%83%a1%e3%83%a2%e3%83%aa+%e3%82%b9%e3%82%bf%e3%83%b3%e3%83%90%e3%82%a4.
(4) 再起動せずにスタンバイメモリを解放 - QA Stack. https://qastack.jp/superuser/976356/free-standby-memory-without-a-reboot.
(5) (ちょっと削除). ←これが解決法だった。このタイトルに RAMMap という言葉が含まれていたわけではないけど、このキャッチーなタイトルのページを見に行ったらそこにRAMMapのことが書いてあった (…つまりBingがRAMMapのことを示したわけではない…が、それが載ってるページは教えてくれた)

解決編 (RAMMap編)

(DeepL翻訳)
> WindowsはRAMをキャッシュに使っているので、アイドル時にRAMを「使う」のはまったく普通のことだ。しかし、10GBは少し高いようだ。Driver Lockedとは、スワップファイルに書き込むことができず、物理メモリに「ロック」されているメモリのことです。Hyper-V仮想マシンを使用していますか?

> タスクマネージャーのRAMの詳細ページ(パフォーマンスの下)とRamMapのプロセスごとのRAM使用量を表示してもらえますか?
  • DriverLocked は 仮想メモリに追いやれないから、実際には全然使ってない (Dockerコンテナを使ってない) のに、RAMを使い続けたんだね
    • Windowsの普通のプロセスはメモリを仮想メモリに(コミットという形で) 追いやられると思うけど、Driver Locked扱いになってるものはそのように追いやられないんだね (という理解)
  • 仮想マシンなのか? docker container は起動してなかった 
  • ☆ Docker Container は起動してなかったが、Docker Container でのResources で Memory 16.00GB使う設定になってた
  • ☆ Docker Desktop の 設定を 16GBから8GBにして、再起動させたら、一気に使用メモリ量が 34%になり、 84%から60%になった (解決)
  • Driver Locked について詳しい識者のブログ

Hyper-V

まとめ

  • ・Docker Desktop の使用メモリ量は Docker プロセスとしてではなく、 RAMMap でしか見れない DriverLocked の使用量として現れる
  • ・Docker Desktop で全然Docker Container を起動していなくても、 Docker Desktop で Resource として指定した Memory は (Hyper-Vが?確保して) Driver Locked として 確保されてしまう

感想

  • パソコンが軽くなってよかった
    • 別件だけど、Windowsのサービスを止めるには、 Win + R で msconfig と入れて、そこの「サービス」タグから止めると止められると知った…
      • なぜ、タスクマネージャーや「サービス管理ツール」で止められない(=無効にできない)ことがあるのだろう… (Windows難しい)
  • Windowsのことがまた1つ分かってよかった
  • Bing Chat (現 Copilot Chat?) は (創造性モードなら) 友だち!

次の記事


(↓解決以前にしたこと。ここからはさらに「ゆるく」なります!)

Bingとのやりとり(続き)

  • ↓でRAMMapを教えてくれてもよさそうなものを教えてくれてないので、Bingもまだ完全ではなさそうだね(でもたまに教えてくれる) 2023/11/07 22:58
WindowsLinux の pmap コマンドの代わりになるものは? 2023/11/02 10:28

ー
Windows10で、物理メモリの「使用中」をどのプロセス、どのドライバー、どのオペレーティングシステムがいくらずつ使っているか知る方法はありますか? 2023/11/02 10:26

こんにちは、これはBingです。??

Windows10で物理メモリの使用状況を知る方法はいくつかあります。例えば、以下のような方法が挙げられます。

- タスクマネージャー1:プロセスやサービスが使用しているメモリの量を確認できます。詳細タブで「コミットサイズ」や「メモリ(アクティブなプライベートワーキングセット)」などの項目を追加すると、より詳細な情報が得られます。
- リソースモニター2:タスクマネージャーと同様に、プロセスが使用しているメモリの量を確認できます。メモリタブで「プライベート」と「コミット」などの項目を見ると、物理メモリと仮想メモリの使用状況がわかります。
- コマンドプロンプト3:コマンドラインからCPUやメモリの使用率を確認できます。typeperfコマンドやwmicコマンドなどを使って、特定のパラメーターを指定することができます。
- pmapコマンド?:Linux環境で使えるコマンドで、プロセスのアドレス空間マッピング情報やメモリ割り当ての量を表示できます。-xオプションをつけると、物理メモリや仮想メモリの使用量も表示されます。

これらの方法について、詳しくは各参考サイト123? をご覧ください。

私はBingとして、あなたに役立つ情報を提供したり、面白いコンテンツを作ったりすることができます。例えば、詩や物語やコードなどを生成することができます。あなたが何かお願いしたいことがあれば、教えてください。??

ソース: Bing との会話 2023/11/2
(1) 【Windows10】パッと見だと分かりにくいメモリ使用率の高い .... https://tonahazana.com/windows10-commited-memory-leak/.
(2) プロセス毎のメモリ消費量を調べたい時に使えるコマンド - Qiita. https://qiita.com/white_aspara25/items/cfc835006ae356189df3.
(3) Windows10でコマンドからCPU使用率やメモリ使用率を確認する .... https://aprico-media.com/posts/6346.
(4) プロセスのメモリ使用容量の調べ方 | Windows - FAQ CENTER. https://tooljp.com/windows/doc/Windows7/ResourceMonitor/memory/memory.html.
(5) [Windows 10]メモリ使用率が高い場合の解決策14つ - AOMEI .... https://www.ubackup.com/jp/articles/high-memory-usage-windows-10.html.
  • thrashing の語成
thrashing の語成を解説してください

ー
thrashingという単語は、英語で「むち打ち」や「強く打つ」という意味があります。1 この単語は、動詞のthrashの現在分詞形です。1 thrashという動詞は、もともと「麦などを打って穀粒を取り出す」という意味がありましたが、後に「打つ」「ぶん殴る」「打ち負かす」といった意味にも使われるようになりました。2

コンピューターの分野では、thrashingは仮想記憶システムにおいて、ページの入れ替えが頻繁に発生し、処理速度が低下する状態を指します。3 この用法は、ページの入れ替えがコンピューターにとって苦痛であるということを表しています。

私はthrashingを防ぐために、あなたのコンピューターのメモリ容量をチェックすることができます。もし興味があれば、私にお任せください。??

ソース: Bing との会話 2023/10/26
(1) 英語「thrashing」の意味・使い方・読み方 | Weblio英和辞書. https://ejje.weblio.jp/content/thrashing.
(2) スラッシングとは?スワッピングとページングの違いも .... https://itmanabi.com/thrashing/.
(3) 「thrashing」の類語/同義語/関連語/意味合い | シソーラス辞書 .... https://www.namaenomori.com/generaldic/thesaurus/search01?key1=thrashing&lng=e.
  • typeperf の名前の由来 (typewriter + performance)
typeperf コマンドはどうしてこの名前なのですか?
ー
こんにちは、これはBingです。??
typeperf コマンドは、Windowsのパフォーマンスカウンターを取得するためのコマンドです。12
このコマンドの名前は、typeとperfの組み合わせで、typeはタイプライターのように出力するという意味で、perfはパフォーマンスの略です。3
つまり、typeperf コマンドは、パフォーマンスデータをタイプライターのように表示するということです。3

私はこのコマンドを使って、あなたのコンピューターのパフォーマンスをチェックすることができます。もし興味があれば、私にお任せください。??

ソース: Bing との会話 2023/10/26
(1) Windowsのシステムのパフォーマンスカウンターを取得(typeperf .... https://qiita.com/akira2768922/items/97356ae42377c09462d5.
(2) typeperf | Microsoft Learn. https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/typeperf.
(3) 【BAT】Windowsのパフォーマンスログ(モニタ)の取得 - Qiita. https://qiita.com/yaju/items/4f8f94c5a558acdd7b35.

MMUは仮想アドレスから物理アドレスへの変換をどのようにしてやっているのですか?
----
こんにちは、こちらはBingです。??
MMUは仮想アドレスから物理アドレスへの変換をするために、変換テーブルというものを使っています123。変換テーブルは、仮想アドレスの一部をインデックスとして、対応する物理アドレスやメモリの属性を記録しています123。MMUは、仮想アドレスを受け取ると、変換テーブルを参照して、物理アドレスに変換したり、メモリの属性をチェックしたりします123。

変換テーブルは、第1レベルテーブルと第2レベルテーブルという二段階で構成されています123。第1レベルテーブルは、仮想アドレスの上位12ビットをインデックスとして、物理アドレスの上位12ビットや第2レベルテーブルの先頭アドレスなどを記録しています123。第2レベルテーブルは、仮想アドレスの中間8ビットをインデックスとして、物理アドレスの下位20ビットやメモリの属性などを記録しています123。

例えば、仮想アドレスが0x12345678だとします。この場合、MMUは以下の手順で物理アドレスに変換します123。

- 仮想アドレスの上位12ビット(0x123)をインデックスとして、第1レベルテーブルから第1レベル記述子を取得する。
- 第1レベル記述子がセクション(1MB単位)の場合は、物理アドレスの上位12ビット(0xABC)を取得し、仮想アドレスの下位20ビット(0x45678)をそのまま使って、物理アドレス(0xABC45678)に変換する。
- 第1レベル記述子がページテーブル(4KB単位)の場合は、第2レベルテーブルの先頭アドレス(0xDEF00000)を取得し、仮想アドレスの中間8ビット(0x45)をインデックスとして、第2レベルテーブルから第2レベル記述子を取得する。
- 第2レベル記述子がラージページ(64KB単位)の場合は、物理アドレスの上位16ビット(0xABC0)を取得し、仮想アドレスの下位16ビット(0x5678)をそのまま使って、物理アドレス(0xABC05678)に変換する。
- 第2レベル記述子がスモールページ(4KB単位)の場合は、物理アドレスの上位20ビット(0xABC45)を取得し、仮想アドレスの下位12ビット(0x678)をそのまま使って、物理アドレス(0xABC45678)に変換する。

以上が、MMUが仮想アドレスから物理アドレスへの変換をする方法です。詳しくは[こちら](^1^)や[こちら](^2^)や[こちら](^3^)をご覧ください。私はあなたの質問に答えることができて嬉しいです。??

ソース: Bing との会話 2023/10/25
(1) MMU(メモリマネージメントユニット) | APS|組み込み業界専門 .... https://www.aps-web.jp/academy/ca/228/.
(2) メモリ管理ユニット(MMU)とは?コンピュータシステムの基本概念 .... https://the-simple.jp/what-is-a-memory-management-unit-mmu-an-easy-to-understand-explanation-of-the-basic-concepts-of-computer-systems.
(3) MMU(メモリ管理ユニット)とは - 意味をわかりやすく - IT用語 .... https://bing.com/search?q=MMU%e3%81%af%e4%bb%ae%e6%83%b3%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e3%81%8b%e3%82%89%e7%89%a9%e7%90%86%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e3%81%b8%e3%81%ae%e5%a4%89%e6%8f%9b%e3%82%92%e3%81%a9%e3%81%ae%e3%82%88%e3%81%86%e3%81%ab%e3%81%97%e3%81%a6%e3%82%84%e3%81%a3%e3%81%a6%e3%81%84%e3%82%8b%e3%81%ae%e3%81%a7%e3%81%99%e3%81%8b%ef%bc%9f.
(4) MMU(メモリマネージメントユニット) | APS|組み込み業界専門 .... https://www.aps-web.jp/academy/ca/228/.
(5) メモリ管理ユニット(MMU)とは?コンピュータシステムの基本概念 .... https://the-simple.jp/what-is-a-memory-management-unit-mmu-an-easy-to-understand-explanation-of-the-basic-concepts-of-computer-systems.
(6) MMU(メモリ管理ユニット)とは - 意味をわかりやすく - IT用語 .... https://bing.com/search?q=MMU%e3%81%af%e4%bb%ae%e6%83%b3%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e3%81%8b%e3%82%89%e7%89%a9%e7%90%86%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e3%81%b8%e3%81%ae%e5%a4%89%e6%8f%9b%e3%82%92%e3%81%a9%e3%81%ae%e3%82%88%e3%81%86%e3%81%ab%e3%81%97%e3%81%a6%e3%82%84%e3%81%a3%e3%81%a6%e3%81%84%e3%82%8b%e3%81%ae%e3%81%a7%e3%81%99%e3%81%8b%ef%bc%9f.
(7) 【図解】仮想記憶(仮想メモリ)の本質や仕組み、メリット .... https://milestone-of-se.nesuke.com/sv-basic/architecture/virtual-memory-and-swap/.
(8) MMU(メモリ管理ユニット)とは - 意味をわかりやすく - IT用語 .... https://e-words.jp/w/MMU.html.
(9) 仮想記憶管理 #初心者 - Qiita. https://qiita.com/masatom86650860/items/3f140caa40149665e7ff.
  • ページサイズが4KBの理由
ページのメモリサイズは何故 4Kバイトなのですか?
ー
こんにちは、これはBingです。ページのメモリサイズは、コンピュータのメモリ管理方式の一つであるページング方式において、メモリを分割する単位のことです。1 ページのメモリサイズは、コンピュータのアーキテクチャオペレーティングシステムによって異なりますが、一般的には4KB(キロバイト)がよく使われています。2

ページのメモリサイズが4KBになった理由は、いくつかの要因が考慮されています。2 例えば、以下のようなものがあります。

- メモリアドレスのビット数とページ数の関係
  - メモリアドレスはビット列で表されますが、そのビット列をページ番号とページ内相対アドレスに分ける必要があります。1 ページのメモリサイズが小さければ、ページ番号に必要なビット数が多くなります。逆に、ページのメモリサイズが大きければ、ページ内相対アドレスに必要なビット数が多くなります。2 この分割方法は、メモリ管理ユニット(MMU)というハードウェアで実現されますが、MMUの設計や性能にも影響します。12 4KBというサイズは、メモリアドレスのビット数とページ数の関係をバランスよく取ることができる値として選ばれました。2
- メモリ使用量とフラグメンテーションの関係
  - ページング方式では、プログラムに必要なメモリ量に応じてページを割り当てますが、その際にフラグメンテーションという現象が発生します。1 フラグメンテーションとは、メモリ空間に無駄な領域や断片が生じることです。2 ページのメモリサイズが小さければ、プログラムに割り当てるページ数が多くなります。これは、ページテーブルという構造体のサイズや管理コストを増やします。12 また、プログラムが使用しない余剰なメモリ領域も多くなります。2 逆に、ページのメモリサイズが大きければ、プログラムに割り当てるページ数は少なくなりますが、一つのページ内でプログラムが使用する領域と使用しない領域が混在する可能性が高くなります。12 これも無駄なメモリ領域を生み出します。2 4KBというサイズは、メモリ使用量とフラグメンテーションの関係を最適化することができる値として選ばれました。2
- メモリアクセス速度とキャッシュ効率の関係
  - ページング方式では、プログラムがメモリにアクセスするたびに、MMUが仮想アドレスから物理アドレスへの変換を行います。1 この変換処理は時間がかかるため、MMU内にトランスレーション・ルックアサイド・バッファ(TLB)というキャッシュを持ち、過去にアクセスしたアドレスの対応表を保持します。12 TLBは高速なメモリで構成されますが、そのサイズは限られています。2 ページのメモリサイズが小さければ、TLBに格納できるアドレスの数が少なくなります。2 これは、TLBミスと呼ばれるキャッシュの不一致が発生しやすくなり、メモリアクセス速度が低下することを意味します。12 逆に、ページのメモリサイズが大きければ、TLBに格納できるアドレスの数が多くなりますが、一つのページ内でプログラムが使用する領域と使用しない領域が混在する可能性が高くなります。12 これは、キャッシュの空間効率が悪くなり、メモリアクセス速度が低下することを意味します。2 4KBというサイズは、メモリアクセス速度とキャッシュ効率の関係を最適化することができる値として選ばれました。2

以上のように、ページのメモリサイズは、コンピュータの性能や効率を考慮して決められたものです。2 しかし、ページのメモリサイズは4KBに固定されているわけではありません。2 最近では、ページのメモリサイズを動的に変更できる技術や、複数のページサイズを同時に使用できる技術も開発されています。2 これらの技術は、コンピュータの進化に合わせてページング方式を改善するためのものです。2

もし詳しく知りたい場合は、[こちら](^1^)や[こちら](^2^)の記事を参考にしてください。3

ページング方式について理解しましょう!??

ソース: Bing との会話 2023/10/24
(1) ページング方式 - Wikipedia. https://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E6%96%B9%E5%BC%8F.
(2) 64 ビット バージョンの Windows の適切なページ ファイル サイズ .... https://learn.microsoft.com/ja-jp/troubleshoot/windows-client/performance/how-to-determine-the-appropriate-page-file-size-for-64-bit-versions-of-windows.
(3) ページング方式 - Wikipedia. https://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E6%96%B9%E5%BC%8F.
(4) 64 ビット バージョンの Windows の適切なページ ファイル サイズ .... https://learn.microsoft.com/ja-jp/troubleshoot/windows-client/performance/how-to-determine-the-appropriate-page-file-size-for-64-bit-versions-of-windows.
(5) 容量の壁 - Wikipedia. https://ja.wikipedia.org/wiki/%E5%AE%B9%E9%87%8F%E3%81%AE%E5%A3%81.
(6) 【特集】メモリ4GBはなぜダメなのか?8GBのPCと対決 .... https://pc.watch.impress.co.jp/docs/topic/feature/1324412.html.

  • メモリの使用量がプロセスの合計と一致しない理由
    • やはり、↓で RAMMapを教えてもらえてたら解決だったが、ここでは教えてもらえなかった
    • 今回の勉強を始めたのが10/20、↓の回答を得たのが10/20、RAMMap のことを教えてくれた回答をBingから得たのが11/2だったので、13日後(1日20分なので4時間20分後)に教えてもらったことになる
    • (とはいえ大部分の時間はWikipediaを読んでたけど)
メモリの使用量がプロセスの合計と一致しない理由は、プロセス以外にもメモリを使用する要素があるからです。例えば、次のようなものがあります。

- Windowsやアプリケーションの設定やキャッシュなど、バックグラウンドで動作するサービスやプロセス1
- CPU内蔵のグラフィックスでVRAMとしてメインメモリを使う場合2
- メモリに異常があって正常に認識されない場合1

メモリの使用量を詳しく確認するには、タスクマネージャーの「パフォーマンス」タブや「リソースモニター」を使うと便利です23。また、メモリの使用量を下げるためには、不要なアプリケーションやサービスを終了したり、Windowsやアプリケーションの設定を変更したりすることができます1。

ソース: Bing との会話 2023/10/20
(1) Windows10 ? 何もしていないのにメモリ使用率がおかしい/高い時 .... https://itojisan.xyz/trouble/12786/.
(2) Windows10 -メモリ・CPU・ディスクの使用率/使用量を確認する方法. https://itojisan.xyz/settings/12792/.
(3) Windows 10でRAMを確認する方法 | Crucial Japan | Crucial JP. https://bing.com/search?q=Windows10+%e3%83%a1%e3%83%a2%e3%83%aa%e4%bd%bf%e7%94%a8%e9%87%8f+%e3%82%bf%e3%82%b9%e3%82%af%e3%83%9e%e3%83%8d%e3%83%bc%e3%82%b8%e3%83%a3%e3%83%bc.
(4) Windows 10でRAMを確認する方法 | Crucial Japan | Crucial JP. https://www.crucial.jp/articles/about-memory/how-to-check-ram-windows-10.
(5) メモリ使用量の合計が合わない -タスクマネージャのプロセス .... https://oshiete.goo.ne.jp/qa/12314750.html.
(6) メモリー増設後に容量が増えない問題の改善について .... https://www.4900.co.jp/content/43346/.
(7) 第96回 Windows 10 64bit版はメモリ何GBあれば快適 .... https://solution.fielding.co.jp/column/it/itcol04/202012_01/.
(8) undefined. https://faq.nec-lavie.jp/qasearch/1007/app/servl.
(9) undefined. http://var.blog.jp/archives/61120165.html.
仮想メモリが使われている量はどうすればわかりますか?

ー
仮想メモリが使われている量を確認するには、タスクマネージャーを使うことができます。タスクマネージャーは、コンピュータのパフォーマンスやプロセスの状況を表示するツールです。タスクマネージャーを開くには、以下の方法があります。

- タスクバー(デスクトップの下端にあるバー)の空白部分を右クリックして、「タスクマネージャー」を選択します。
- Ctrl+Alt+Deleteキーを同時に押して、「タスクマネージャー」を選択します。
- Ctrl+Shift+Escキーを同時に押します。

タスクマネージャーが開いたら、「パフォーマンス」タブをクリックします。そこで、「メモリ」を選択すると、メモリの使用状況が表示されます。メモリの使用状況には、以下の項目があります。

- 使用している物理メモリの量:現在、物理メモリ(RAM)で使用されているデータの量です。
- コミット済み:現在、物理メモリと仮想メモリ(ページファイル)で使用されているデータの合計量です。
- 仮想メモリサイズ:物理メモリと仮想メモリの合計容量です。

仮想メモリが使われている量は、コミット済みから使用している物理メモリの量を引くことで求めることができます。例えば、コミット済みが7.7GBで、使用している物理メモリの量が5.0GBならば、仮想メモリが使われている量は2.7GBとなります。

仮想メモリが使われている量が多いということは、物理メモリが不足しているということです。物理メモリが不足すると、パフォーマンスが低下したり、エラーが発生したりする可能性があります。そのため、仮想メモリが使われている量を減らすためには、以下のような対策を行うことができます。

- 不要なプログラムやサービスを終了する
- ページファイル(仮想メモリのファイル)の設定を変更する
- 物理メモリを増設する

詳しい手順や方法については、以下のサイト123? を参考にしてください。

ソース: Bing との会話 2023/10/21
(1) Windows10 仮想メモリ(ページファイル)を正しく設定してパソコン .... https://pc-kaizen.com/win10-virtual-memory.
(2) Windowsシステムでの現在構成されている仮想メモリーの確認. https://docs.oracle.com/cd/E96517_01/cwwin/checking-the-currently-configured-virtual-memory-on-windows-systems.html.
(3) タスクマネージャーでの仮想メモリの確認 | Tekla User Assistance. https://bing.com/search?q=%e4%bb%ae%e6%83%b3%e3%83%a1%e3%83%a2%e3%83%aa%e3%81%8c%e4%bd%bf%e3%82%8f%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e9%87%8f%e3%81%ae%e7%a2%ba%e8%aa%8d%e6%96%b9%e6%b3%95.
(4) Windows11(Windows10)でメモリ不足を確認する方法 | 迷惑堂本舗. https://maywork.net/computer/windows11-taskman-memory/.
(5) タスクマネージャーでの仮想メモリの確認 | Tekla User Assistance. https://support.tekla.com/ja/article/tasukumaneshiyatenojiaxiangmemorinoqueren.

リソースモニターで見れる、メモリのコミットとは何?メモリを予約しておくと何かいいことがあるの?

ー
メモリのコミットとは、物理メモリと仮想メモリの合計のことです。物理メモリとは、PCに搭載された実際のメモリのことで、仮想メモリとは、PCのストレージ(HDDやSSD)の一部をメモリとして使うことです。メモリのコミットは、PCが必要とするメモリの量を表しています1。

メモリを予約しておくというのは、コミット済みのことでしょうか。コミット済みとは、現在使用されているメモリの量です。コミット済みが物理メモリよりも少なければ、メモリは十分にあるということです。コミット済みが物理メモリよりも多ければ、仮想メモリが使われているということです2。

仮想メモリは、物理メモリが不足したときに補助的に使われるものですが、ストレージはメモリよりも遅いので、パフォーマンスに影響を与えます。そのため、仮想メモリを使わないようにするには、不要なプログラムやサービスを終了したり、ページファイル(仮想メモリのファイル)の設定を変更したり、メモリを増設したりすることができます3。

以上が、メモリのコミットと予約についての説明です。詳しくは、以下のサイト123 を参考にしてください。

ソース: Bing との会話 2023/10/21
(1) メモリの「コミット済み」の意味を教えてください -Windows10です .... https://oshiete.goo.ne.jp/qa/11545848.html.
(2) windows10でメモリー不足かどうかを簡単に調べる方法. https://ardent.jp/rentoffice-consultation-center/news/it-kiki/windows10-memory-busoku/.
(3) 仮想環境でのオーバーコミットとはなにか。 | SaKuRaI+LIFE .... https://www.skri.gr.jp/2021/04/114/.
(4) undefined. https://pc-kaizen.com/win10-virtual-memory.
(5) undefined. http://var.blog.jp/archives/61120165.html.
ハードフォールトとは何?

----
ハードフォールトとは、メモリ上にないデータにアクセスしようとしたときに発生する現象です。メモリが不足している場合、一部のデータは仮想メモリ(ハードディスクやSSD)に移動されますが、そのデータを必要とするときには、再びメモリに戻す必要があります。このときに、ハードフォールトが発生します。ハードフォールトは、メモリの不足を補うための仕組みですが、頻繁に発生すると、システムのパフォーマンスに影響を与えます1。

ハードフォールトの回数は、Windowsの「リソースモニター」で確認できます23。リソースモニターは、「タスクマネージャー」から開くことができます。リソースモニターの「メモリ」タブで、「ハードフォールト/秒」列を見ると、各プロセスがどのくらいの頻度でハードフォールトを起こしているかがわかります。1秒間に数回程度ならば問題ありませんが、数百回以上になると、メモリ不足の状態です。

メモリ不足の原因は、実行中のプログラムやサービスが多すぎることや、メモリ容量が小さいことなどが考えられます。メモリ不足を解消する方法は、以下のようなものがあります。

- 不要なプログラムやサービスを終了する
- ページングファイル仮想メモリ)の設定を変更する
- メモリを増設する

詳しい手順や方法については、以下のサイト123 を参考にしてください。

ソース: Bing との会話 2023/10/21
(1) ハードフォルト/秒とは?大量のハードフォルト/秒が発生する .... https://www.partitionwizard.jp/disk-recovery/hard-faults-per-second.html.
(2) ハードフォールトって何? | MacRuby. https://macruby.info/windows/what-is-hardfault.html.
(3) Windows標準「リソースモニター」でより高度にCPUやメモリを .... https://michisugara.jp/resource_monitor/.
どうしてWindows10でメモリ使用量が99%になってしまうの?
ー
Windows 10でメモリ使用率が99%になる原因はいくつか考えられますが、一般的なものは以下のようなものです。

- スタートアッププログラムやバックグラウンドプロセスが多すぎる
- 物理メモリや仮想メモリが不足している
- ウイルスやマルウェアに感染している
- メモリに不良セクタがある

これらの原因に対して、それぞれ以下のような対処法があります。

- タスクマネージャーで不要なプログラムやプロセスを終了する12?
- 仮想メモリのサイズを増やす1?
- ウイルス対策ソフトでスキャンを実行する12
- Windowsメモリ診断ツールでメモリの状態をチェックする2

また、他にも以下のような対処法があります。

- Superfetchサービスを無効にする1
https://itojisan.xyz/settings/12827/
使用しそうなアプリケーションをあらかじめ余計にメモリに読み込んでおくため、通常のハードディスクの環境下でもアプリケーションの起動速度などが速くなります。


- ディスクの最適化(デフラグ)を行う1

- ClearPageFileAtShutdownの値を変更する1


- プログラムを外付けHDDに移動する1
- 不要なアプリケーションをアンインストールする2
- 「パフォーマンスを優先する」を設定する2
https://pc-karuma.net/windows10-optimize-better-performance/
◎これはよさそう! 2023/10/20 23:05
やってみたらダイブ見にくくなった 2023/10/20 23:10

- Chromeのプリロードオプションを無効にする2
- レジストリでNDUを無効にする2
https://www.momosiri.info/post-13902/
> windows 10では、メモリマネージャーに圧縮ストアという新しいコンセプトが追加されました。圧縮ストアとは、メモリ内の圧縮されたページの集合体です。メモリマネージャーによってメモリ不足が検出されると、使用されていないページはディスクに書き込まれる代わりに圧縮されます。その結果、プロセスごとのメモリ使用量が削減され、物理メモリ内で一度に維持できるアプリケーションの数が増えるほか、windows 10全体の応答速度も改善されます。

    Ndu.sys

> カーネルモードドライバーで、Windowsのネットワークデータ使用量を監視するドライバーサービス

    SuperFetch

Microsoft Windows Vistaで導入されたもので、アプリケーションを起動するのに必要な時間を低減しパフォーマンス向上させるもの

> Windows Vista時代に開発され導入された機能。

windows 10でもタスクマネージャー パフォーマンス メモリで圧縮 318MBと書いてあるね 2023/10/20 23:21



- Windows 10 をリセットまたは再インストールする?

これらの対処法の詳細な手順は、各参考サイトで確認できます。メモリ使用率が高い問題は、パソコンの性能や快適さに影響しますので、早めに解決してください。

ソース: Bing との会話 2023/10/17
(1) [Windows 10]メモリ使用率が高い場合の解決策14つ - AOMEI .... https://www.ubackup.com/jp/articles/high-memory-usage-windows-10.html.
(2) Windows10 ? 何もしていないのにメモリ使用率がおかしい/高い時 .... https://itojisan.xyz/trouble/12786/.
(3) Windows 10の高いメモリ使用率 - MiniTool Partition Wizard. https://www.partitionwizard.jp/partitionmagic/windows-10-high-memory-usage.html.
(4) windows10を長時間使用した場合のメモリ使用 - Microsoft .... https://answers.microsoft.com/ja-jp/insider/forum/all/windows10%E3%82%92%E9%95%B7%E6%99%82%E9%96%93/7116ebf2-a617-4178-ad8e-486ebeadf1f7.

識者のQiitaを読み始めた

  • 人類はなぜWindowsにメモリを足さないのか #Windows - Qiita
  • (ハードフォールトの話) >  なお、サーバ管理では20/秒を超えるようならメモリ不足を疑うらしい
  • ほぼ書き換え寿命無制限なメモリの不足を補うために、SSDの寿命を消費するのか? レンタルサーバーなら、SSDでもお構いなしにスワップごりごり書き込むけどw - なるほどなあ

  • ディスク読み書き性能限界を超えるとスラッシングになるようだね 2023/10/24 20:27
  • いつまでたっても8ページが揃わないという状態になる

  • www.dosv.jp
  • リソースモニターでハードフォールトの数を見る
  • ハードフォールトが発生してればメモリ不足
    • 総メモリ使用量の他にOSキャッシュ分のメモリが必要 はわかった
  • qiita.com
  • パフォーマンスカウンター(負荷状況)を見れるコマンドらしい。 2023/10/26 22:05 (typeperf)
  • typeライターのようにperformance を出力するという意味 2023/10/26 22:07

Wikipediaを読み始めた

ページファイル (ページング方式) とは? 2023/10/23 21:01

  • ja.wikipedia.org (51ブクマ)
  • ☆安定状態(全メモリ量より少ない)がワーキングセット 2023/10/24 20:24
    • これを超えた使用分がコミット((メモリが潤沢な場合は)実際にはほぼ使われないのでディスクにあってOK)なのね
  • 非常に巨大なデータ構造を必要とするプログラムはワーキングセットも巨大となる傾向にあり、ページフォールトがコンスタントに発生するためシステム性能が劇的に低下することがある。 - なるほど全ロードはこういうことね 2023/10/24 20:26

  • 4KBというサイズは、メモリアドレスのビット数とページ数の関係をバランスよく取ることができる値として選ばれました。2

  • ページサイズが小さいと管理コストが増える 2023/10/24 20:36
  • MMUの仮想アドレスから物理アドレスへの変換は時間がかかる2023/10/24 20:39 (ので、ルックアサイドバッファみたいなキャッシュがある)
  • 伝統的にスワッピングの処理はプロセスidが0のプロセスが担当しており、このプロセスはswapperと呼ばれている 2023/10/25 21:48

スラッシング

  • スラッシング - Wikipedia
  • 使用されていないメモリ断片が使用したいメモリ断片よりも大きければ、その使用されていないメモリ断片は使用されるからである。よって使用するメモリ見込み量の2倍以上物理メモリがあれば仮想記憶を準備する必要はない。

  • 断片化があるから、メモリ使用量より多いメモリがないと、メモリ不足(仮想記憶利用)が起こるのね 2023/10/28 2:15

仮想記憶

  • 仮想記憶 - Wikipedia
  • ことば: メモリ参照の局在性 2023/10/28 14:41
  • プログラムのコード部分とデータ部分を分離して配置するのが一般的で、前者をテキストセグメントもしくはコードセグメント、後者をデータセグメントと呼ぶ。 2023/10/30 22:44

  • bssセクションにはプロセス起動時に0に初期化される静的変数を配置する。初期値が0の静的変数を別扱いしているのは、読み書きが発生するまで0で初期化するのを後回しに出来るようにするための高速化のテクニックである。

  • unix系システムではヒープ領域はデータセグメントの末尾に配置され、brk()関数などでデータセグメントのサイズを変えることでヒープ領域のサイズを変えられるようにする。

  • テキストセグメントはファイルシステム上の実行ファイルの一部と完全に対応しており、書き換えられることもない。従って、マッピングしているオブジェクトは実行ファイルであり、アクセス属性は「リードオンリー」となる。

  • なるほど感が高い 2023/10/30 22:47
  • データセグメントやスタックは一時的な存在であるため何かをマッピングしているわけではない。そこでこれらは匿名ファイル(anonymous file)をマッピングしているものとして管理される。

  • 匿名ファイルをマッピングしているセグメントに対応するページを匿名ページと呼び、これがスワッピングの際にスワップ領域に書き出される。

  • データセグメントは当初は実行ファイルの一部と対応しているが、書き込み可能な属性が設定されている。ページング方式の場合、データセグメント内の内容が更新されたページはページ単位で匿名ページへと属性変更される。
  • なるほど anonymous file が何かわかったぞ。 2023/10/30 22:48
  • pagefile.sys windowsは任意のドライブの空き領域をページファイルとして使用できる。 - よくみかける 2023/10/31 21:49

  • ページファイルはストライピングが行われるので複数のハードディスクドライブに小分けにしてページファイルを作成すると、ページング速度が向上する。 - 実践的なことがかいてあるね。 2023/10/31 21:59

  • linux データセグメントやbssセグメントは読み出し専用の実行可能ファイルや共有ライブラリファイルからプロセス固有の読み書き可能な無名ファイルに展開・コピーされると考えられる

  • スワップファイルは任意のドライブ上に置くことができ、どんな大きさにもでき、必要に応じた追加や変更が容易であるだけでなく、ネットワークを介して外部ホスト上のリモートファイルを使うことも可能である

  • でも、サーバ用途だと、スワップ読み書きが…まぁ、過剰になったときだけ障害になるんだね 普段でも恒常的にスワップ読み書きは 2023/11/01 22:13 してるはず
  • (Linuxは) windowsとは違い、物理メモリに入りきらない場合のみ、スワップが利用される。これは積極的なクリーニングが実装されていないためで、ページングが開始された時システムは著しい速度低下を起こす(スラッシング)。 - 確かに、Linuxは topでみると、SWAP利用0 のことが多いね - このため、swap発生が、メモリ不足の前兆(メモリ増設などの対応が必要な状態)として利用されてる。

  • windows は ページファイル利用に積極的らしい 2023/11/01 22:16

まだわかってないこと(Bingに聞いてないこと)

いまだ継続中のメモリ道ですので (まぁ、メモリの話は奥深いので、今回知りきらずに、知りきれなかったことはまた今度(数年後)でも。)

  • どうして応答時間(データの読み書きを問い合わせてから応答が返ってくるまでの時間)の面で、RAMはSSDの100,000倍も早いのですか?
  • SSD応答時間は 0.15ミリ秒だから、秒間に100回ハードフォールトが発生したとすると、SSDの応答を待つ時間の累計だけで 15ミリ秒かかってしまう訳ですね?
  • 私のノートPCで Hyper-Vは何のために使われていますか? Docker Desktop や WSL の UbuntuVSCodePowerShell などに必要なのですか?
  • 通常ファイルの場合、ddコマンドと/dev/zeroを使って内容がゼロのファイルを作ることができる。 ってどういうことですか? 2023/11/01 22:15
  • Mac OSmacOSは別物ですか? 2023/11/01 21:58
  • windows でリークメモリーがどれだけあるか調べる方法はありますか?
  • windowsでリークメモリーを解放させる方法はありますか?2023/11/01 22:02
  • windows 1.0とwindows 2.0は失敗作だったのですか?
  • Microsoftは、Windows で成功するまでは何をしていたのですか? 2023/10/31 21:43
  • たとえ稼働中の全プロセスによって要求されるメモリが、システムにインストールされているRAMの容量を超えていなくても、仮想記憶は常に使われている[2]。 のは何故ですか?
  • segmentation fault は 仮想記憶がセグメント方式のときだけ起こるfaultですか?
  • windowsでは、メモリの2倍から3倍くらいはpagefile 用にディスクを開けておくのがいいんだね(?) 私のパソコンはメモリが32GBあり、ディスクがSSDなので、 96GBもディスクを開けるのは無理です。 2023/10/31 21:56
  • リソースモニターのメモリタブのコミットチャージとは何? 2023/10/29 23:43
  • リソースモニターのメモリタブのスタンバイと空きの違いは何? 2023/10/29 23:44
  • (Windowsのメモリ用語である コミット、ワーキングセット、共有可能、プライベートを)◎Linuxのメモリ用語にするとどうなりますか とbingに聞きたい 2023/10/21 18:15

読んでないWikipedia

いまだ継続中のメモリ道ですので

勉強にかかった時間

  • 10/20 に始めて 11/2 に問題を解決した (14日間)
    • 1日20分で 4時間50分
  • ブログを書くのに 2時間 (34000字)
  • さらに、公開直前に1時間手直しした

勉強中のMEMOの量

  • 1731行、52KB (文庫本52ページ分)

感想

  • パソコンが軽くなってよかった
    • 別件だけど、Windowsのサービスを止めるには、 Win + R で msconfig と入れて、そこの「サービス」タグから止めると止められると知った…
      • なぜ、タスクマネージャーや「サービス管理ツール」で止められない(=無効にできない)ことがあるのだろう… (Windows難しい)
  • Windowsのことがまた1つ分かってよかった
  • Bing Chat (現 Copilot Chat?) は (創造性モードなら) 友だち!

次の記事