ZFS에서 ARC의 현재 크기를 어떻게 확인할 수 있습니까? ARC는 메모리 여유 또는 캐시 메모리와 어떤 관련이 있습니까?


17

ZFS는 전통적인 Linux "캐시"메모리 사용량에서 고려되지 않은 ARC (적응 교체 캐시)를 사용합니다. 현재 크기와 ZFS ARC의 크기 경계를 어떻게 확인할 수 free있습니까? ZFS ARC는 예를 들어보고 한 여유 또는 캐시 메모리의 양과 어떤 관련이 있습니까?

답변:


20

ZFS 코드는 procfs를 통해 다양한 통계를보고합니다. 아크에서의 크기, 모양을 결정하기 /proc/spl/kstat/zfs/arcstats위한 (procfs의 가정은 통상적으로 상 / PROC 장착) 특이 값 c, c_maxsize. ( Oracle 커뮤니티 포럼의이 게시물을 참조하십시오 . Oracle 사이트를 사용할 수없는 경우 대체 인터넷 아카이브 사본 .)

  • c는 IS 목표 크기 (바이트)의 ARC
  • c_max바이트 단위의 ARC 의 최대 크기 입니다.
  • size바이트 단위의 ARC 의 현재 크기 입니다.

ARC의 최대 크기는 zfs_arc_max=N매개 변수를 zfs모듈 에 전달 (modprobe를 통해)합니다 (여기서 N최대 ARC 크기는 바이트 단위 임). 또는 새 최대 크기를 바이트 단위로 쓰면 즉석에서 조정할 수 있습니다 /sys/module/zfs/parameters/zfs_arc_max.

때문에 방법의 리눅스에 ZFS가 구현되면, ARC 메모리 동작합니다 캐시 메모리 등 (시스템 메모리 압력을 받고 오는 경우 예를 들어, 축출되어)되지만 집계 일반 메모리 할당과 같은 커널. 현재 시스템 워크로드에서 예상되는 것보다 사용 가능한 메모리가 훨씬 적은 것처럼 보이지만 이는 정상적인 혼동으로 이어질 수 있습니다.

ARC 크기를 MB 단위로 얻으려면 다음과 같은 것을 사용할 수 있습니다 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,669MB (16,808MB가 8,139MB 감소)임을 의미합니다.


13

마이클 Kjörling의 대답에 구축하기 위해, 당신은 또한 사용할 수 있습니다 arc_summary.py .

다음은 ARC가 데스크탑 메모리의 절반을 어떻게 사용하고 있는지 확인할 수 있습니다.

root @ host : ~ # 무료 -g
             캐시 된 총 사용 가능한 공유 버퍼
멤 : 62 56 6 1 1 5
-/ + 버퍼 / 캐시 : 49 13
스왑 : 7 0 7

root @ host : ~ # arc_summary.py
-------------------------------------------------- ----------------------
ZFS 하위 시스템 보고서 Fri Feb 24 19:44:20 2017
아크 요약 : (건강)
        메모리 스로틀 수 : 0

아크 기타 :
        삭제 : 1.33m
        뮤텍스 미스 : 99
        퇴장 건너 뛰기 : 99

아크 크기 : 98.13 % 30.80 GiB
        목표 크기 : (적응) 100.00 % 31.39 GiB
        최소 크기 (하드 제한) : 0.10 % 32.00 MiB
        최대 크기 (높은 물) : 1004 : 1 31.39 GiB

아크 크기 분석 :
        최근에 사용한 캐시 크기 : 84.25 % 26.45 GiB
        자주 사용되는 캐시 크기 : 15.75 % 4.95 GiB

아크 해시 분석 :
        최대 요소 : 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
스프링로드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.