Ответы:
Код ZFS сообщает о различной статистике через procfs. Для того, чтобы определить размер АРК, посмотреть на /proc/spl/kstat/zfs/arcstats
(предполагая , что PROCFS установлен на / Proc, как обычно), в частности, значения c
, c_max
и size
. (См. Также этот пост на форуме сообщества Oracle . Альтернативная копия Интернет-архива на случай, если сайт Oracle станет недоступен.)
c
является целевой размер АРК в байтахc_max
это максимальный размер АРК в байтахsize
является текущим размером АРК в байтахМаксимальный размер 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 088 МБ уменьшено на 8 139 МБ).
Чтобы продолжить ответ Михаэля Кьёрлинга, вы также можете использовать arc_summary.py .
Здесь вы можете увидеть, как ARC использует половину памяти моего рабочего стола:
root @ host: ~ # free -g общее количество использованных свободных общих буферов в кеше Памяти: 62 56 6 1 1 5 - / + буферы / кэш: 49 13 Обмен: 7 0 7 root @ host: ~ # arc_summary.py -------------------------------------------------- ---------------------- Отчет подсистемы ZFS пт 24 февраля 19:44:20 2017 Резюме ДУГИ: (ЗДОРОВЫЙ) Память дроссельной заслонки: 0 ARC Misc: Удалено: 1,33 м Mutex Misses: 99 Skip Skips: 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,12 тыс. CACHE HITS BY CACHE LIST: Использовано анонимно: 2.27% 716.60k Последние использованные: 17,26% 5,46 м Наиболее часто используемые: 80,17% 25,35 м Последний использованный призрак: 0.19% 60.25k Наиболее часто используемый Призрак: 0.11% 35.37k КЕШ ХИТЫ ПО ТИПУ ДАННЫХ: Данные по спросу: 71,60% 22,64 млн. Данные предварительной выборки: 0,07% 21,04k Метаданные спроса: 25,82% 8,16 млн. Метаданные предварительной выборки: 2,51% 794,39k КЕЙШ ПРОПУСКА ПО ТИПУ ДАННЫХ: Данные по спросу: 33,44% 1,58 млн. Данные предварительной выборки: 16,92% 798,09k Метаданные спроса: 48,90%, 2,31 млн. Метаданные предварительной выборки: 0,75% 35,27k Эффективность предварительной выборки DMU: 173,06 м Коэффициент попадания: 86,14% 149,07 млн. Соотношение мисс: 13,86% 23,99 м 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 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
arc_summary
без.py