Hacer que stripe_cache_size sea permanente


15

yo hice

echo 8192 > /sys/block/md0/md/stripe_cache_size

para mejorar mi rendimiento RAID, y ayudó mucho.

Pero todavía no puedo entender cómo hacerlo permanente.

Intenté configurarlo en /etc/rc.local: se ejecutan otros comandos, pero se sobrescribió a 256 en otro lugar ... ¿Alguna sugerencia?


Reposicionando el comentario de mi respuesta a continuación; No estoy seguro de si lo viste o no, ya que no estoy seguro de cómo funciona StackExchange: Hmmm ... no tengo RAID, por lo que es una posibilidad remota, pero ¿puedes probar 'grep -R 256 / etc / init.d 'y' grep -R stripe_cache_size /etc/init.d '?
zpletan

1
¿El paquete sysfsutils ayudaría a solucionar su problema?
zpletan

Respuestas:


16

Agregue una regla udev, por ejemplo, a /etc/udev/rules.d/60-md-stripe-cache.rules:

SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="8192"

Realmente no he intentado esto, por lo que puede que no sea 100% correcto (puede haber algunos errores tipográficos), pero debería estar cerca. Comprueba man udevpara entender más.

Es posible que también desee ejecutar los siguientes comandos para aplicar inmediatamente la nueva regla:

udevadm trigger
udevadm control --reload-rules

1
Muchas gracias, esta es finalmente la solución perfecta :-) La sintaxis está bien, solo tuve que agregar 60- antes del nombre y regenerar ramfs.
BarsMonster

1
Gracias. No puedo creer que esto siga siendo un problema en Ubuntu 13.10. Simplemente pasé de <10 MB / sy se bloqueó por completo a> 100 MB / s mientras se copiaba de un RAID cifrado a otro, simplemente cambiando el tamaño de la caché de bandas a un valor mucho más generoso.
frostschutz

Solo para que quede claro para otros: en al menos los sistemas Ubuntu modernos (17.04 en mi caso), posiblemente otros, necesita reconstruir su initramfs ("sudo update-initramfs -u") después de crear esta nueva regla o no lo hará realmente surten efecto automáticamente.
Bryan Henry el

1

Solo para ampliar en la última publicación; el guión debajo funciona para mí. Simplemente cambie sus datos entre "<...>". ¡Disfrutar!


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#################NOTE######################
##  You are limited by CPU and memory too #
##  <Your Name> <Date of Modification>    #
##  stripe cache size and read-ahead      #
###########################################
echo 16384 > /sys/block/<Your RAID5 or 6 Volume>/md/stripe_cache_size
blockdev --setra 16384 /dev/<Your RAID5 or 6 Volume>

exit 0

3
No diga "Solo para ampliar en la última publicación" porque las respuestas generalmente se clasifican por votos, por lo que es posible que su respuesta aparezca por encima de la que se refiere. Consulte la publicación por el nombre del autor. Es mucho mas claro.
Warren Hill

0

También estoy tratando de resolver esto. Puse el mío en rc.local y no tuve suerte. Lo inicio manualmente después de iniciar sesión. Supongo que podrías escribir un script para manejar esto y ponerlo en tus "Aplicaciones de inicio", pero eso no ayuda en absoluto si no estás conectado a gnome.


Es un servidor ubuntu, así que no hay suerte aquí.
BarsMonster

0

¿El paquete sysfsutils ayudaría a solucionar su problema?

RESPUESTA ORIGINAL:

No puedo entender cómo comentar tu pregunta; Supongo que editaré esta respuesta a medida que aprenda más sobre su problema.

¿Puede publicar (o pastebin, si es largo) la salida de

grep -R md0 /etc/init.d

Nada encontrado allí.
BarsMonster

Hmmm ... no tengo RAID, así que es una posibilidad remota, pero ¿puedes probar 'grep -R 256 /etc/init.d' y 'grep -R stripe_cache_size /etc/init.d'?
zpletan

ambos no arrojaron resultados.
BarsMonster

0

No tengo una respuesta real para usted, pero tal vez podría intentar crear un script de inicio simple. Cree un archivo en / etc / init con la extensión .conf. En el archivo poner:

start on started tty1

exec echo 8192 > /sys/block/md0/md/stripe_cache_size

Mi opinión es que eso debería ejecutar el comando en el momento en que se inició el terminal, que probablemente sea más o menos al mismo tiempo que ejecuta el comando.


Ya intenté poner esto en el script de inicio (rc.local) y esto no ayudó. Además, como se trata de Ubuntu Server, es posible que no haya terminales después del reinicio, AFAIK.
BarsMonster

Estaba proponiendo esto como una alternativa al método rc.local. Tal vez comenzaría más tarde. Aunque realmente no lo sé.
user1974

En cuanto a la falta de terminales, no tengo idea. ¿Por qué un servidor no tendría ttys después de un inicio? ¿Queremos decir lo mismo cuando decimos terminal? De todos modos, puede usar un servicio diferente para activar el comando, solo cambietty1
user1974

0

Disparo total en la oscuridad ya que no tengo una configuración RAID 5 para probar: tal vez agregue una línea con

chmod -w /sys/block/md0/md/stripe_cache_size

en rc.local para eliminar los permisos de escritura después de configurarlo. ¿Tal vez eso evitará que se cambie en otro lugar?


Buena idea, pero parece que algo está mal en el proceso de arranque de Ubuntu: -S Intentaré publicar hoy.
BarsMonster

No ayudó: - |
BarsMonster

0

Adjuntar

echo 8192 > /sys/block/mdX/md/stripe_cache_size

a /etc/rc.local.


Vea la pregunta: esto es lo primero que he intentado, y no funcionó, aparentemente md-driver se reinició o algo después de que se ejecutó rc.local.
BarsMonster

-1

Esta página sugiere que el tamaño de la franja (o ancho) debería haberse configurado cuando se configuró la fs. Tal vez tunefs podría ayudar aquí?


2
Es una cosa totalmente diferente. El tamaño de la caché de bandas es una configuración para el controlador del kernel MD en la memoria para la caché de bandas.
BarsMonster
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.