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


17

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

回答:


20

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メモリ実装されている振る舞い(システムがメモリ圧力の下に来る場合例えば、それは追い出される)キャッシュメモリなどをしているが、集計通常のメモリ割り当てとカーネルによって。これは、システムの空きメモリが現在のシステムワークロードを想定した場合よりもはるかに少ないように見えるが、正常であるため、混乱を招く可能性があります。

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
$

つまり、現在常駐しているプロセスによる実際のメモリ使用量は約8,669 MB(16,808 MBから8,139 MB減少)になります。


13

MichaelKjörlingの回答に基づいて、arc_summary.pyを使用することもできます

ここで、ARCがデスクトップのメモリの半分をどのように使用しているかを確認できます。

root @ host:〜#free -g
             キャッシュされた使用済み共有バッファの合計
メンバー:62 56 6 1 1 5
-/ +バッファ/キャッシュ:49 13
スワップ:7 0 7

root @ host:〜#arc_summary.py
-------------------------------------------------- ----------------------
ZFSサブシステムレポート2017年2月24日金曜日19:44:20
ARCサマリー:(健康)
        メモリスロットルカウント:0

ARCその他:
        削除済み:1.33m
        ミューテックスミス:99
        Evict Skips:99

ARCサイズ:98.13%30.80 GiB
        ターゲットサイズ:(適応)100.00%31.39 GiB
        最小サイズ(ハードリミット):0.10%32.00 MiB
        最大サイズ(High Water):1004:1 31.39 GiB

ARCサイズの内訳:
        最近使用したキャッシュサイズ:84.25%26.45 GiB
        よく使用されるキャッシュサイズ:15.75%4.95 GiB

ARCハッシュの内訳:
        エレメント最大:1.11m
        現在の要素:53.48%592.56k
        衝突:763.42k
        チェーン最大:4
        チェーン:19.62k

ARCの合計アクセス:36.34m
        キャッシュヒット率:87.02%31.62m
        キャッシュミス率:12.98%4.72m
        実際のヒット率:84.78%30.81m

        データ需要効率:93.49%24.22m
        データのプリフェッチ効率:2.57%819.12k

        キャッシュリストによるキャッシュヒット:
          匿名使用:2.27%716.60k
          最近使用したもの:17.26%5.46m
          最もよく使用される:80.17%25.35m
          最近使用したゴースト:0.19%60.25k
          最も頻繁に使用されるゴースト:0.11%35.37k

        データタイプ別のキャッシュヒット:
          需要データ:71.60%22.64m
          データのプリフェッチ:0.07%21.04k
          需要メタデータ:25.82%8.16m
          プリフェッチメタデータ:2.51%794.39k

        データタイプ別のキャッシュミス:
          需要データ:33.44%1.58m
          データのプリフェッチ:16.92%798.09k
          需要メタデータ:48.90%2.31m
          プリフェッチメタデータ:0.75%35.27k


DMUプリフェッチ効率:173.06m
        ヒット率:86.14%149.07m
        ミス率:13.86%23.99m



