¿Cuántos datos lee Linux en un arranque promedio?

9

Me pregunto cuántos datos en total lee un sistema Linux vanilla recién instalado (como CentOS 5.10 de 32 bits) para llegar a un indicador de consola virtual. Ya sabes, leyendo todos los archivos de configuración, cargando binarios, imágenes del núcleo, etc.

Estoy buscando estimaciones de orden de magnitud. Soy consciente de que el arranque de Linux varía mucho con respecto a los detalles del proceso. ¿Estamos hablando de 10Mb? 100Mb? 1Gb?

amn
fuente
55
¿Porque lo preguntas?
Zoredache
2
La variabilidad es (puede ser) órdenes de magnitud entre sistemas: cargar el kernel y los controladores es la fracción más pequeña del proceso de arranque, y los scripts de inicio en un sistema pueden hacer literalmente cualquier cosa antes de obtener un mensaje de inicio de sesión. Explique la situación con la que se enfrenta en términos de un problema real y práctico que podemos ayudarlo a resolver.
voretaq7
1
@amn ¿Puedes poner la razón en tu pregunta inicial? Ayudará con el contexto. Otra razón por la que las personas harían una pregunta similar es si están usando almacenamiento de ciclo limitado. Más detalles siempre es mejor.
ewwhite
8
@ewwhite Estoy arrancando cientos de máquinas Linux, y el 95% del contenido de su sistema es idéntico y seguirá siendo idéntico: las máquinas son clones. Me gustaría descargar la parte compartida idéntica / de solo lectura del sistema de archivos, a un almacenamiento NFS, montarlo desde allí y arrancar así. Solo una parte del sistema de archivos que se puede escribir, como / var, / tmp y / home, permanecerá local en cada máquina. Dado que potencialmente cientos de máquinas pueden arrancar simultáneamente como parte de un "clúster", necesito estimar si el enlace de almacenamiento NFS al que se accede será un cuello de botella durante el arranque.
amn
55
I need to estimate...luego haz uno y mídelo.
symcbean

Respuestas:

8

Instale un sistema, inícielo y consulte las estadísticas de la capa de bloques, por /sys/block/${DEV}/statejemplo /sys/block/sda/stat.

Citando de la documentación :

El archivo de estadísticas consta de una sola línea de texto que contiene 11 valores decimales separados por espacios en blanco. Los campos se resumen en la siguiente tabla y se describen con más detalle a continuación:

Name            units         description
----            -----         -----------
read I/Os       requests      number of read I/Os processed
read merges     requests      number of read I/Os merged with in-queue I/O
read sectors    sectors       number of sectors read
read ticks      milliseconds  total wait time for read requests
write I/Os      requests      number of write I/Os processed
write merges    requests      number of write I/Os merged with in-queue I/O
write sectors   sectors       number of sectors written
write ticks     milliseconds  total wait time for write requests
in_flight       requests      number of I/Os currently in flight
io_ticks        milliseconds  total time this block device has been active
time_in_queue   milliseconds  total wait time for all requests

leer sectores, escribir sectores

Estos valores cuentan el número de sectores leídos o escritos en este dispositivo de bloque. Los "sectores" en cuestión son los sectores UNIX estándar de 512 bytes, no cualquier tamaño de bloque específico de dispositivo o sistema de archivos. Los contadores se incrementan cuando se completa la E / S.

Puede usar esta línea para obtener la cantidad de bytes más fácilmente:

awk '{printf("read %d bytes, wrote %d bytes\n", $3*512, $7*512)}' /sys/block/vda/stat

Resultados para Scientific Linux 6.1 i386

Probé esto en una máquina virtual KVM / qemu que ejecuta Scientific Linux 6.1 i386 (que es similar a RHEL). Se habilitaron los siguientes servicios: acpid, auditd, crond, network, postfix, rsyslog, sshd y udev-post. El intercambio está en un disco separado, por lo que no se tiene en cuenta.

Las estadísticas para 85 botas, tomadas de forma remota con SSH un par de segundos después de que apareciera la solicitud de inicio de sesión, fueron:

    Name            Median   Average   Stdev
    -------------   ------   -------   -----
    read I/Os       1920     1920.2    2.6
    read merges     1158     1158.4    1.8
    read sectors    85322    85330.9   31.9
 >> read MiBytes    41.661   41.665    0.016
    read ticks      1165     1177.2    94.1
    write I/Os      33       32.6      1.7
    write merges    64       59.6      7.4
    write sectors   762      715.2     70.9
 >> write MiBytes   0.372    0.349     0.035
    write ticks     51       59.0      17.4
    in_flight       0        0.0       0.0
    io_ticks        895      909.9     57.8
    time_in_queue   1217     1235.2    98.5

El tiempo de arranque fue de unos 20 segundos.

Cristian Ciupitu
fuente
2
Tenga en cuenta que esto solo parece darle la demanda de transferencia (cantidad), no la demanda de rendimiento (tasa). Sin embargo, puede dividir por el tiempo de actividad para obtener un número promedio.
voretaq7
15

Usted dice en sus comentarios que está evaluando un entorno de arranque de red / raíz de red.

Lo primero que debe tener en cuenta es que no existe tal cosa como "vainilla" : no va a ejecutar CentOS 5.10 de inmediato con cero cambios (si cree que está engañándose a sí mismo: NFS Root ya está al menos fresa, rayando en pistacho).

Si desea una respuesta para su entorno específico (que es lo que realmente cuenta), necesitará configurar un servidor NFS y una máquina cliente, iniciarlo y medir:

  1. La transferencia (cantidad)
  2. El rendimiento (tasa)

Ambos valores serán críticamente importantes para el rendimiento. Probablemente también desee configurar varios clientes en algún momento y simular el uso normal del sistema para ver qué tipo de demanda de estado estable ponen en su servidor / red NFS cuando las personas usan los sistemas como lo harían en su día a día trabajo.

Ver también: Nuestra serie sobre Planificación de la capacidad : no hablamos específicamente sobre NFS, pero se aplican los principios generales de "Construirlo, probarlo, enfatizarlo".

voretaq7
fuente
1
Si hay helado de vainilla, ¡hay Linux de vainilla! ;-) En serio, sin embargo, es un CentOS 5.10 bastante inalterado, y todo lo que se modificó es parte del sistema de archivos grabable, que no se montará desde NFS, por lo que no es un factor: sí, hay una gigantesca base de datos de Postgres en / var / lib pero / var no está montado desde NFS pero está en el disco de inicio físico local. Y si quisiera hacer un perfil, no estaría haciendo la pregunta aquí :-)
amn
10
@amn Siento que no quieras hacer perfiles, pero debes hacer lo que tienes que hacer: no podemos sacar los números aplicables de nuestros traseros por ti. Su solución (raíz NFS) es sólida y probada en el tiempo, y honestamente, probablemente pueda implementarla ciega sin problemas (decenas de miles de entornos de Sun Microsystems se implementaron ciegamente así en el apogeo de la raíz NFS y el arranque en red Solaris y funcionó muy bien). Si le preocupa el rendimiento, tendrá que hacer un perfil para determinar la demanda y los cuellos de botella para su entorno específico; esa es solo la forma del universo.
voretaq7
+1 para fresa
alexyorke
1
@ voretaq7 No puedo discutir con el argumento del perfil, y nunca lo hice. Solo quería lo mejor antes de arremangarme y configurar el NFS. Gracias por tu valioso aporte.
amn