Як я можу визначити поточний розмір АРК у ZFS і як ARC стосується вільної пам'яті або кеш-пам'яті?


17

ZFS використовує ARC (адаптивний замінний кеш), який не враховується в традиційному використанні пам'яті "кеш" Linux. Як я можу визначити поточний розмір, а також межі розміру ARC ZFS, і як вони відносяться до кількості вільної пам'яті або кеш-пам'яті, про яку, наприклад, повідомляє free?

Відповіді:


20

Код ZFS повідомляє про різні статистичні дані через procfs. Для того, щоб визначити розмір АРК, зверніть увагу на /proc/spl/kstat/zfs/arcstats(припускаючи , що PROCFS встановлений на / Proc, як зазвичай), в зокрема, значний c, c_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.

Через те, як реалізується 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 МБ (16 808 Мб зменшено на 8 139 МБ).


13

Щоб спиратися на відповідь Майкла Кьорлінга, ви також можете використовувати arc_summary.py .

Тут ви можете побачити, як ARC використовує половину пам'яті мого робочого столу:

root @ хост: ~ # безкоштовно -g
             загальна кількість використаних кешованих безкоштовних загальних буферів
Пам .: 62 56 6 1 1 5
- / + буфери / кеш: 49 13
Зміна: 7 0 7

root @ host: ~ # arc_summary.py
-------------------------------------------------- ----------------------
Звіт про підсистему ZFS пт 24 лютого 19:44:20 2017
Резюме ARC: (ЗДОРОВИЙ)
        Кількість дроселів пам'яті: 0

Різне ARC:
        Видалено: 1,33м
        Mutex пропускає: 99
        Проселення пропускає: 99

Розмір ARC: 98,13% 30,80 Гб
        Цільовий розмір: (Адаптивний) 100,00% 31,39 ГіБ
        Мінімальний розмір (жорсткий ліміт): 0,10% 32,00 МіБ
        Максимальний розмір (висока вода): 1004: 1 31,39 ГіБ

Розбивка за розміром ARC:
        Нещодавно використаний розмір кешу: 84,25% 26,45 ГіБ
        Часто використовуваний розмір кешу: 15,75% 4,95 ГіБ

ARC Hash Breakdown:
        Максимум елементів: 1,11м
        Поточні елементи: 53.48% 592.56k
        Зіткнення: 763,42 к
        Макс ланцюга: 4
        Ланцюги: 19,62к

ARC Загальний доступ: 36,34м
        Коефіцієнт удару кешу: 87,02% 31,62м
        Коефіцієнт пропуску кешу: 12,98% 4,72м
        Фактичний коефіцієнт удару: 84,78% 30,81м

        Ефективність попиту на дані: 93,49% 24,22м
        Ефективність попереднього вибору даних: 2,57% 819,12k

        КАШЕ ХІТИ ПО СПИСКУ КАШУ:
          Анонімно використано: 2,27% 716,60k
          Останні використовувані: 17,26% 5,46м
          Найчастіше використовуються: 80,17% 25,35м
          Привид останнього використання: 0,19% 60,25 тис
          Привид найчастіше: 0,11% 35,37 к

        КАШЕ ХІТИ ЗА ТИПУ ДАНИХ:
          Дані попиту: 71,60% 22,64м
          Дані попереднього вибору: 0,07% 21,04 к
          Метадані попиту: 25,82% 8,16м
          Завантажити метадані: 2,51% 794,39k

        КАШУВАТИ МІСИ ЗА ТИПУ ДАНИХ:
          Дані попиту: 33,44% 1,58м
          Дані попереднього вибору: 16,92% 798,09 к
          Метадані попиту: 48,90% 2,31м
          Попередній вибір метаданих: 0,75% 35,27k


Ефективність попереднього вибору DMU: 173,06м
        Коефіцієнт потрапляння: 86,14% 149,07м
        Коефіцієнт пропуску: 13,86% 23,99м



Налаштування 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
пружинний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.