bugfix> c > 投稿

それらは常に4kBの時間ですか? すべての Sizes を合計するとどれくらい大きいスマップで?

回答 2 件
  • メモリのページサイズがあります。または4096または8192バイト(または他の何かでさえも不明です)。通常は sysconf(_SC_PAGESIZE) で決定できます  または、事前定義された PAGE_SIZE を使用します  利用可能な場合はマクロ。

    すべての Size の合計の上限  entriesは、仮想アドレス空間全体のサイズ、つまり 2^32 です。  32ビットシステムおよび 2^64 のバイト  64ビットの場合はバイト。 もちろん、少なくともカーネルはアドレス空間の一部を占有し、それが /proc/<pid>/smaps で報告されないため、実際のケースは少なくともこの制限を常に下回っています。 。

  • smaps プロセスで使用されるメモリページが含まれます。proc マニュアルページ:

    man 5 proc

    したがって、Rssブロックの合計サイズは、ホストのRAMより大きくありません。 仮想メモリの合計サイズは、CPUデータバスサイズによって制限されます。ただし、64ビットCPUでは、64行すべてが使用されるわけではないため、アドレス可能なスペースの実際のサイズは、cpuinfo

    cat /proc/cpuinfo | grep 'address'
    
    

    次のようなものを出力します

    address sizes   : 39 bits physical, 48 bits virtual
    
    

    ここで、「physical」はサポートされる物理RAMサイズであり、「virtual」は仮想メモリのアドレス指定に使用される最大ビットです。したがって、2 ^ 48はCPUの最大アドレス可能スペースであり、プロセスの仮想メモリの最大合計です。

    サイズは、RAMページサイズの時間です。

    RAMページサイズは次の方法で確認できます。

    getconf PAGESIZE
    
    

    通常は4096です。

あなたの答え