Il codice ZFS riporta varie statistiche tramite procfs. Per determinare la dimensione dell'ARC, guarda /proc/spl/kstat/zfs/arcstats (supponendo che procfs sia montato su /proc, come di consueto), in particolare i valori per c , c_max e size . (Vedi anche questo post sul forum Oracle Community. Copia alternativa di Internet Archive nel caso in cui il sito Oracle non sia più disponibile.)
cè la dimensione target dell'ARC in bytec_maxè la dimensione massima dell'ARC in bytesizeè la dimensione corrente dell'ARC in byte
La dimensione massima dell'ARC può essere regolata passando un zfs_arc_max=N parametro al zfs module (tramite modprobe), dove N è la dimensione massima ARC in byte, oppure scrivendo al volo la nuova dimensione massima in byte in /sys/module/zfs/parameters/zfs_arc_max .
A causa di come viene implementato ZFS su Linux, la memoria ARC si comporta come la memoria cache (ad esempio, viene eliminata se il sistema è sotto pressione della memoria), ma è aggregata dal kernel come normali allocazioni di memoria. Questo può creare confusione poiché il sistema sembra avere molta meno memoria libera di quanto ci si aspetterebbe dato l'attuale carico di lavoro del sistema, ma è normale.
Per ottenere la dimensione ARC in megabyte, puoi usare qualcosa come awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats . (1.048.576 è il numero di byte per megabyte.)
Ad esempio, il mio sistema (che utilizza quasi esclusivamente ZFS) potrebbe segnalare
$ 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
$
il che significa che il file effettivo l'utilizzo della memoria da parte dei processi attualmente residenti è di circa 8.669 MB (16.808 MB ridotti di 8.139 MB).
Per basarti sulla risposta di Michael Kjörling, puoi anche usare arc_summary.py.
Qui puoi vedere come l'ARC utilizza metà della memoria del mio desktop:
example@unixlinux.online:~# free -g
total used free shared buffers cached
Mem: 62 56 6 1 1 5
-/+ buffers/cache: 49 13
Swap: 7 0 7
example@unixlinux.online:~# arc_summary.py
------------------------------------------------------------------------
ZFS Subsystem Report Fri Feb 24 19:44:20 2017
ARC Summary: (HEALTHY)
Memory Throttle Count: 0
ARC Misc:
Deleted: 1.33m
Mutex Misses: 99
Evict Skips: 99
ARC Size: 98.13% 30.80 GiB
Target Size: (Adaptive) 100.00% 31.39 GiB
Min Size (Hard Limit): 0.10% 32.00 MiB
Max Size (High Water): 1004:1 31.39 GiB
ARC Size Breakdown:
Recently Used Cache Size: 84.25% 26.45 GiB
Frequently Used Cache Size: 15.75% 4.95 GiB
ARC Hash Breakdown:
Elements Max: 1.11m
Elements Current: 53.48% 592.56k
Collisions: 763.42k
Chain Max: 4
Chains: 19.62k
ARC Total accesses: 36.34m
Cache Hit Ratio: 87.02% 31.62m
Cache Miss Ratio: 12.98% 4.72m
Actual Hit Ratio: 84.78% 30.81m
Data Demand Efficiency: 93.49% 24.22m
Data Prefetch Efficiency: 2.57% 819.12k
CACHE HITS BY CACHE LIST:
Anonymously Used: 2.27% 716.60k
Most Recently Used: 17.26% 5.46m
Most Frequently Used: 80.17% 25.35m
Most Recently Used Ghost: 0.19% 60.25k
Most Frequently Used Ghost: 0.11% 35.37k
CACHE HITS BY DATA TYPE:
Demand Data: 71.60% 22.64m
Prefetch Data: 0.07% 21.04k
Demand Metadata: 25.82% 8.16m
Prefetch Metadata: 2.51% 794.39k
CACHE MISSES BY DATA TYPE:
Demand Data: 33.44% 1.58m
Prefetch Data: 16.92% 798.09k
Demand Metadata: 48.90% 2.31m
Prefetch Metadata: 0.75% 35.27k
DMU Prefetch Efficiency: 173.06m
Hit Ratio: 86.14% 149.07m
Miss Ratio: 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 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