Guide

TrueNAS Scale ARC Memory Cache, tuning per gestire meglio le risorse

Differentemente da TrueNAS Core con base BSD, la gestione della cache avviene in modo differente. Come sappiamo ZFS richiede un quantitavo oneroso di RAM per poter gestire al meglio il sistema… In questa guida andremo a vedere come fare il tuning di TrueNAS Scale ARC Memory Cache e lasciare abbastanza risorse disponibili per eventuali applicazioni o servizi aggiuntivi.

TrueNAS Scale ARC Memory Cache

Il sistema operativo di TrueNAS Scale, di default, occupa esattamente metà della RAM disponibile come Cache

truenas-scale-arc-memory-cache-tuning-valore-default

Come è possibile vedere (nel nostro caso), la memoria disponibile rimane un pò risicata… Tenendo conto che vi sono alcune applicazioni containerizzate che sono attive, rimane poco margine prima di saturare l’intera RAM.

ARC Memory Cache impostata di default

Per prima cosa andiamo a verificare quale sia il valore massimo consentito di cache del sistema operativo.
Collegatevi in SSH al sistema oppure tramite <System Settings> => <Shell>

truenas-scale-arc-memory-cache-tuning-shell

Il seguente comando risponderà a questa domanda:

cat /sys/module/zfs/parameters/zfs_arc_max

Come potete notare il valore è “0”; ciò significa che il sistema utilizzerà il 50% della RAM disponibile come cache

truenas-scale-arc-memory-cache-tuning-shell-attuale

Ora dovremo decidere quanti bytes dedicare al massimo per la cache

Ci raccomandiamo di scegliere attentamente il valore (IN BYTES) onde evitare un crash del sistema causato da un valore troppo basso o troppo alto

Nel nostro esempio il sistema è dotato di 12 GB di RAM e imposteremo una cache massima di 5 GB contro i 5,8 GB di default

Per trovare il valore corretto di bytes, vi rimandiamo a questo link, vi basterà inserire il valore in GB nel campo sopra Gigaytes e copiare il relativo valore in bytes.

truenas-scale-arc-memory-cache-tuning-conversione-in-bytes

Nel nostro esempio quindi il valore massimo di cache consentita al sistema sarà di 5368709120

Modifica ARC Memory Cache

Ora procediamo alla modifica della cache, tornate sulla schermata della shell ed eseguite il seguente comando SOSTITUENDO IL VALORE DOPO “echo” CON QUELLO DA VOI SCELTO

echo 5368709120 >> /sys/module/zfs/parameters/zfs_arc_max

Per confermare che il valore sia effettivamente variato, verificatelo con il comando precedente:

cat /sys/module/zfs/parameters/zfs_arc_max

Come noterete ora il valore sarà quello che avete impostato

truenas-scale-arc-memory-cache-tuning-modificata

Applicazione ARC Memory Cache al riavvio

Non manca che indicare al sistema operativo di mantenere il valore modificato di cache sempre; si perchè con i comandi che avete appena visto, la modifica è temporanea e verrà resettata al valore di default (“0” ovvero il 50% della RAM disponibile) ad ogni riavvio.

Andiamo sotto <System Settings> => <Advanced>

truenas-scale-arc-memory-cache-tuning-system-settings-advanced

Ora cliccate su <Add> presente nella sezione <Init/Shutdown Scripts>

truenas-scale-arc-memory-cache-tuning-init-script

Chiudete l’avviso di Warning (Changing Advanced settings can be dangerous when done incorrectly. Please use caution before saving.)

Ora impostate i seguenti parametri:

  • Description: una descrizione a vostra scelta, nell’esempio Set Arc size
  • Type: Command
  • Command (inserendo i vostri valori di cache): echo 5368709120 >> /sys/module/zfs/parameters/zfs_arc_max
  • When: Post Init
  • Enabled: spuntato
  • Timeout: 10

Infine salvate cliccando <Save>

truenas-scale-arc-memory-cache-tuning-parametri-script

Non vi resta che verificare dalla Dashboard che tutto sia impostato correttamente e continuare ad utilizzare il vostro TrueNAS.

truenas-scale-arc-memory-cache-tuning-nuovi-valori