mmap

mmap()はすべてのページエラーの後にページテーブルを更新しますか?
mmap

mmap()はすべてのページエラーの後にページテーブルを更新しますか?

mmap()の研究では、mmapはページエラーのために仮想メモリアドレスに達した場合にのみ要求ページングを使用してデータをカーネルページキャッシュにコピーすることを知っています。 ページキャッシュより大きいファイルを読み取る場合は、ページキャッシュの一部の古いページをリサイクルのために置き換える必要があります。だから私の質問は、ページテーブルが更新され、その仮想メモリアドレスがキャッシュ内の古い古いページ(新しいデータが含まれている)アドレスにマッピングされるのですか?どうやってこれが起こったのですか?これはmmap()システムコールの一部ですか? ...

Admin

POSIX 共有メモリオブジェクトにはどのような一貫性が保証されていますか?
mmap

POSIX 共有メモリオブジェクトにはどのような一貫性が保証されていますか?

Linuxでは、POSIX共有メモリオブジェクト[1]はtmpfsviaを使用します/dev/shm。その結果、Aはtmpfs「ページキャッシュに完全に存在する」とします[2](スワップがまだアクティブになっていないと仮定します)。mmapPOSIX SHMオブジェクト(アドレス空間にプログラムされている)を使用するときに一貫性/引き裂き防止の保証が何であるか疑問に思います。 例:両方のプロセスAとBがPOSIX SHMオブジェクトを共有し、両方のプロセスがmmap自分のアドレス空間に書き込むとします。ページが4kBで、オブジェクトがページ整列されていると仮...

Admin

Linux 4.xで4kB RSSを実装する方法は?
mmap

Linux 4.xで4kB RSSを実装する方法は?

私は90年代後半からオープンソースIRCボットの開発者/維持管理者として活動してきました。目標は、常に小さなメモリ空間内でできるだけ多様で便利にすることです。 2000年代には、便利なプログラムを4kB RSSに圧縮した概念証明コードも書いていましたが、これは2.4カーネルで実装するのは難しくありませんでした。私はinitとAgettyを使ってこれを達成しました。つまり、単一の4kBメモリページ内に常駐して実行するようにしました。 ある日、ボットにメモリ使用量を報告するよう依頼したとき、ボットは次のように答えました。 [Mar 27 2018] <bo...

Admin

プロセスメモリレイアウト - ヒープ、データ、mmap領域の違い
mmap

プロセスメモリレイアウト - ヒープ、データ、mmap領域の違い

