Distribuiremo sintonizzati (e numad) su ~ 1000 server, la maggior parte dei quali sono server VMware su NetApp o 3Par storage.
Secondo la documentazione di RedHats dovremmo scegliere il virtual-guest
profilo. Quello che sta facendo può essere visto qui: tuned.conf
Stiamo cambiando lo scheduler IO in NOOP poiché sia VMware che NetApp / 3Par dovrebbero fare una pianificazione sufficiente per noi.
Tuttavia, dopo aver studiato un po 'non sono sicuro del motivo per cui stanno aumentando vm.dirty_ratio
e kernel.sched_min_granularity_ns
.
Per quanto ho capito, l'aumento del vm.dirty_ratio
40% significa che per un server con 20 GB di RAM, 8 GB possono essere sporchi in qualsiasi momento a meno che non vengano vm.dirty_writeback_centisecs
colpiti per primi. E durante lo svuotamento di questi 8 GB, tutti gli I / O dell'applicazione verranno bloccati fino a quando le pagine sporche vengono liberate.
L'aumento di dirty_ratio significherebbe probabilmente prestazioni di scrittura più elevate ai picchi poiché ora abbiamo una cache più grande, ma poi di nuovo quando la cache riempie IO verrà bloccata per un tempo considerevolmente più lungo (diversi secondi).
L'altro è il motivo per cui stanno aumentando il sched_min_granularity_ns
. Se lo capisco correttamente, aumentare questo valore diminuirà il numero di intervalli di tempo per epoca ( sched_latency_ns
), il che significa che le attività in esecuzione avranno più tempo per terminare il loro lavoro. Posso capire che questa è un'ottima cosa per le applicazioni con pochissimi thread, ma per es. apache o altri processi con molti thread non sarebbero controproducenti?