opi: Linux: minor und major faults

Hallo,

kennt jemand die genaue Bedeutung der minor und major faults auf einem Linuxsystem?

Leider habe ich keine ausreichenden Beschreibungen gefunden und die manpage (man sar) gibt mir leider auch keine genaue Auskunft, ausser dass es sich um Lesevorgänge von Platte handelt, aber wie genau sind die Begriffe zu verstehen?

Beim rumstöbern mit Google bin ich auf Meinungen gestoßen, dass es sich bei major faults um Lesevorgänge direkt von Platte handelt und minor faults die cache hits angibt, wobei das lesen von Platte nicht notwendig war ...

Ist das so richtig?

Greez,
opi

--
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|
  1. hallo opi,

    kennt jemand die genaue Bedeutung der minor und major faults auf einem Linuxsystem?

    Beides sind "Ausnahmefehler". Major faults sind (so etwas wie) schwerwiegende Ausnahmefehler bei schlecht programmierter Software. Beispielsweise werden falsche Speicheradressen angefordert oder es kommt zu (Speicher-)Adreßkonflikten, weil ein Prozeß von einem anderen gestört wird und Ähnliches. Minor faults sind geringere Programmierfehler, die nicht unbedingt zu Prozeßabbruch oder Blockierung des Systems führen müssen. Beides kann und muß man gelegentlich bei der Programmierung in C berücksichtigen/beeinflussen.

    Leider habe ich keine ausreichenden Beschreibungen gefunden und die manpage (man sar) gibt mir leider auch keine genaue Auskunft

    Ich weiß nicht, in welchem Zusammenhang du über diese beiden Begriffe gesolpert bist, und ich weiß auch nicht, auf welche manualpage du dich hier beziehst. Beide technische Ausdrücke lassen sich meines Wissens nicht irgendeinem bestimmten Konsolölenbefehl zuordnen, könnten aber in mehreren manualpages auftauchen. Alles, was beispielsweise mit Shell-Scripting zusammenhängt, müßte wahrscheinlich Hinweise auf solche Fehlermeldungen enthalten.

    ausser dass es sich um Lesevorgänge von Platte handelt

    Das ist eine Möglichkeit, aber sicher nicht das einzige Problem, bei dem es zu "Ausnahmefehlern" kommen kann.

    Beim rumstöbern mit Google bin ich auf Meinungen gestoßen, dass es sich bei major faults um Lesevorgänge direkt von Platte handelt und minor faults die cache hits angibt, wobei das lesen von Platte nicht notwendig war ...

    Ich glaube nicht, daß das als Erklärung ausreicht. Eventuell findest du http://www.ultimate-science.de/ProzesseV1.1.htm ganz aufschlußreich.

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph,

      kennt jemand die genaue Bedeutung der minor und major faults auf einem Linuxsystem?

      Beides sind "Ausnahmefehler". Major faults sind (so etwas wie) schwerwiegende Ausnahmefehler bei schlecht programmierter Software. Beispielsweise werden falsche Speicheradressen angefordert [...]

      hast Du hier an "segmentation faults" gedacht? Deine Erklärung passt eher dazu.

      [...]

      Beim rumstöbern mit Google bin ich auf Meinungen gestoßen, dass es sich bei major faults um Lesevorgänge direkt von Platte handelt

      Ja. Beachte aber, was für Lesevorgänge. Es handelt sich hier _nicht_ um normale Festplattenleseoperationen wie das Lesen einer Datei von Festplatte, es geht prinzipiell um Speicherzugriffsfehler, sogenannte "page faults". D.h. die angeforderte virtuelle Speicherseite befindet sich nicht im physischen Hauptspeicher (zumindest bei major faults). Bei virtueller Speicherverwaltung sind Seitenfehler (unter diesem Begriff findest Du sie unter Windows im Systemmonitor bzw. der Leistungskonsole) völlig normal und einkalkuliert.

      und minor faults die cache hits angibt, wobei das lesen von Platte nicht notwendig war ...

      zweiter Teil des Satzes ja, erster Teil nicht ausreichend, siehe unten angegebenen Link.

      Ich glaube nicht, daß das als Erklärung ausreicht. Eventuell findest du http://www.ultimate-science.de/ProzesseV1.1.htm ganz aufschlußreich.

      Nö, fand ich zumindest nicht. Ich fand http://rus-linux.net/MyLDP/BOOKS/VirtMem/node46.html viel aufschlussreicher.

      Freundliche Grüße

      Vinzenz

      1. hallo Vinzenz,

        Major faults sind (so etwas wie) schwerwiegende Ausnahmefehler
        hast Du hier an "segmentation faults" gedacht?

        Jein. Ich habe allerdings eine Weile überlegt und nachgeblättert, wo denn nun die Unterschiede liegen.

        es geht prinzipiell um Speicherzugriffsfehler, sogenannte "page faults"

        Korrekt.

        Ich fand http://rus-linux.net/MyLDP/BOOKS/VirtMem/node46.html viel aufschlussreicher.

        Oh, kannte ich noch nicht. Allerdings hab ich mir in meinem Archiv nur Adressen von deutschsprachigen Seiten notiert.

        Grüße aus Berlin

        Christoph S.

        1. Hallo Christoph,

          es geht prinzipiell um Speicherzugriffsfehler, sogenannte "page faults"

          Korrekt.

          Beides sind "Ausnahmefehler". Major faults sind (so etwas wie) schwerwiegende Ausnahmefehler bei schlecht programmierter Software.

          Nein, eben nicht. Major faults treten auch bei hervorragend programmierter Software auf. Ein "major fault" heißt doch nur, dass sich die angeforderte Speicherseite nicht im physischen Speicher befindet, sondern eben durch das Paging (Linux verwendet Demand Paging. Dort bitte auch den Abschnitt über das "Working Set" lesen, oder besser gleich den ganzen Artikel.

          Beispielsweise werden falsche Speicheradressen angefordert

          das wäre ein "segmentation fault", kein "page fault".

          [...] Minor faults sind geringere Programmierfehler, die nicht unbedingt zu Prozeßabbruch oder Blockierung des Systems führen müssen.

          Nein, hier muss nur (aus verschiedenen Gründen) die Speicherseite _nicht_ von der Festplatte gelesen werden.

          Beides kann und muß man gelegentlich bei der Programmierung in C berücksichtigen/beeinflussen.

          Ungeschickte Programmierung kann die Häufigkeit von "page faults" erhöhen, ja.

          Freundliche Grüße

          Vinzenz

          1. hehe Vinzenz,

            Beides sind "Ausnahmefehler"
            Nein, eben nicht.

            Jetzt zitierst du das vorvorherige posting, und da hatten wir uns ja über den "Stellenwert" dieser Aussage bereits im vorherigen posting geeinigt, dachte ich.

            Major faults treten auch bei hervorragend programmierter Software auf. Ein "major fault" heißt doch nur, dass sich die angeforderte Speicherseite nicht im physischen Speicher befindet

            Das bestreite ich doch gar nicht.

            Beispielsweise werden falsche Speicheradressen angefordert
            das wäre ein "segmentation fault", kein "page fault".

            Grrrrrrr, du betreibst hier ein "citation fault" ;-)

            Beides kann und muß man gelegentlich bei der Programmierung in C berücksichtigen/beeinflussen.
            Ungeschickte Programmierung kann die Häufigkeit von "page faults" erhöhen, ja.

            Naja, wenigstens ein versöhnliches Schlußwort.

            Grüße aus Berlin

            Christoph S.

            1. Hallo Christoph,

              Jetzt zitierst du das vorvorherige posting, und da hatten wir uns ja über den "Stellenwert" dieser Aussage bereits im vorherigen posting geeinigt, dachte ich.

              Hmm, wie einigst Du Dich mit wem mit einem klaren "Jein"?

              Beispielsweise werden falsche Speicheradressen angefordert
              das wäre ein "segmentation fault", kein "page fault".

              Grrrrrrr, du betreibst hier ein "citation fault" ;-)

              Da meines Wissens die Forumshauptdatei im Hauptspeicher gehalten wird, sollte es ein

              minor citation fault

              sein, da das Posting nicht von der Festplatte gelesen werden muss. Dabei gehe ich davon aus, dass CK dafür sorgt, dass es weder zu einem "major fault" noch einem "minor fault" kommt. Beides wäre der Forumsperformance abträglich.

              Naja, wenigstens ein versöhnliches Schlußwort.

              Klar, wie meistens.

              Freundliche Grüße

              Vinzenz