Se le operazioni di I/O al secondo sono il collo di bottiglia principale e si sta utilizzando Linux, c'è un attacco facile che ti costa solo memoria. Utilizzare un mount tmpfs per mettere in scena le scritture RRD.
Tutte le operazioni di I/O verranno eseguite in memoria e non si verificheranno i colli di bottiglia riscontrati nell'operazione di I/O del disco (questo è ancora più veloce rispetto all'utilizzo dei dischi a stato solido).È quindi possibile utilizzare un cron job e rsync per copiare solo i RRD modificati su disco una volta ogni pochi minuti.
Creare le directory
bash-4.2# mkdir /mnt/rrd-reads
bash-4.2# mkdir /mnt/rrd-writes
Creare un filesystem RAM 500 MB-massimo con le opzioni appropriate
bash-4.2# mount -t tmpfs -o size=500m,mode=0750,uid=collectd,gid=collectd none /mnt/rrd-writes
bash-4.2# echo "none /mnt/rrd-writes tmpfs size=500m,mode=0750,uid=collectd,gid=collectd 1 2" >> /etc/fstab
Copiare i file vecchi RRD nel nuovo punto di montaggio
bash-4.2# cp -a /var/lib/collectd/rrd/* /mnt/rrd-writes
Configurare l'applicazione RRD-scrittura di scrivere il nuovo punto di montaggio
bash-4.2# sed -i -e 's/DataDir "\/var\/lib\/collectd\/rrd"/DataDir "\/mnt\/rrd-writes"/' /etc/collectd/collectd.conf
Impostare un job cron per sincronizzare solo i RRD modificati su disco una volta ogni 2 minuti
bash-4.2# echo "*/2 * * * * collectd rsync -a /mnt/rrd-writes/* /mnt/rrd-reads/ ; sync" > /etc/cron.d/rrd-sync
Non dimenticare di copiare il file RRD salvato es nel punto di montaggio prima dello si avvia l'applicazione di scrittura rrd! Potrebbe essere necessario modificare lo script di init per quel servizio per assicurarsi che i file ci siano prima che inizi. Se si avvia senza i file, verranno creati nuovi file nudi e sarai molto confuso quando la directory di lettura verrà sovrascritta con RRD vuoti.
Se ad un certo punto è necessario ridimensionare la montatura tmpfs, si può fare al volo:
bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes
Se si tratta di I/O bound, non vorrei che essere buono? Significa che puoi prendere una soluzione hardware, come RAID, dischi a stato solido e più macchine per tracciare dati non correlati? – JasonSmith
anche il mio punto ... la domanda è quanto bene sia usato l'HW ... la rrdcached l'uso è abbastanza ottimale ... un database (alla fine della giornata) deve anche scrivere cose su disco, ma dal momento che è molto più generale, dubito che sarà in grado di farlo in modo efficiente come rrdtool ... –