web-dev-qa-db-ja.com

ZFSでのARCの現在のサイズを確認するにはどうすればよいですか。また、ARCは空きメモリまたはキャッシュメモリとどのように関連していますか。

ZFSは、従来のLinuxの「キャッシュ」メモリ使用では考慮されていないARC(適応置換キャッシュ)を使用します。 ZFS ARCの現在のサイズとサイズの境界をどのように決定できますか。また、これらは、たとえばfreeによって報告された空きメモリまたはキャッシュメモリの量とどのように関連していますか?

20
a CVn

ZFSコードは、procfsを通じてさまざまな統計情報を報告します。 ARCのサイズを確認するには、/proc/spl/kstat/zfs/arcstats(慣習的に/ procにマウントされたprocfsを想定)、特にcc_maxおよびsizeの値を確認します。 (-- Oracleコミュニティフォーラムのこの投稿も参照 。代替 ​​インターネットアーカイブのコピー Oracleサイトが利用できなくなった場合。)

  • cは、ARCのターゲットサイズです。
  • c_maxは、ARCの最大サイズです(バイト単位)
  • sizeは、ARCの現在のサイズです(バイト単位)

ARCの最大サイズは、zfs_arc_max=Nパラメータをzfsモジュールに(modprobeを介して)渡すことで調整できます。ここで、NはARCの最大サイズ(バイト単位)、または新しい最大サイズをバイト単位で/sys/module/zfs/parameters/zfs_arc_maxに書き込むことによって、その場で。

Linux上のZFS がどのように実装されているかにより、ARCメモリ動作はキャッシュメモリと同様です(たとえば、システムがメモリ不足になった場合に削除されます)- aggregatedカーネルによって通常のメモリ割り当てとして。システムの空きメモリが現在のシステムワークロードで予想されるよりもはるかに少ないように見えますが、これは混乱を招く可能性がありますが、正常です。

メガバイト単位のARCサイズを取得するには、awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstatsなどを使用できます。 (1,048,576はメガバイトまでのバイト数です。)

たとえば、私のシステム(ほとんどZFSを使用している)は、

$ free -m
             total       used       free     shared    buffers     cached
Mem:         32194      17948      14245          0        158        982
-/+ buffers/cache:      16808      15386
Swap:        49152          0      49152
$ awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats
size 8138.73
$

つまり、現在常駐しているプロセスによるactualのメモリ使用量は約8,669 MB(8,139 MB減った16,808 MB)です。

23
a CVn