ARFS'nin ZFS'deki mevcut boyutunu nasıl belirleyebilirim ve ARC'nin boş bellek veya önbellek ile ilişkisi nedir?


17

ZFS, geleneksel Linux "önbellek" bellek kullanımında hesaba katılmayan bir ARC (uyarlanabilir yedek önbellek) kullanır. ZFS ARC'nin geçerli boyutunu ve boyut sınırlarını nasıl belirleyebilirim ve bunlar, örneğin tarafından bildirilen boş veya önbellek miktarı ile nasıl ilişkilidir free?

Yanıtlar:


20

ZFS kodu procfs aracılığıyla çeşitli istatistikleri rapor eder. En ARC büyüklüğü, önceki belirlemek için /proc/spl/kstat/zfs/arcstatsiçin (varsayarak procfs alışılmış olarak, ilgili / proc monte), özellikle değerleri c, c_maxve size. ( Oracle Community forumundaki bu gönderiye de bakın . Oracle sitesinin kullanılamaması durumunda Alternatif İnternet Arşivi kopyası .)

  • colan hedef boyutu bayt cinsinden ARC
  • c_maxbir en büyük boyut bayt ARC
  • sizeolan geçerli boyutu bayt ARC

ARC'nin maksimum boyutu modüle bir zfs_arc_max=Nparametre geçirilerek zfs(modprobe ile), burada Nbayt cinsinden maksimum ARC boyutu veya bayt cinsinden yeni maksimum boyut yazarak anında ayarlanabilir /sys/module/zfs/parameters/zfs_arc_max.

Linux'ta ZFS'nin nasıl uygulandığı nedeniyle, ARC belleği önbellek gibi davranır (örneğin, sistem bellek baskısı altına girerse çıkarılır), ancak çekirdek tarafından sıradan bellek ayırmaları olarak toplanır . Sistem, mevcut sistem iş yükü göz önüne alındığında beklenenden çok daha az boş hafızaya sahip gibi göründüğü için karışıklığa neden olabilir, ancak normaldir.

ARC boyutunu megabayt olarak almak için, benzer bir şey kullanabilirsiniz awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats. (1.048.576 megabayta bayt sayısıdır.)

Örneğin, sistemim (neredeyse tamamen ZFS kullanan)

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

yani şu anda yerleşik işlemlerle gerçek bellek kullanımı yaklaşık 8,669 MB'dir (16,808 MB 8,139 MB azalır).


13

Michael Kjorlıng cevabı üzerine inşa için ayrıca kullanabilirsiniz arc_summary.py .

Burada ARC'nin masaüstümün belleğinin yarısını nasıl kullandığını görebilirsiniz:

root @ host: ~ # ücretsiz -g
             toplam kullanılan ücretsiz paylaşılan arabellekler önbelleğe alındı
Mem: 62 56 6 1 1 5
- / + tamponlar / önbellek: 49 13
Takas: 7 0 7

root @ host: ~ # arc_summary.py
-------------------------------------------------- ----------------------
ZFS Altsistem Raporu Cum 24 Şubat 19:44:20 2017
ARK Özeti: (SAĞLIKLI)
        Bellek Gaz Sayısı: 0

ARC Çeşitli:
        Silindi: 1.33m
        Muteks İsabet: 99
        Tahliye Atla: 99

ARK Boyutu: 98.13% 30.80 GiB
        Hedeflenen Boyut: (Uyarlanabilir) 100.00% 31.39 GiB
        Min. Boyut (Sert Limit): 0.10% 32.00 MiB
        Maksimum Boyut (Yüksek Su): 1004: 1 31.39 GiB

ARC Boyut Dağılımı:
        Son Kullanılan Önbellek Boyutu: 84.25% 26.45 GiB
        Sık Kullanılan Önbellek Boyutu: 15,75% 4,95 GiB

ARC Karma Dağılımı:
        Maksimum Eleman: 1.11m
        Öğeler Akımı: 53.48% 592.56k
        Çarpışmalar: 763.42k
        Maksimum Zincir: 4
        Zincirler: 19.62k

ARC Toplam erişim: 36.34m
        Önbellek İsabet Oranı: 87.02% 31.62m
        Önbellek Kaçırma Oranı: 12.98% 4.72m
        Gerçek İsabet Oranı: 84.78% 30.81m

        Veri Talebi Verimliliği: 93.49% 24.22m
        Veri Önceden Getirme Verimliliği: 2.57% 819.12k

        ÖNBELEME LİSTESİNE GÖRE ÖNLEMLER:
          Anonim Olarak Kullanılan: 2.27% 716.60k
          En Son Kullanılan: 17.26% 5.46m
          En Sık Kullanılanlar: 80.17% 25.35m
          En Son Kullanılan Hayalet: 0.19% 60.25k
          En Çok Kullanılan Hayalet: 0.11% 35.37k

        VERİ TÜRÜNE GÖRE ÖNLEME ÖNLEME:
          Talep Verileri: 71.60% 22.64m
          Verileri Önceden Alma: 0.07% 21.04k
          Talep Meta Verileri: 25.82% 8.16m
          Önceden Getirilmiş Meta Veri: 2.51% 794.39k

        VERİ TÜRÜNE GÖRE ÖNLEME ÖNLEMLERİ:
          Talep Verileri:% 33,44 1,58 milyon
          Verileri Önceden Alma: 16.92% 798.09k
          Talep Meta Verileri: 48.90% 2.31m
          Önceden Getirilmiş Meta Veri: 0.75% 35.27k


DMU Ön Alma Verimliliği: 173.06m
        İsabet Oranı: 86.14% 149.07m
        Özledim Oranı: 13.86% 23.99m



Ayarlanabilir 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_fragmentasyon_ eşiği 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
        10000 zune_arc_meta_prune
        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) için bildirilen oranın öneminin ne anlama geldiğini merak ediyorum.
CMCDragonkai

Ubuntu kullanıcıları için: arc_summaryOlmadan.py
Yaylı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.