Quanto è sicuro aumentare i tmpfs oltre la memoria fisica?


11

Il mio server ha 2 GB di RAM e 120 GB di SSD, oltre ad alcuni array RAID per l'archiviazione. Il sistema operativo è Debian 8 (Linux 3.16).

Ho un'applicazione intensa di MySQL che ha tmpdir= /run/mysqld, che è tmpfsconfigurata da Debian attraverso /etc/default/tmpfs:

# Size limits.  Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM

Questo era 20%VM, che è di circa 384 milioni. Ho corso contro diversi no space left on device, quindi l'ho aumentato a 40%VM, ma anche con circa 763M è ancora troppo piccolo.

Ora ora dovrei aggiungere più RAM, ma per curiosità, vorrei conoscere i limiti qui.

  • /dev/sdd1è montato /ha circa 50 GB gratuiti ed è abbastanza veloce (Samsung 850 EVO SSD)
  • /dev/sdd5 è la mia partizione di swap, è 3.7G (ID tipo fdisk è 82)
  • TMPFS_SIZEè impostato su 40%VM, il che significa /run763M

Ora so che tmpfs può scambiarsi, il che va bene per me. Voglio che MySQL scriva su RAM ogni volta che è possibile, ma se ha bisogno di più memoria, posso consentire al sistema di scambiarlo sull'SSD.

Quindi, con la mia configurazione, posso spingere /runper essere:

  • 300M di grandi dimensioni? Sì. Quello era il default.
  • 1,5 GB di larghezza? Sì, provato, MySQL ha usato fino a 1,3 GB e il sistema ha funzionato come un fascino. Ma questa è ancora meno della metà della memoria fisica + partizione di swap.
  • 2,5 GB grandi? Questo è più della memoria fisica, ma meno della metà della memoria fisica + la mia partizione di swap.
  • 4 GB grandi? Questo si adatterebbe perfettamente a metà + scambio fisico
  • Di Più? come 10 GB? può usare lo spazio libero su /per scambiare di più?

Immagino che la regola empirica per sicurezza sia quella di TMPFS_SIZEnon avere più di swap + mezza memoria fisica. Posso andare oltre senza aumentare la partizione di swap?

Inoltre, è possibile mettere 200%VMin /etc/default/tmpfs? Ho letto tmpfs(5)senza sapere se posso mettere> 100% su questo.

Infine, dovrei farlo /etc/fstabinvece e non toccare /etc/default/tmpfs?

(per sapere che l'ho fatto solo con mount -o remount, non ho ancora riavviato il server)

Modifica: per l'ultima domanda, so che può / può essere modificato da /etc/fstab(vedi citazione sotto dalla pagina man), tuttavia volevo conoscere la migliore pratica, perché non ho mai toccato nulla /etc/defaultfinora.

Opzioni di mount più complesse possono essere usate dalla creazione di una voce adatta in / etc / fstab.


Domanda interessante. Immagino che questo potrebbe anche essere molto legato all'impostazione di sovraccarico della memoria.
phk,

Sembra che la dimensione massima di tmpfs sia fisica + swap. L'ho visto nei documenti del kernel .
Benoit Duffez,

Risposte:


8

Ho pensato di poterlo provare, quindi ho corso:

sudo mount -o remount,size=2800M /run

Ha funzionato come un fascino:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G   45M  2.7G   2% /run

Quindi l'ho riempito un po ':

fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img

Risultato:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G  2.6G  208M  93% /run

Il sistema è ancora attivo e funzionante. La disponibilità di swap è diminuita, il che dimostra che è stato utilizzato:

calo disponibilità disponibilità

  • 17:10: crea 2,5 GB di file in /run
  • 17:20: rimuovi il file 500M

Lo swap totale è ridotto dell'importo preso da /run.

Verificherei 10 GB su una macchina virtuale, perché non so se il kernel rifiuterà il rimontaggio o avrà semplicemente un comportamento inaspettato.

Sto ancora cercando una risposta reale, ma il modo pragmatico ha dimostrato che funziona.

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.