私はオンラインでLinuxプロセスのメモリレイアウトについて矛盾するか不明な説明をたくさん見ました。通常よく使われる写真良い: 別の共通点がある説明する言うことができる: データセグメントには、事前定義された値があり、変更できるグローバルまたは静的変数のみが含まれます。ヒープには、通常、データセグメントの終わりから始まるヒープセクションと呼ばれるメモリ部分に格納されている動的に割り当てられたデータが含まれます。 そして返品: 通常、ヒープはCランタイムによって生成および管理される特定のメモリ領域ですmalloc(システムコールを使用して増減brk し...

Admin

x86 Linuxで監視レジスタを読み取るには?
mmap

x86 Linuxで監視レジスタを読み取るには?

Intel Lynx PointシステムからIntel iTCO監視レジスタを読みたいです。ここでウォッチャーを見つけました。 [ 5598.341020] iTCO_wdt iTCO_wdt.1.auto: Found a Lynx Point TCO device (Version=2, TCOBASE=0x1860) ISAブリッジLPCコントローラに接続します。 00:1f.0 ISA bridge: Intel Corporation H87 Express LPC Controller (rev 05) Subsystem: ASUST...

Admin

mmapを使用して他のファイルのメモリサブセットを参照するファイルを作成できますか?
mmap

mmapを使用して他のファイルのメモリサブセットを参照するファイルを作成できますか?

私は2つのファイルを生成するプログラムを書くことに興味があります。 2番目のファイルは最初のファイルの「表示」になり、変更すると最初のファイルも変更されます。 mmapを使ってこれを行うことはできますか? mmapを使用すると、RAMに共有メモリを持つことができますが、不揮発性メモリ(ハードドライブとも呼ばれます)に共有メモリが必要であることがわかります。ファイルが非常に大きい可能性があると仮定するため、最初のファイルをコピーしたりRAMに完全にロードしたりすることはできません(GB)。 2番目のファイルに最初のファイルメモリのサブセットを表示させる方法を見...

Admin

指定されたオフセットで特定のバイトシーケンスに対して1Tブロックデバイスを検索します。
mmap

指定されたオフセットで特定のバイトシーケンスに対して1Tブロックデバイスを検索します。

事故後にデータ復旧を実行するためにddを使用しています。長期的には、いくつかの修復ツールを使用してファイルシステムを回復する必要があります。 その間、システムに必要な画像があります。見つかったら、その画像を使用してデバイスの画像を作成できます。 バイトシーケンスはです"\x21\x35\x2c\x66\xe4\xe8\x48\xe0\xf9\x4a\x92\x\x7f\x3f\xb7\x6e"。私はPythonでmmapを試してみましたが、mmap.find()試すたびにエラーが発生しているようで、ブロックデバイスを開くことができませんでした。 grepでd...

Admin

mmap I/O レイテンシを測定する方法は?
mmap

mmap I/O レイテンシを測定する方法は?

ディスクI / Oが大量に進行している間に速度が遅くなったりブロックされたりするように見えるアプリケーションがあるため、アプリケーションのI / O操作がブロックされていると思われます。また何が間違っているのか想像できませんが、確認したかったです。問題は、アプリケーションが主にI / Oにmmapファイルを使用するため、mmapメモリからI / Oをブロックすることがページエラーであることを知りませんstrace。しかし、ページエラーのためにスレッドの実行が一時停止された時間を測定する方法はありますか? ...

Admin

ゲストRAMセグメントをPPC QEMUのホストファイルにマッピングする
mmap

ゲストRAMセグメントをPPC QEMUのホストファイルにマッピングする

私の風は概念的に簡単です。ゲストに必要なファイルがホストにあります(実際には/sys/bus/pci/device/....のPCIeリソースファイルですが、それほど関係ありません)。メモリはどこかで使用できます。で両側の変更が他方を反映するようにします。私の目標は、実際にホスト上の制限されたPCIeアドレス空間セグメントをマッピングすることであるため、ゲストRAM全体を効率的にマッピングすることはできません。以下のリストは、私が追加しようとした基本的なコマンドです。目標は、マップされたメモリID "bar0.ram"を取得することです。どこかにゲストの記憶...

Admin

実際の問題
mmap

実際の問題

取締役のお知らせ 私はこの質問(少し修正済み)をStackOverflowの質問(クロスポストへの強力な反対のために削除しました)から移動しましたが、まだ回答が提供されておらず、ここでより適切かもしれません。 StackOverflowの質問には2つのコメント(答えはありません)があります。以下は、これらのコメントの簡単な要約です(これを理解するために実際の質問を読む必要があるかもしれません)。 ファイルシステムアプローチをlibhugetlbfs使用すると、さまざまなタスクを実行できます。 それは私にあまり説得力がありません。私がアプリケーションプログ...

Admin

ブロックデバイスに書き込むときの部分的なfsync
mmap

ブロックデバイスに書き込むときの部分的なfsync

私はブロックデバイスの上に直接データストアを作成しました。耐久性を確保するためにディスクに同期したいと思います。しかし問題はこんな感じです。一部だけ同期したいです。 私はクラッシュ回復のためにログを保持し、ディスクの実際の場所に適用する前に、将来の変更をログに記録します。その後、残りのディスクに実際の変更が適用される前に、ログの変更がディスクに書き込まれていることを確認したいと思います(ログを確認するまでfsyncに興味はありません)。 ブロックデバイス全体を簡単に同期できますが、そうすることで緊急ではない多くの項目を記録する必要があります。 私は2つのオプ...

Admin

どちらのプロセスがファイル(メモリマッピングファイルまたは/ dev / shmファイル)を使用せずに同じ共有メモリを使用できますか?
mmap

どちらのプロセスがファイル(メモリマッピングファイルまたは/ dev / shmファイル)を使用せずに同じ共有メモリを使用できますか?

現在、2つの異なるプロセスに同じ共有メモリを提供する方法を知る唯一の方法は、メモリマップファイルを介することです。つまり、どちらのプロセスも同じメモリマップされたファイルを開き、そのファイルからの書き込み/読み込みであるためです。 OSがディスクとメモリを交換する必要があるため、これには不利益/欠点があります。 これが愚かな質問なら事前にお詫び申し上げます。しかし、ファイルによってサポートされておらず、プロセス間に純粋に共有メモリがありますか?それでは、プロセスはメモリマッピングファイルまたは/dev/shmファイルを使用せずにどのようにそれを取得できますか...

Admin

mmap_sharedをサポートするLinuxディストリビューションは何ですか?
mmap

mmap_sharedをサポートするLinuxディストリビューションは何ですか?

mmap_shared以下で呼び出される関数のマニュアルページが見つかりましたdie.net。https://linux.die.net/man/3/mmap_shared の便利なラッパー機能のように見えますが、mmapUbuntu 18.04では利用できないようですが、他の場所ではこれに関する多くの情報が見つかりません。どのLinuxディストリビューションがサポートしていますか? ...

Admin

透明なhugepageを持つバッファに割り当てられたメモリは使用できません(プロセス終了)。
mmap

透明なhugepageを持つバッファに割り当てられたメモリは使用できません(プロセス終了)。

私は1TBのRAMを持っており、そのうち900GBをプロセス内で割り当てて使用する必要があります(私はハードウェアに対するフルアクセス権を持ち、ベアメタルで作業しています)。 (個人、匿名)を使用して900 GBのメモリを割り当て、mmap()それを使用してmadvise()Fedora 37で透明なhugepageを設定しました。これにより、この900 GBはデータで直線的に入力されます。 これは実際のプログラムではありませんが、メモリアクセスの種類に関するアイデアを提供します。 #include <stdlib.h> #include &lt...

Admin

TBサイズmmapを開く方法
mmap

TBサイズmmapを開く方法

巨大なメモリマップを開く必要があります。ファイルは1TBです。 しかし、私はerrno:を受け取りましたENOMEM 12 Cannot allocate memory。何が私を邪魔しているのか分かりません。要求された値RLIMIT_ASの結果:18446744073709551615。十分です。私のシステムも64ビットなので、仮想メモリが小さすぎるわけではありません。ulimit -vはいulimited np.lib.format.open_memmap物理的に可能なようにデータをPythonにしました。 C言語で読もうとします。はい、Pythonを読む...

Admin