Seitenfehler?!



  • Hallo zusammen,

    ich verwende den c++ Builder 5 unter win 2K Prof.. Bei einer Applikation
    treten seitdem größere double Arrays [1500] übertragen werden unmengen
    von Seitenfehlern auf: 1400Stk alle 3Sekunden. So summiert sich das immer
    weiter, nach einem Tag 290000 !!! 😮
    Was kann ich tun um dieses problem zu beseitigen oder abzumildern? Könnten
    diese "Seitenfehler" die Funktionstüchtigkeit meiner Applikation beeinträchtigen? 😕

    Danke im vorraus



  • Was sind für dich "Seiten Fehler"?

    -junix



  • Windows Task-Manager -> Ansicht -> Spalten auswählen -> Seitenfehler aktivieren
    ich glaube das meint Bena.



  • Achso Page-Misses?

    -junix



  • Hallo,

    öhm ich dacht das der Begriff "Seitenfehler" eindeutig währe?!

    Jaich meine das was mir der Taskmanager als "Fehler" deklariert,
    aber was ist der Hintergrund für diesen Fehler? Aus dem Internet
    geht hervor das dieser Fehler bei einem Zugriff auf eine ausgelagerte
    Seite ist, diese aber ungültig ist?!
    Was soll das?! Wie kann ich dieses aus meinem Programm heraus beeinflussen?

    Gruß
    Bena



  • Also ich kenne Seitenfehler (page faults) aus dem Bereich Caching. Ich denke,
    das ist auch im Task-Manager gemeint. "Gefährlich" sind Seitenfehler nicht.
    Das Betriebssystem (oder das OS?) legt im Cache sog. Seiten an. Eine Seite
    ist einfach eine Größeneinheit, also ein bestimmte Anzahl von Bytes. Im Cache
    werden - wie jeder weiß - Daten, auf die mindestens einmal zugegriffen wurde,
    gespeichert. Da der Cache natürlich nicht groß genug ist, um alle Daten, die
    eine (oder mehrere Anwendungen) im Lauf der Zeit benötigen, werden ständig
    Daten (oder besser Seiten) ausgetauscht.
    Benötigt Deine Anwendung bestimmte Daten und befinden sich diese Daten gegen-
    wärtig nicht im Cache, tritt dieser Seitenfehler auf. Die Konsequenz ist, daß
    zunächst der Hauptspeicher befragt wird, ob die Daten dort vorhanden sind.
    Sind sie dort auch nicht, dann wird die Festplatte befragt.
    Die Idee dahinter ist, daß der Cache sehr schnell, der Hauptspeicher noch
    ziemlich schnell und die Festplatte langsam ist.
    Direkt beeinflussen kann man die Häufigkeit von Seitenfehlern meines Wissens
    nicht. Du müßtest ja auch wissen nach welchen Regeln Seiten weggeworfen werden.
    Vermutlich kannst Du aber indirekt Seitenfehler produzieren. Wenn Du einfach
    große Datenmengen liest, ist ein Seitenfehler sehr wahrscheinlich - weil der
    Cache nicht alle Daten aufnehmen kann.

    Ich hoffe, das stimmt jetzt wenigstens halbwegs 🙂

    Gruß,

    Alexander



  • Hi,

    aber wiso nennt man dieses dann SeitenFEHLER, denn ein nichtvorhanden
    eines bestimmten Datensatzes auf einem Speicherlevel, kann wohl kaum als
    Fehler bezeichnet werden? 🙄

    Also sollte mich das stetige starke Anwachsen dieses Wertes im Taskmanager nicht stören.... 😮
    Kann man den Speicherhaushalt durch verändern der Prozess Priorität nicht
    verändern: Eine Umschaltung auf "Echtzeit" scheint keinen Einfluß zu haben...

    Mmmhhh, sonst noch Anregungen?

    Gruß
    Bena



  • Bena schrieb:

    aber wiso nennt man dieses dann SeitenFEHLER, denn ein nichtvorhanden
    eines bestimmten Datensatzes auf einem Speicherlevel, kann wohl kaum als
    Fehler bezeichnet werden? 🙄

    Du hast recht. Das ist eine unglückliche Formulierung und rührt wahrscheinlich
    von der englischen Bezeichnung. Man könnte es aber mit dem FEHLEN einer Seite
    erklären. Im Bereich des virtuellen Speichers gibt es übrigens für den analogen
    Sachverhalt das Wort "miss" - also "Verfehlen". Ein Treffer ist dort ein "hit".

    Bena schrieb:

    Also sollte mich das stetige starke Anwachsen dieses Wertes im Taskmanager nicht stören.... 😮

    Ein stetiges Anwachsen läßt sich nicht verhindern. Es kann ja nicht passieren,
    daß bereits vergangene Seitenfehler plötzlich im Nachhinein wieder verschwinden.
    Was Dich eher stören könnte, ist die Rate, also wie schnell der Wert ansteigt.
    Das ist ja ein Maß dafür, wie oft auf den (langsameren) Hauptspeicher oder
    sogar auf die (sehr langsame) Festplatte zugegriffen werden muß.

    Bena schrieb:

    Kann man den Speicherhaushalt durch verändern der Prozess Priorität nicht
    verändern: Eine Umschaltung auf "Echtzeit" scheint keinen Einfluß zu haben...

    Wenn der Cache voll ist, hilft Dir auch nichts, daß er mit hoher Priorität
    voll ist.
    Die einzige Möglichkeit wäre, Deine Datenzugriffe anzupassen. Ob auch Programm-
    teile im Cache gehalten werden, weiß ich nicht. Das könntest Du vermutlich
    noch schwerer beeinflussen.
    Wenn Du Dich für das Gebiet interessierst, könnte ich Dir ein Buch nennen,
    das sich unter anderem auch damit beschäftigt:
    D.A. Patterson, J.L.
    Hennessey, "Computer Organization and Design: The Hardware/Software Interface",
    Second Edition, San Francisco, 1997

    Gruß,

    Alexander



  • Bena,

    Bena schrieb:

    aber wiso nennt man dieses dann SeitenFEHLER, denn ein nichtvorhanden
    eines bestimmten Datensatzes auf einem Speicherlevel, kann wohl kaum als
    Fehler bezeichnet werden?

    das hängt vom Betrachter ab. Der Cache ist (stark vereinfacht) ein schnelles Array, das Inhalte des Hauptspeichers vorhält. Wenn jetzt der Prozessor ankommt und sagt "Gib mal die Daten von Adresse 42", dann kann der Cache u.U. nicht anders, als "FEHLER, sowas habe ich hier nicht! Hol dir doch dein Kram selbst aus dem Hauptspeicher." zurückzupöbeln - blumig gesprochen...
    Aber der Tipp mit den Seiten-Fehlern im Taskmanager war mit total neu. Wieder was gelernt - danke.



  • Alexander Kempf schrieb:

    Du hast recht. Das ist eine unglückliche Formulierung und rührt wahrscheinlich
    von der englischen Bezeichnung. Man könnte es aber mit dem FEHLEN einer Seite
    erklären.

    Aber die englische Bezeichnung page fault ist auch nicht freundlicher 😉
    Ein Page Fault tritt auf, wenn ein Prozess versucht, eine Speicherstelle auf einer ausgelagerten Seite aufzurufen. Das OS fängt diese Exception ab, lagert die Seite ein, und gibt die Kontrolle an den Prozess zurück.
    Mit dem Speichercache hat das nichts zu tun, da der erstens nicht nach Seiten organisiert ist und zweitens ohne Eingriff des Betriebssystems arbeitet.



  • Bashar schrieb:

    Mit dem Speichercache hat das nichts zu tun, da der erstens nicht nach Seiten organisiert ist und zweitens ohne Eingriff des Betriebssystems arbeitet.

    So war das auch nicht gemeint. Das war nur ein Beispiel für einen Cache, der eine Anforderung nicht bedienen kann - unabhängig davon, ob das der Speichercache oder der Seitencache im Hauptspeicher ist.
    Aber Du hast natürlich recht. Wahrscheinlich gibt es keinen Speichercache, der ganze Seiten vorhält (oder vielleicht doch?) ...



  • Soweit ich weiß ist der Cache in "Lines" unterteilt, jeweils 64 Byte oder so ...
    BTW nochwas zum Page Fault: http://www.ctyme.com/intr/rb-0063.htm


Log in to reply