Quanti dati legge Linux all'avvio medio?


9

Mi chiedo quanti dati in totale legge un sistema Linux vanilla appena installato (come CentOS 5.10 a 32 bit) per ottenere un prompt della shell della console virtuale? Sai, leggere tutti i file di configurazione, caricare i binari, l'immagine del kernel, ecc.

Sto cercando stime dell'ordine di grandezza. Sono consapevole che l'avvio di Linux varia notevolmente per quanto riguarda i dettagli del processo. Stiamo parlando di 10 Mb? 100Mb? 1gb?


5
Perché stai chiedendo?
Zoredache,

2
La variabilità è (può essere) un ordine di grandezza tra i sistemi: il caricamento del kernel e dei driver è la frazione più piccola del processo di avvio e gli script init su un sistema possono fare letteralmente qualsiasi cosa prima di ottenere un prompt di login. Spiega la situazione che stai affrontando in termini di un problema reale e pratico che possiamo aiutarti a risolvere.
voretaq7,

1
@amn Puoi mettere il motivo nella tua domanda iniziale? Aiuterà con il contesto. Un altro motivo per cui le persone porterebbero una domanda simile è se stanno usando una memoria a ciclo limitato. Maggiori dettagli sono sempre migliori.
ewwhite

8
@ewwhite Sto avviando centinaia di macchine Linux e il 95% dei loro contenuti di sistema sono identici e rimarranno identici - le macchine sono cloni. Vorrei scaricare la parte identica / di sola lettura del filesystem, su una memoria NFS, montarla da lì e avviarla in quel modo. Solo una parte scrivibile del filesystem, come / var, / tmp e / home, rimarrà locale per ogni macchina. Poiché potenzialmente un centinaio di macchine possono avviarsi contemporaneamente come parte di un "cluster", ho bisogno di stimare se il collegamento di archiviazione NFS a cui si accederà sarà un collo di bottiglia durante l'avvio.
am

5
I need to estimate...quindi eseguine uno e misuralo.
symcbean,

Risposte:


8

Installa un sistema, avvialo e controlla /sys/block/${DEV}/statad es /sys/block/sda/stat. Le statistiche del livello di blocco .

Citando dalla documentazione :

Il file stat è costituito da una singola riga di testo contenente 11 valori decimali separati da spazi bianchi. I campi sono riepilogati nella tabella seguente e descritti più dettagliatamente di seguito:

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

leggi settori, scrivi settori

Questi valori contano il numero di settori letti o scritti su questo dispositivo a blocchi. I "settori" in questione sono i settori standard UNIX da 512 byte, non qualsiasi dimensione di blocco specifica per dispositivo o file system. I contatori vengono incrementati al completamento dell'I / O.

È possibile utilizzare questo one-liner per ottenere più facilmente il numero di byte:

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

Risultati per Scientific Linux 6.1 i386

Ho provato questo su una macchina virtuale KVM / qemu con Scientific Linux 6.1 i386 (che è simile a RHEL). Sono stati abilitati i seguenti servizi: acpid, auditd, crond, network, postfix, rsyslog, sshd e udev-post. Lo swap si trova su un disco separato, quindi non viene preso in considerazione.

Le statistiche per 85 stivali, prese a distanza con SSH un paio di secondi dopo la comparsa del prompt di accesso, erano:

    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

Il tempo di avvio è stato di circa 20 secondi.


2
Si noti che questo sembra fornire solo la domanda di trasferimento (quantità), non la domanda di throughput (tasso). Tuttavia, potresti dividere per il tempo di attività per ottenere un numero medio.
voretaq7,

15

Nei tuoi commenti dici che stai valutando un ambiente root netboot / network.

La prima cosa che devi capire è che non esiste niente come "vaniglia" : non eseguirai CentOS 5.10 immediatamente senza modifiche (se pensi di star illudendo te stesso: NFS Root è già almeno Fragola, tendente al pistacchio).

Se vuoi una risposta per il tuo ambiente specifico (che è ciò che conta davvero) dovrai configurare un server NFS e un computer client, avviarlo e misurare:

  1. Il trasferimento (quantità)
  2. Il throughput (tasso)

Entrambi i valori saranno di fondamentale importanza per le prestazioni. Probabilmente vorrai anche configurare diversi client ad un certo punto e simulare il normale uso del sistema per vedere che tipo di richiesta di stato stazionario hanno messo sul tuo server / rete NFS quando le persone usano i sistemi come farebbero ogni giorno lavoro.

Vedi anche: Le nostre serie sulla Pianificazione della capacità - non parliamo specificamente di NFS, ma si applicano i principi generali di "Costruiscilo, testalo, stress".


1
Se c'è gelato alla vaniglia, c'è vanilla Linux! ;-) Scherzi a parte, è un CentOS 5.10 abbastanza inalterato, e qualunque cosa sia stata modificata fa parte del filesystem scrivibile, quello che non sarà montato da NFS, quindi non è un fattore - sì, c'è un gigantesco database Postgres in / var / lib ma / var non è montato da NFS ma si trova sul disco di avvio fisico locale. E se volessi profilo it, non sarei porre la domanda qui :-)
AMN

10
@amn Mi dispiace che tu non voglia fare la profilazione, ma devi fare quello che devi fare - non possiamo estrarre i numeri applicabili dai nostri mozziconi per te. La tua soluzione (radice NFS) è solida, testata nel tempo e onestamente probabilmente puoi semplicemente implementarla alla cieca senza problemi (decine di migliaia di ambienti Sun Microsystems sono stati implementati ciechi come quelli nel periodo di massimo splendore di NFS-root e Netbooting Solaris e ha funzionato alla grande). Se sei preoccupato per le prestazioni, anche se dovrai fare la profilazione per determinare la domanda e i colli di bottiglia per il tuo ambiente specifico - questo è solo il modo dell'universo.
voretaq7,

+1 per la fragola
alexyorke

1
@ voretaq7 Non posso discutere con l'argomento di profilazione e non l'ho mai fatto. Volevo solo la cosa migliore prima di rimboccarmi le maniche e impostare l'NFS. Grazie per il tuo prezioso contributo.
am
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.