ZFS調整可能:
        metaslab_debug_load 0
        zfs_arc_min_prefetch_lifespan 0
        zfetch_max_streams 8
        zfs_nopwrite_enabled 1
        zfetch_min_sec_reap 2
        zfs_dbgmsg_enable 0
        zfs_dirty_data_max_max_percent 25
        zfs_arc_p_aggressive_disable 1
        spa_load_verify_data 1
        zfs_zevent_cols 80
        zfs_dirty_data_max_percent 10
        zfs_sync_pass_dont_compress 5
        l2arc_write_max 8388608
        zfs_vdev_scrub_max_active 2
        zfs_vdev_sync_write_min_active 10
        zvol_prefetch_bytes 131072
        metaslab_aliquot 524288
        zfs_no_scrub_prefetch 0
        zfs_arc_shrink_shift 0
        zfetch_block_cap 256
        zfs_txg_history 0
        zfs_delay_scale 500000
        zfs_vdev_async_write_active_min_dirty_percent 30
        metaslab_debug_unload 0
        zfs_read_history 0
        zvol_max_discard_blocks 16384
        zfs_recover 0
        l2arc_headroom 2
        zfs_deadman_synctime_ms 1000000
        zfs_scan_idle 50
        zfs_free_min_time_ms 1000
        zfs_dirty_data_max 6741298790
        zfs_vdev_async_read_min_active 1
        zfs_mg_noalloc_threshold 0
        zfs_dedup_prefetch 0
        zfs_vdev_max_active 1000
        l2arc_write_boost 8388608
        zfs_resilver_min_time_ms 3000
        zfs_vdev_async_write_max_active 10
        zil_slog_limit 1048576
        zfs_prefetch_disable 0
        zfs_resilver_delay 2
        metaslab_lba_weighting_enabled 1
        zfs_mg_fragmentation_threshold 85
        l2arc_feed_again 1
        zfs_zevent_console 0
        zfs_immediate_write_sz 32768
        zfs_dbgmsg_maxsize 4194304
        zfs_free_leak_on_eio 0
        zfs_deadman_enabled 1
        metaslab_bias_enabled 1
        zfs_arc_p_dampener_disable 1
        zfs_object_mutex_size 64
        zfs_metaslab_fragmentation_threshold 70
        zfs_no_scrub_io 0
        metaslabs_per_vdev 200
        zfs_dbuf_state_index 0
        zfs_vdev_sync_read_min_active 10
        metaslab_fragmentation_factor_enabled 1
        zvol_inhibit_dev 0
        zfs_vdev_async_write_active_max_dirty_percent 60
        zfs_vdev_cache_size 0
        zfs_vdev_mirror_switch_us 10000
        zfs_dirty_data_sync 67108864
        spa_config_path /etc/zfs/zpool.cache
        zfs_dirty_data_max_max 16853246976
        zfs_arc_lotsfree_percent 10
        zfs_zevent_len_max 128
        zfs_scan_min_time_ms 1000
        zfs_arc_sys_free 0
        zfs_arc_meta_strategy 1
        zfs_vdev_cache_bshift 16
        zfs_arc_meta_adjust_restarts 4096
        zfs_max_recordsize 1048576
        zfs_vdev_scrub_min_active 1
        zfs_vdev_read_gap_limit 32768
        zfs_arc_meta_limit 0
        zfs_vdev_sync_write_max_active 10
        l2arc_norw 0
        zfs_arc_meta_prune 10000
        metaslab_preload_enabled 1
        l2arc_nocompress 0
        zvol_major 230
        zfs_vdev_aggregation_limit 131072
        zfs_flags 0
        spa_asize_inflation 24
        zfs_admin_snapshot 0
        l2arc_feed_secs 1
        zio_taskq_batch_pct 75
        zfs_sync_pass_deferred_free 2
        zfs_disable_dup_eviction 0
        zfs_arc_grow_retry 0
        zfs_read_history_hits 0
        zfs_vdev_async_write_min_active 1
        zfs_vdev_async_read_max_active 3
        zfs_scrub_delay 4
        zfs_delay_min_dirty_percent 60
        zfs_free_max_blocks 100000
        zfs_vdev_cache_max 16384
        zio_delay_max 30000
        zfs_top_maxinflight 32
        ignore_hole_birth 1
        spa_slop_shift 5
        zfs_vdev_write_gap_limit 4096
        spa_load_verify_metadata 1
        spa_load_verify_maxinflight 10000
        l2arc_noprefetch 1
        zfs_vdev_scheduler noop
        zfs_expire_snapshot 300
        zfs_sync_pass_rewrite 2
        zil_replay_disable 0
        zfs_nocacheflush 0
        zfs_arc_max 0
        zfs_arc_min 0
        zfs_read_chunk_size 1048576
        zfs_txg_timeout 5
        zfs_pd_bytes_max 52428800
        l2arc_headroom_boost 200
        zfs_send_corrupt_data 0
        l2arc_feed_min_ms 200
        zfs_arc_meta_min 0
        zfs_arc_average_blocksize 8192
        zfetch_array_rd_sz 1048576
        zfs_autoimport_disable 1
        zfs_arc_p_min_shift 0
        zio_requeue_io_start_cut_in_line 1
        zfs_vdev_sync_read_max_active 10
        zfs_mdcomp_disable 0
        zfs_arc_num_sublists_per_state 8

Max Size(High Water)について報告された比率の重要性は何を意味するのでしょうか。
CMCDragonkai

Ubuntuユーザーの場合:arc_summaryなし.py
18
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.