In che modo Linux gestisce l'IO del disco simultaneo?


12

Quando un server Linux sta servendo molte richieste simultanee per leggere molti file diversi, lo fa:

  1. Cercare File_1, leggere l'intero file, quindi cercare File_2, leggere l'intero file, quindi cercare File_3, ecc. Ecc.

  2. Cerca File_1, leggi parte di esso (fino al valore readahead?), Quindi cerca File_2, leggi parte di esso, quindi cerca nuovamente File_1 da dove è stato interrotto, leggi altro, quindi cerca File_3, ecc. eccetera

Se è il secondo caso, il server sta facendo molte più ricerche del necessario, il che rallenterebbe notevolmente le cose. In tal caso c'è qualche sintonia che potrei fare?

Risposte:


14

Nell'I / O del disco c'è una cosa chiamata ascensore. Il sottosistema disco cerca di evitare di schiacciare la testa del disco su tutti i piatti. Riordinerà le richieste di I / O (se non vietate, ad esempio da una barriera) in modo che la testa si sposti dall'interno del disco verso l'esterno e viceversa, eseguendo gli I / O richiesti lungo la strada.

La seconda cosa è l'unione delle richieste I / O. Se ci sono molte richieste in una breve finestra che accedono a diverse parti del file, il sottosistema I / O proverà a ottenere tutti i dati in una volta sola, invece di emettere diverse richieste non collegate.

Per quanto riguarda il tuning. Se sei lo scrittore di applicazioni, puoi fare molto. È possibile emettere I / O sequenziali di grandi dimensioni ogni volta che è possibile e utilizzare fsync () et.al. quando devi essere sicuro che i dati siano sui piatti.

Se sei un amministratore di sistema, e sai assolutamente, che le richieste di dati di 2 app saltano fuori di testa, e provano a leggere i file in sequenza (ad esempio hai 2 DVD che vengono transcodificati in parallelo), allora sì, aumentare la lettura dovrebbe aiutare. Altrimenti dovresti dare un'occhiata ai tuoi schemi e dimensioni di I / O, considerare il tuo livello RAID (se presente) e altri fattori, prima di fare qualsiasi tuning. Guarda quali sono i tuoi veri colli di bottiglia, prima di iniziare la sintonizzazione, potrebbe essere difficile indovinare, cosa sta davvero limitando il tuo sistema.


5

In Linux puoi definire il tuo algoritmo di pianificazione, hai diverse possibilità, ho dovuto fare un pezzo su di esso a scuola e questo articolo di Red Hat mi ha aiutato molto. Sebbene sia specifico per Red Hat, puoi trovare questi programmatori praticamente in qualsiasi distribuzione Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.