Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.4.2. Deadline I/O Scheduler

Il deadline I/O scheduler cerca di conferire una latenza garantita alle richieste. È importante notare come la misurazione della latenza inizia solo quando le richieste arrivano allo scheduler I/O (distinzione importante poichè una applicazione può essere sospesa "sleep" per liberare i descrittori di richieste). Per impostazione predefinita i processi di lettura hanno priorità sui processi di scrittura, poichè le applicazioni possono bloccarsi con più frequenza in processi di lettura di I/O
Il deadline invia gli I/O in blocco o batch. Un blocco è una sequenza di I/O di scrittura o lettura con un ordine LBA crescente. Dopo la processazione di ogni blocco lo scheduler I/O controlla se i processi di scrittura sono sprovvisti di risorse, successivamente deciderà se iniziare un nuovo blocco di processi di lettura o scrittura. L'elenco FIFO di richieste verrà controllato solo per la presenza di richieste scadute per ogni blocco e successivamente per la direzione dei dati per il blocco stesso. Quindi se un blocco di processi di scrittura viene selezionato e al suo interno è presente un processo di lettura scaduto, quella richiesta non verrà servita fino a quando non verrà completato il blocco dei processi di scrittura.

Parametri ottimizzabili

fifo_batch
Questo valore determina il numero di processi di lettura o scrittura da emettere in un blocco singolo. Il valore predefinito è 16. L'impostazione di un valore più alto può generare un miglior output netto, aumentando però al tempo stesso anche il valore di latenza.
front_merges
Impostare questo parametro su 0 se il carico di lavoro non eseguirà mai operazioni di front merge. Se non conoscete il sovraccarico presente con questa operazione, è consigliato lasciare il valore predefinito (1).
read_expire
Questo valore permette all'utente di impostare il numero di millisecondi nel quale una richiesta di lettura deve essere servita. Per impostazione predefinita questo valore è impostato su 500 ms (mezzo secondo).
write_expire
Questo valore permette all'utente di impostare il numero di millisecondi nel quale una richiesta di scrittura deve essere servita. Per impostazione predefinita questo valore è impostato su 5000 ms (cinque secondi).
writes_starved
Questo valore determina il numero di blocchi di lettura da processare prima di processare un blocco singolo di processi di scrittura. Più questo valore risulta essere alto e maggiore è la preferenza data ai processi di lettura.