Wie viele Daten liest Linux beim durchschnittlichen Start?

9

Ich frage mich, wie viele Daten insgesamt ein frisch installiertes Vanilla Linux-System (wie 32-Bit CentOS 5.10) liest, um zu einer virtuellen Konsolen-Shell-Eingabeaufforderung zu gelangen. Sie können alle Konfigurationsdateien lesen, Binärdateien, Kernel-Images usw. laden.

Ich suche nach Schätzungen in der Größenordnung. Mir ist bekannt, dass der Linux-Start in Bezug auf Details des Prozesses sehr unterschiedlich ist. Sprechen wir 10Mb? 100 MB? 1 GB?

amn
quelle
5
Warum fragst du?
Zoredache
2
Die Variabilität beträgt (kann) Größenordnungen zwischen den Systemen - das Laden des Kernels und der Treiber ist der kleinste Teil des Startvorgangs, und die Init-Skripte auf einem System können buchstäblich alles tun , bevor Sie eine Anmeldeaufforderung erhalten. Bitte erläutern Sie die Situation, mit der Sie zu tun haben, anhand eines tatsächlichen, praktischen Problems, das wir Ihnen bei der Lösung helfen können.
voretaq7
1
@amn Kannst du den Grund in deine erste Frage einfügen? Es wird mit dem Kontext helfen. Ein weiterer Grund, warum Leute eine ähnliche Frage stellen würden, ist, wenn sie zyklisch begrenzten Speicher verwenden. Mehr Details sind immer besser.
ewwhite
8
@ewwhite Ich boote Hunderte von Linux-Maschinen, und 95% ihrer Systeminhalte sind identisch und bleiben identisch - die Maschinen sind Klone. Ich möchte den identischen / schreibgeschützten gemeinsam genutzten Teil des Dateisystems in einen NFS-Speicher auslagern, von dort aus mounten und so booten. Nur beschreibbare Teile des Dateisystems, wie / var, / tmp und / home, bleiben auf jedem Computer lokal. Da möglicherweise hundert Computer gleichzeitig als Teil eines "Clusters" booten, muss ich abschätzen, ob die NFS-Speicherverbindung, auf die zugegriffen wird, beim Booten ein Engpass darstellt.
amn
5
I need to estimate...dann mach eins und messe es.
Symcbean

Antworten:

8

Installieren Sie ein System, starten Sie es und überprüfen Sie die Blockschichtstatistiken von /sys/block/${DEV}/statz /sys/block/sda/stat.

Zitat aus der Dokumentation :

Die Statistikdatei besteht aus einer einzelnen Textzeile mit 11 durch Leerzeichen getrennten Dezimalwerten. Die Felder sind in der folgenden Tabelle zusammengefasst und werden nachstehend ausführlicher beschrieben:

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

Sektoren lesen, Sektoren schreiben

Diese Werte zählen die Anzahl der Sektoren, die von diesem Blockgerät gelesen oder in dieses geschrieben wurden. Die fraglichen "Sektoren" sind die Standard-UNIX-512-Byte-Sektoren, keine geräte- oder dateisystemspezifische Blockgröße. Die Zähler werden erhöht, wenn die E / A abgeschlossen ist.

Mit diesem Einzeiler können Sie die Anzahl der Bytes einfacher ermitteln:

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

Ergebnisse für Scientific Linux 6.1 i386

Ich habe dies auf einer virtuellen KVM / qemu-Maschine getestet, auf der Scientific Linux 6.1 i386 (ähnlich wie RHEL) ausgeführt wird. Die folgenden Dienste wurden aktiviert: acpid, auditd, crond, network, postfix, rsyslog, sshd und udev-post. Der Swap befindet sich auf einer separaten Festplatte und wird daher nicht berücksichtigt.

Die Statistiken für 85 Stiefel, die einige Sekunden nach Erscheinen der Anmeldeaufforderung mit SSH aus der Ferne erstellt wurden, lauteten:

    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

Die Startzeit betrug ca. 20 Sekunden.

Cristian Ciupitu
quelle
2
Beachten Sie, dass dies nur den Transferbedarf (Menge) und nicht den Durchsatzbedarf (Rate) zu geben scheint. Sie können jedoch durch die Betriebszeit dividieren, um eine durchschnittliche Anzahl zu erhalten.
voretaq7
15

In Ihren Kommentaren sagen Sie, dass Sie eine Netboot- / Netzwerk-Root-Umgebung evaluieren.

Das erste, was Sie wissen müssen, ist, dass es kein "Vanille" gibt - Sie werden CentOS 5.10 nicht sofort ohne Änderungen ausführen (wenn Sie glauben, dass Sie sich selbst täuschen: NFS Root ist bereits vorhanden zumindest Erdbeere, die an Pistazien grenzt).

Wenn Sie eine Antwort für Ihre spezifische Umgebung wünschen (was wirklich zählt), müssen Sie einen NFS-Server und einen Client-Computer einrichten, starten und messen:

  1. Die Überweisung (Menge)
  2. Der Durchsatz (Rate)

Beide Werte sind für die Leistung von entscheidender Bedeutung. Möglicherweise möchten Sie auch irgendwann mehrere Clients einrichten und die normale Nutzung des Systems simulieren, um festzustellen, welche Anforderungen an den NFS-Server / das NFS-Netzwerk gestellt werden, wenn Benutzer die Systeme wie im Alltag verwenden Arbeit.

Siehe auch: Unsere Reihe zur Kapazitätsplanung - Wir sprechen nicht speziell über NFS, aber es gelten die allgemeinen Prinzipien von "Erstellen, Testen, Betonen".

voretaq7
quelle
1
Wenn es Vanilleeis gibt, gibt es Vanille-Linux! ;-) Im Ernst, es ist ein ziemlich unverändertes CentOS 5.10, und was auch immer geändert wurde, ist Teil des beschreibbaren Dateisystems, das nicht von NFS gemountet wird, also ist es kein Faktor - ja, es gibt eine gigantische Postgres-Datenbank in / var / lib but / var wird nicht von NFS gemountet, sondern befindet sich auf der lokalen physischen Startdiskette. Und wenn ich es profilieren wollte, würde ich die Frage hier nicht stellen :-)
amn
10
@amn Es tut mir leid, dass Sie keine Profilerstellung durchführen möchten, aber Sie müssen das tun, was Sie tun müssen - wir können für Sie keine zutreffenden Zahlen aus unseren Hintern ziehen. Ihre Lösung (NFS-Root) ist solide und bewährte Lösung, und ehrlich gesagt können Sie sie wahrscheinlich ohne Probleme blind bereitstellen (Zehntausende von Sun Microsystems-Umgebungen wurden in der Blütezeit von NFS-root und Netbooting so blind bereitgestellt Solaris & hat super funktioniert). Wenn Sie sich jedoch Gedanken über die Leistung machen, müssen Sie eine Profilerstellung durchführen, um die Anforderungen und Engpässe für Ihre spezifische Umgebung zu ermitteln - das ist genau der Weg des Universums.
voretaq7
+1 für Erdbeere
Alexyorke
1
@ voretaq7 Kann nicht mit dem Profilierungsargument streiten und hat es nie getan. Ich wollte nur das nächstbeste, bevor ich die Ärmel hochkremple und das NFS einrichte. Vielen Dank für Ihre wertvollen Beiträge.
Amn