Bagaimana saya bisa menentukan ukuran ARC saat ini di ZFS, dan bagaimana kaitannya dengan ARC membebaskan atau menyimpan memori?

17

ZFS menggunakan ARC (cache pengganti adaptif) yang tidak diperhitungkan dalam penggunaan memori "cache" Linux tradisional. Bagaimana saya bisa menentukan ukuran saat ini serta batas ukuran ARC ZFS, dan bagaimana ini berhubungan dengan jumlah memori bebas atau cache yang dilaporkan misalnya oleh free?

sebuah CVn
sumber

Jawaban:

20

Kode ZFS melaporkan berbagai statistik melalui proksi. Untuk menentukan ukuran ARC, lihat /proc/spl/kstat/zfs/arcstats(dengan anggapan projek dipasang pada / proc, sebagai kebiasaan), khususnya nilai untuk c, c_maxdan size. (Lihat juga posting ini di forum Komunitas Oracle . Alternatif Internet Archive copy jika situs Oracle tidak tersedia.)

  • cadalah ukuran target ARC dalam byte
  • c_maxadalah ukuran maksimum ARC dalam byte
  • sizeadalah ukuran ARC saat ini dalam byte

Ukuran maksimum ARC dapat disesuaikan baik dengan mengirimkan zfs_arc_max=Nparameter ke zfsmodul (melalui modprobe), di mana Nukuran ARC maksimum dalam byte, atau dengan cepat dengan menuliskan ukuran maksimum baru dalam byte /sys/module/zfs/parameters/zfs_arc_max.

Karena bagaimana ZFS di Linux diimplementasikan, memori ARC berperilaku seperti memori cache (misalnya, itu diusir jika sistem berada di bawah tekanan memori), tetapi dikumpulkan oleh kernel sebagai alokasi memori biasa. Hal ini dapat menyebabkan kebingungan karena sistem tampaknya memiliki memori bebas jauh lebih sedikit daripada yang diharapkan mengingat beban kerja sistem saat ini, tetapi normal.

Untuk mendapatkan ukuran ARC dalam megabita, Anda bisa menggunakan sesuatu seperti awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats. (1.048.576 adalah jumlah byte ke megabita.)

Misalnya, sistem saya (yang menggunakan ZFS hampir secara eksklusif) dapat melaporkan

$ 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
$

yang berarti bahwa penggunaan memori aktual oleh proses penduduk saat ini adalah sekitar 8.669 MB (16.808 MB berkurang oleh 8.139 MB).

sebuah CVn
sumber
13

Untuk membangun jawaban Michael Kjörling, Anda juga dapat menggunakan arc_summary.py .

Di sini Anda dapat melihat bagaimana ARC menggunakan setengah dari memori desktop saya:

root @ host: ~ # free -g
             total yang digunakan buffer bersama gratis di-cache
Mem: 62 56 6 1 1 5
- / + buffer / cache: 49 13
Tukar: 7 0 7

root @ host: ~ # arc_summary.py
-------------------------------------------------- ----------------------
Laporan Subsistem ZFS Jum 24 Feb 19:44:20 2017
Ringkasan ARC: (SEHAT)
        Jumlah Memori Throttle: 0

Misc ARC:
        Dihapus: 1,33 m
        Kehilangan Mutex: 99
        Dikeluarkan Loncatan: 99

Ukuran ARC: 98,13% 30,80 GiB
        Ukuran Target: (Adaptif) 100,00% 31,39 GiB
        Ukuran Min (Batas Keras): 0,10% 32,00 MiB
        Ukuran Maks (Tinggi Air): 1004: 1 31,39 GiB

Rincian Ukuran ARC:
        Ukuran Cache yang Terakhir Digunakan: 84,25% 26,45 GiB
        Ukuran Cache yang Sering Digunakan: 15.75% 4.95 GiB

ARC Hash Breakdown:
        Elemen Maks: 1.11m
        Elemen Saat Ini: 53.48% 592.56k
        Tabrakan: 763.42k
        Chain Max: 4
        Rantai: 19.62k

ARC Total akses: 36,34 m
        Rasio Hit Cache: 87,02% 31,62 m
        Rasio Cache Miss: 12,98% 4,72m
        Rasio Hit Aktual: 84,78% 30,81 juta

        Efisiensi Permintaan Data: 93,49% 24,22 m
        Efisiensi Prefetch Data: 2.57% 819.12k

        CACHE HITS DENGAN DAFTAR CACHE:
          Digunakan secara anonim: 2.27% 716.60k
          Terakhir Digunakan: 17,26% 5,46 m
          Paling Sering Digunakan: 80,17% 25,35 m
          Hantu Terbaru Digunakan: 0,19% 60,25k
          Hantu Paling Sering Digunakan: 0,11% 35,37k

        CACH HITS BY TYPE DATA:
          Data Permintaan: 71,60% 22,64m
          Data Prefetch: 0,07% 21,04k
          Metadata Permintaan: 25,82% 8,16m
          Prefetch Metadata: 2.51% 794.39k

        CISSE HILANG OLEH JENIS DATA:
          Data Permintaan: 33,44% 1,58 juta
          Data Prefetch: 16,92% 798,09k
          Metadata Permintaan: 48,90% 2,31 juta
          Prefetch Metadata: 0,75% 35,27k


Efisiensi Prefetch DMU: 173,06 m
        Rasio Hit: 86,14% 149,07 juta
        Rasio Kehilangan: 13,86% 23,99 juta



ZFS Tunable:
        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
        ign_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
11181
sumber
Saya ingin tahu apa arti penting dari rasio yang dilaporkan untuk Ukuran Maks (Air Tinggi).
CMCDragonkai
Untuk pengguna Ubuntu: arc_summarytanpa.py
springloaded