2015-01-12 5 views
10

Attualmente sto sperimentando i parametri del kernel trovati in /proc/sys/vm, in particolare dirty_ratio e dirty_background_ratio.Differenza tra vm.dirty_ratio e vm.dirty_background_ratio?

Il doc kernel ha le seguenti spiegazioni per entrambi:

dirty_background_ratio

Contiene, come percentuale della memoria totale disponibile che contiene pagine libere e le pagine esponibile, il numero di pagine in cui il background kernel thread di flusher inizieranno a scrivere i dati sporchi.

e

dirty_ratio

contiene, come percentuale della memoria totale disponibile contenente pagine libere e pagine deducibile, il numero di pagine in cui un processo che è scrittura su disco generatrice inizierà da solo a scrivere i dati sporchi.

Sul mio sistema Linux dirty_background_ratio è 10 e dirty_ratio è 20. Mi rendo conto che la differenza è, che scrive i dati sporca. Quindi, se la memoria utilizzata raggiunge il 10%, il kernel inizia a scrivere e il 20% non dovrebbe mai essere raggiunto.

La mia domanda ora è: ha il valore più alto di dirty_background_ratio e dirty_ratio qualsiasi significato o è solo una questione di "qual è il valore più basso e chi ce l'ha"?

risposta

15

Ha il valore più alto di dirty_background_ratio e dirty_ratio qualsiasi significato o è solo una questione di "qual è il valore più basso e chi ce l'ha"?

In termini più semplici:

vm.dirty_background_ratio è la percentuale di memoria di sistema che quando sporco allora il sistema può iniziare a scrivere dati sui dischi.

vm.dirty_ratio è la percentuale della memoria di sistema che, se sporca, il processo di scrittura blocca e scrive pagine sporche sui dischi.

Questo parametro sintonizzabile dipende dal funzionamento del sistema, se si esegue un database di grandi dimensioni si consiglia di mantenere bassi questi valori per evitare i colli di bottiglia I/O e quando il carico del sistema aumenta.

es:

vm.dirty_background_ratio=10 
vm.dirty_ratio=15 

In questo esempio quando le pagine sporche superano vm.dirty_background_ratio=10 I/O inizia, cioè iniziare a ricevere arrossate/scritti sul disco. Quando il numero totale di pagine dirty supera vm.dirty_ratio=15 tutte le scritture vengono bloccate fino a quando alcune delle pagine sporche non vengono scritte sul disco. Puoi pensare allo vm.dirty_ratio=15 come limite superiore.

+1

Quindi fatemi riformulare, per vedere se ho capito bene. Se viene raggiunto dirty_background_ratio, il kernel inizia a eseguire i writeback in background, ma le applicazioni possono ancora scrivere nella cache della pagina senza bloccare. Se viene raggiunto dirty_ratio, le applicazioni bloccano la scrittura fino a quando dirty_ratio non viene più raggiunto. È corretto? – happyMOOyear

+1

sì, ho anche aggiornato un caso d'uso se aiuta. – askb

+0

Ho accettato la tua risposta perché risponde alla mia domanda e mi ha aiutato molto. Grazie! Solo una domanda in più: c'è qualche posto in cui questo comportamento è documentato? – happyMOOyear

1

Sono stato incuriosito da questa stessa domanda e così ho sperimentato un po 'il mio sistema Debian 7.10 con Linux 3.2.0-4-amd64 utilizzando sysbench 0.4.12, modificando:

  • /proc/sys/vm/dirty_ratio
  • /proc/sys/vm/dirty_background_ratio

Queste impostazioni sono un modo per ritarda la scrittura sul disco. Sono utili finché si hanno applicazioni che scrivono di rado o in piccoli blocchi (ad esempio il browser Web). Se c'è una sola applicazione sul sistema che sta appena generando dati ad una velocità superiore al massimo supportato dal disco, allora nessuna impostazione è importante. La scrittura impiegherà tutto il tempo necessario.

Rapporto di sporcizia (DR) provoca il processo che ha causato il numero di pagine sporche di attraversare la soglia da bloccare. Rapporto sfondo sporco (DBR) controlla la scrittura di pagine sporche sullo sfondo. Quindi, se hai un DBR basso, un DR più alto e tutti i tuoi processi scrivono in piccoli blocchi mai in totale superando la velocità di scrittura supportata del disco (ad esempio 50 MB/s), allora troverai un sistema abbastanza reattivo. Questo è impressionante quando teniamo a mente il fatto che scrivere su RAM è in genere 100 volte più veloce (5 GB/s)! Questa è l'importanza del DBR.

I parametri di configurazione sono utili quando si è infastiditi dalle applicazioni che scrivono di rado. Non si desidera che un processo che scrive un byte o che legga alcuni KB si blocchi per 20 secondi perché ci sono troppi dati sporchi. Questa è l'importanza di non avere un DR troppo alto. Garantisce inoltre che sia disponibile memoria per memorizzare nella cache i dati utilizzati di recente.