ZFSは、従来のLinuxの「キャッシュ」メモリ使用では考慮されていないARC(適応置換キャッシュ)を使用します。 ZFS ARCの現在のサイズとサイズの境界をどのように決定できますか。また、これらは、たとえばfree
によって報告された空きメモリまたはキャッシュメモリの量とどのように関連していますか?
ZFSコードは、procfsを通じてさまざまな統計情報を報告します。 ARCのサイズを確認するには、/proc/spl/kstat/zfs/arcstats
(慣習的に/ procにマウントされたprocfsを想定)、特にc
、c_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)です。