Eric
La cache (arc) de ZFS mange toute la ram.
C'est la mémoire que ZFS utilise comme aire de cache. Le mécanisme par défaut c'est que la cache peut utiliser jusqu'à la mémoire physique - 1GB. Le problème c'est que bien que l'ARC peut rapetisser automatiquement quand les applications ont besoin de mémoire, en pratique, ça ne se fait pas assez rapidement.. Comme ZFS utilise trop de mémoire il faut le limiter.
Voici comment faire.
- Voir son utilisation.
- sous mdb
- ce qui est à vérifier
- c_min = minimum allouer
- c_max = maximum allouer
- sous mdb
# mdb -kw Loading modules: [ unix krtld genunix specfs dtrace cpu.generic uppc pcplusmp ufs ip hook neti sctp arp usba uhci fcp fctl emlxs qlc nca lofs zfs mpt md cpc random crypto fcip logindmux ptm sppp nfs ] > ::arc hits = 13475080 misses = 278175 demand_data_hits = 9197806 demand_data_misses = 19961 demand_metadata_hits = 3884809 demand_metadata_misses = 35538 prefetch_data_hits = 298657 prefetch_data_misses = 209763 prefetch_metadata_hits = 93808 prefetch_metadata_misses = 12913 mru_hits = 1093121 mru_ghost_hits = 4717 mfu_hits = 11993694 mfu_ghost_hits = 20071 deleted = 481527 recycle_miss = 8459 mutex_miss = 756 evict_skip = 12755 hash_elements = 304229 hash_elements_max = 305404 hash_collisions = 290303 hash_chains = 61527 hash_chain_max = 6 p = 15817 MB c = 15817 MB c_min = 3966 MB c_max = 31730 MB size = 15760 MB hdr_size = 51362304 l2_hits = 0 l2_misses = 0 l2_feeds = 0 l2_rw_clash = 0 l2_writes_sent = 0 l2_writes_done = 0 l2_writes_error = 0 l2_writes_hdr_miss = 0 l2_evict_lock_retry = 0 l2_evict_reading = 0 l2_free_on_write = 0 l2_abort_lowmem = 0 l2_cksum_bad = 0 l2_io_error = 0 l2_size = 0 l2_hdr_size = 0 memory_throttle_count = 0 arc_no_grow = 0 arc_tempreserve = 0 MB arc_meta_used = 366 MB arc_meta_limit = 7932 MB arc_meta_max = 366 MB
- kstat
- utilisation actuel.
# kstat zfs:0:arcstats:size module: zfs instance: 0 name: arcstats class: misc size 16526777664
- utilisation actuel.
Pour le limiter, il est conseillé de ne pas toucher à la valeur c_min. Mais on peut limiter la valeur c_max.
Dans mon cas j'ai limité a env 30% de la mémoire du système 36Go total et le ZFS arc 10Go = 10000000000 ocets = 0x2540BE400.
- Limiter le c_max sous /etc/system
- ajouter à la fin du fichier.
- Après le changement sous /etc/system un redémarrage s'impose.
- ajouter à la fin du fichier.
# vi /etc/system * zfs arc maximun utilisation 10Go set zfs:zfs_arc_max=10000000000
Posted at 04:42PM août 24, 2009 by Éric in Solaris |





