Il n'existe pas d'outil simple sous FreeBSD permettant de contrôler l'ocupation de la RAM de la machine. Afin d'effectuer un contrôle régulier des ressources il est bon de vérifier également l'état d'occupation de la RAM.
Les informations sur l'occupation de la RAM sont dispersées. La commande sysctl -a peut en donner un aperçu :
[...]
kern.hostid: 0
kern.clockrate: { hz = 1000, tick = 1000, profhz = 1024, stathz = 128 }
kern.posix1version: 200112
kern.ngroups: 16
kern.job_control: 1
kern.saved_ids: 0
kern.boottime: { sec = 1189255384, usec = 291264 } Sat Sep 8 14:43:04 2007
kern.domainname:
kern.osreldate: 601000
kern.bootfile: /boot/kernel/kernel
kern.maxfilesperproc: 6804
kern.maxprocperuid: 3402
kern.ipc.maxsockbuf: 262144
kern.ipc.sockbuf_waste_factor: 8
kern.ipc.somaxconn: 128
kern.ipc.max_linkhdr: 16
kern.ipc.max_protohdr: 60
kern.ipc.max_hdr: 76
kern.ipc.max_datalen: 132
kern.ipc.nmbclusters: 16064
kern.ipc.nmbjumbop: 0
kern.ipc.nmbjumbo9: 0
kern.ipc.nmbjumbo16: 0
...
Les informations sont disponibles quelque part, mais où ?
Pour les extraires, rien de mieux qu'un shell :
#!/bin/sh
#affiche les informations concernant l'utilisation de la mémoire
FileTemp="/tmp/sysctl.txt"
sysctl -a > ${FileTemp}
mem_total=`cat ${FileTemp} | grep hw.realmem | awk -F":" '{ print $2 }'`
page_size=`cat ${FileTemp} | grep hw.pagesize | awk -F":" '{ print $2 }'`
mem_inactive=`cat ${FileTemp} | grep vm.stats.vm.v_inactive_count | awk -F":" '{ print $2 }'`
mem_cache=`cat ${FileTemp} | grep vm.stats.vm.v_cache_count | awk -F":" '{ print $2 }'`
mem_free=`cat ${FileTemp} | grep vm.stats.vm.v_cache_count | awk -F":" '{ print $2 }'`
mem_avail=$(($mem_inactive*$page_size+$mem_cache*$page_size+$mem_free*$page_size))
taux_mem=$(($mem_avail/($mem_total/100)))
echo "physical memory (octets) : "${mem_total}
echo "available memory (octets) : "${mem_avail}
echo "rate (%) : "${taux_mem}
Il ne reste plus qu'à exécuter le shell et nous obtenons trois informations :
La mémoire totale disponible
La mémoire disponible
Le taux d'occupation
Bien entendu, vous pourrez extraire toutes les informations qui vous conviennent.
Il reste plus qu'à ajouter une ligne dans /etc/crontab afin d'extraire les informations régulièrement et de, pourquoi pas, les consulter à distance ou tracer des graphes...