¿Qué tan seguro es boost los tmpfs a más de la memory física?

Mi server tiene 2GB de RAM y 120GB de SSD, más algunas matrices RAID para almacenamiento. OS es Debian 8 (Linux 3.16).

Tengo una aplicación intensa de MySQL que tiene tmpdir = /run/mysqld , que es un tmpfs configurado por Debian a través de /etc/default/tmpfs :

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

Solía ​​ser 20%VM , que es aproximadamente 384M. Corrí contra varios no space left on device , por lo que lo he aumentado a 40%VM , pero incluso con aproximadamente 763M todavía es demasiado pequeño.

Ahora ahora debería agregar más RAM, pero por curiosidad, me gustaría saber los límites aquí.

  • /dev/sdd1 está montado en / tiene alnetworkingedor de 50 GB gratis, y es bastante rápido (Samsung 850 EVO SSD)
  • /dev/sdd5 es mi partición de intercambio, es 3.7G (ID de tipo fdisk es 82)
  • TMPFS_SIZE está configurado en 40%VM , lo que significa /run es 763M

Ahora sé que los tmpfs pueden intercambiarse, lo cual está bien conmigo. Quiero que MySQL escriba en la memory RAM siempre que sea posible, pero si necesita más memory, puedo permitir que el sistema la cambie en la SSD.

Entonces con mi configuration, ¿puedo presionar /run para ser:

  • 300 millones de grande? Sí. Ese fue el pnetworkingeterminado.
  • 1.5GB de grande? Sí, lo intenté, MySQL usó hasta 1.3GB en él y el sistema funcionó a las mil maravillas. Pero eso es less de la mitad de la memory física + partición de intercambio.
  • 2.5GB grande? Esto es más que memory física, pero less de la mitad de la memory física + mi partición de intercambio.
  • 4GB grande? Esto encajaría perfectamente en la mitad física + intercambio
  • ¿Más? como 10GB? ¿puede usar espacio libre en / para intercambiar más?

Supongo que la regla de oro para la security es tener TMPFS_SIZE no más grande que swap + half physical memory. ¿Puedo ir más allá sin boost la partición de intercambio?

Además, ¿es posible poner 200%VM en /etc/default/tmpfs ? He leído el manual de ese file sin saber si puedo poner> 100% en esto.

Por último, ¿debería hacerlo en /etc/fstab y no tocar /etc/default/tmpfs ?

(hasta saber que solo lo he hecho con mount -o remount , aún no reinicié el server)

Editar: para la última pregunta, sé que puede / puede ser modificado por /etc/fstab (vea la cita debajo de la página del manual), sin embargo, quería saber la mejor práctica, porque nunca he tocado nada en /etc/default hasta aquí.

Se pueden usar opciones de assembly más complejas mediante la creación de una input adecuada en / etc / fstab.

Pensé que podría probarlo, así que corrí:

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

Trabajado como un encanto:

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

Así que lo llené un poco:

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

Resultado:

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

El sistema aún está funcionando. La disponibilidad de intercambio se eliminó, lo que demuestra que se utilizó:

canje de disponibilidad de canje

  • 17:10: crea 2,5 GB de files en /run
  • 17:20: eliminar el file 500M

El intercambio total se networkinguce por la cantidad que toma /run .

Probaría 10GB en una VM, porque no sé si el kernel rechazará el reassembly o simplemente tendrá un comportamiento inesperado.

Todavía estoy buscando una respuesta real, pero la forma pragmática mostró que funciona.