Vantaggi / svantaggi dell'aumento del "commit" in fstab


14

Ho fatto molte oscure ottimizzazioni di sistema in passato, ma mi sono sbarazzato della maggior parte di loro dopo powertopavermi detto che avrei dovuto impostare le mie porte USB su autosospensione , il che le ha costrette a un sonno eterno, e anche dopo aver realizzato i vantaggi di una maggiore swappiness .

Ma oggi, guardando /etc/fstab, ho notato che avevo impostato l'opzione commit=60per / e / home . Ricordo che si trattava di un'ottimizzazione per laptop, per ridurre la quantità di scritture sul disco, risparmiando così la batteria. Ma poi mi sono preoccupato che ciò potrebbe causare la perdita di dati (a volte la mia batteria viene disconnessa, e quindi all'avvio fsckmi parla di un paio di inode orfani).

Durante la ricerca di una spiegazione per questa opzione, sono arrivato alle seguenti spiegazioni (la seconda sembra contraddire la mia precedente comprensione):

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.

https://forums.gentoo.org/viewtopic-p-4088752.html

commit = 60 interrompe la prioritizzazione "immediata" (impostazione predefinita di 5 secondi) delle scritture delle letture eccessive, memorizzando nella cache le scritture per alcuni secondi in seguito. Ciò è positivo nella situazione di letture e scritture pesanti mescolate insieme, in cui l'utente desidera che le letture abbiano la priorità, in modo che il processore possa essere tenuto occupato piuttosto che mettere in pausa mentre attende che le scritture finiscano prima di poter continuare a leggere.

Un esempio del mondo reale che ho visto sta aspettando diversi secondi prima che appaia il menu a discesa di Gnome, apparentemente senza motivo. Il motivo era che il disco era occupato a scrivere, quindi la CPU ha dovuto attendere il termine della scrittura prima di poter ottenere tutti i dati dal disco per poter mostrare il menu.

Cosa fa davvero il commit ? Ci sono davvero vantaggi nell'aumentarlo (come reattività e risparmio energetico)? Può effettivamente causare la perdita di dati?

Risposte:


12

Cosa fa davvero il commit ?

Penso che una delle migliori spiegazioni sia stata data qui da allquixotic .

Ci sono davvero vantaggi nell'aumentarlo (come reattività e risparmio energetico)? Può effettivamente causare la perdita di dati?

Come da documentazione ufficiale ext4 :

A Ext4 può essere detto di sincronizzare tutti i suoi dati e metadati ogni 'nrsec' secondi. Il valore predefinito è 5 secondi. Ciò significa che se perdi il tuo potere, perderai tanto quanto gli ultimi 5 secondi di lavoro (il tuo filesystem non verrà danneggiato, grazie al journaling). Questo valore predefinito (o qualsiasi valore basso) comprometterà le prestazioni, ma è buono per la sicurezza dei dati . Impostandolo su 0 avrà lo stesso effetto di lasciarlo sul valore predefinito (5 secondi). Impostarlo su valori molto grandi migliorerà le prestazioni .

L'aumento del commitvalore significa che potresti perdere tanto quanto gli ultimi N secondi di lavoro (dove N = intervallo di commit) anche se il più delle volte questo non accadrà poiché il software può ancora chiamare fsync () e ottenere i suoi dati scritti sul disco, sovrascrivendo il impostazione di commit. Potresti vederlo come "scrivere tutto sul disco almeno così spesso" . 1
D'altra parte, significa meno scritture (il che lo rende abbastanza popolare tra gli utenti ssd) e migliori prestazioni (più scritture sono combinate in una singola scrittura più grande, gli aggiornamenti alle scritture precedenti entro il periodo di commit vengono annullati).
Per quanto riguarda il risparmio energetico, secondo questa pagina , risulta che oggigiorno l'aumento di commitvalore non risparmia energia.


1
Penso che si verifichi un certo risparmio energetico a causa del fatto che l'estensione + allocazione ritardata può ottimizzare molto meglio le ricerche dell'HDD. Ma probabilmente non è significativo.
Peter - Ripristina Monica
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.