ฉันจะกำหนดขนาดปัจจุบันของ ARC ใน ZFS ได้อย่างไรและ ARC นั้นเกี่ยวข้องกับหน่วยความจำว่างหรือแคชอย่างไร


17

ZFS ใช้ ARC (แคชการแทนที่แบบปรับตัว) ซึ่งไม่ได้คำนึงถึงในการใช้หน่วยความจำ "แคช" แบบดั้งเดิมของ Linux ฉันจะกำหนดขนาดปัจจุบันรวมถึงขอบเขตขนาดของ ZFS ARC ได้อย่างไรและสิ่งเหล่านี้เกี่ยวข้องกับจำนวนหน่วยความจำแคชหรือหน่วยความจำแคชที่รายงานได้freeอย่างไร

คำตอบ:


20

รหัส ZFS รายงานสถิติต่างๆผ่าน procfs ในการกำหนดขนาดของ ARC ให้ดูที่/proc/spl/kstat/zfs/arcstats(procfs สมมติว่าติดตั้งอยู่บน proc / เป็นจารีตประเพณี) โดยเฉพาะค่าสำหรับc, และc_max size(โปรดดูโพสต์นี้ในฟอรัม Oracle Community สำเนาสำรองทางอินเทอร์เน็ตในกรณีที่ไซต์ Oracle ไม่พร้อมใช้งาน)

  • cคือขนาดเป้าหมายของ ARC หน่วยเป็นไบต์
  • c_maxคือขนาดสูงสุดของ ARC หน่วยเป็นไบต์
  • sizeคือขนาดปัจจุบันของ ARC เป็นไบต์

ขนาดสูงสุดของ ARC ที่สามารถปรับเปลี่ยนได้ทั้งโดยผ่านzfs_arc_max=Nพารามิเตอร์ไปยังzfsโมดูล (ผ่าน modprobe) ซึ่งNเป็นขนาดสูงสุด ARC /sys/module/zfs/parameters/zfs_arc_maxไบต์หรือในการบินโดยการเขียนขนาดสูงสุดใหม่ในไบต์

เนื่องจากวิธีการใช้ZFS บน Linuxหน่วยความจำ 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

ที่จะสร้างในคำตอบของไมเคิลKjörlingของคุณยังสามารถใช้arc_summary.py

ที่นี่คุณสามารถดูได้ว่า ARC ใช้หน่วยความจำของเดสก์ท็อปของฉันครึ่งหนึ่งได้อย่างไร:

root @ host: ~ # free -g
             แคชบัฟเฟอร์ที่ใช้ร่วมกันทั้งหมดที่ใช้รวมอยู่
Mem: 62 56 6 1 1 5
- / + บัฟเฟอร์ / แคช: 49 13
สลับ: 7 0 7

root @ host: ~ # arc_summary.py
-------------------------------------------------- ----------------------
รายงานระบบย่อย ZFS ศุกร์ 24 กุมภาพันธ์ 19:44:20 2017
ข้อมูลสรุป ARC: (HEALTHY)
        หน่วยความจำเค้นจำนวน: 0

เบ็ดเตล็ด ARC:
        ถูกลบ: 1.33m
        Mutex Misses: 99
        ขับไล่ข้าม: 99

ขนาด ARC: 98.13% 30.80 GiB
        ขนาดเป้าหมาย: (Adaptive) 100.00% 31.39 GiB
        ขนาดต่ำสุด (ขีด จำกัด ยาก): 0.10% 32.00 MiB
        ขนาดสูงสุด (น้ำสูง): 1004: 1 31.39 GiB

รายละเอียดขนาด ARC:
        ขนาดแคชที่ใช้ล่าสุด: 84.25% 26.45 GiB
        ขนาดแคชที่ใช้บ่อย: 15.75% 4.95 GiB

ARC Hash Breakdown:
        องค์ประกอบสูงสุด: 1.11m
        องค์ประกอบปัจจุบัน: 53.48% 592.56k
        การชน: 763.42k
        เชนสูงสุด: 4
        โซ่: 19.62k

การเข้าถึงทั้งหมดของ ARC: 36.34m
        อัตราส่วน Hit Cache: 87.02% 31.62m
        อัตราส่วนพลาดแคช: 12.98% 4.72m
        อัตราส่วนการยิงจริง: 84.78% 30.81m

        ประสิทธิภาพความต้องการข้อมูล: 93.49% 24.22m
        ประสิทธิภาพการดึงข้อมูลล่วงหน้า: 2.57% 819.12k

        CACHE HITS โดยรายการ CACHE:
          ใช้โดยไม่ระบุชื่อ: 2.27% 716.60k
          ใช้ล่าสุด: 17.26% 5.46m
          ใช้บ่อยที่สุด: 80.17% 25.35m
          Ghost ที่ใช้งานล่าสุด: 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
        อัตราส่วน Hit: 86.14% 149.07m
        อัตราส่วนพลาด: 13.86% 23.99m



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 1,000
        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 1,000
        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 1,000
        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
        ละเว้น _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

ฉันสงสัยว่าความหมายของอัตราส่วนที่รายงานสำหรับขนาดสูงสุด (น้ำสูง) หมายถึงอะไร
CMCDragonkai

สำหรับผู้ใช้อูบุนตู: มันarc_summaryโดยไม่ต้อง.py
springloaded
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.