Schrift
[thread]9793[/thread]

major + minor faults: sar -B

Leser: 1


<< >> 8 Einträge, 1 Seite
bloonix
 2006-06-02 19:34
#95649 #95649
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Leute,

in der Manpage von sar steht folgendes zu major + minor faults:

Quote
fault/s
Number of page faults (major + minor) made by the system per second (post 2.5 kernels only).
This is not a count of page faults that generate I/O, because some page faults can be resolved
without I/O.


Aber was sind major + minor faults genau? Unter "faults" verstehe ich
Fehler, aber das scheint hier nicht zuzutreffen. Ich habe auch schon
gesucht, aber keine gute Doku hierzu gefunden.

Weiß jemand, was da genau passiert?

Gruß,
opi
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
GwenDragon
 2006-06-02 19:43
#95650 #95650
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Schau mal unter Wikipedia:Page_fault
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

murphy
 2006-06-02 19:51
#95651 #95651
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ein Page Fault tritt auf, wenn ein Programm versucht, auf eine virtuelle Speicherstelle zuzugreifen, der keine physikalische Speicherstelle zugeordnet ist. Das kann diverse Gründe haben, zum Beispiel dass der Kernel die betreffende Speicherseite in den Swap ausgelagert hat, woraufhin sie dann wieder in den Speicher geladen und neu gemapt wird, oder dass der Programmierer Mist gebaut hat, woraufhin der Kernel dem Programm ein SIGSEGV schickt. Insbesondere im Falle augelagerter Seiten ist ein Page Fault also kein Fehler im eigentlichen Sinne.

Soweit ich weiß, bezeichnet man nun genau jene Page Faults, die Festplattenzugriffe erzeugen -- also zum Beispiel die Swap Zugriffe oder das Nachladen von Segmenten einer ausführbaren Datei -- als major Page Faults, wohingegen minor Page Faults solche sind, bei denen nur Speicherzugriffe stattfinden -- also zum Beispiel bei der automatischen Allokation neuer Seiten für den Stack eines Programmes.
When C++ is your hammer, every problem looks like your thumb.
bloonix
 2006-06-02 19:52
#95652 #95652
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=GwenDragon,02.06.2006, 17:43]Schau mal unter Wikipedia:Page_fault[/quote]
hi gwen, das ist fein! danke. wie steht das denn jetzt mit minor und major
in verbindung?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2006-06-02 20:01
#95653 #95653
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
@murphy, danke! woher hast du das? Selbst gewußt oder gerade aus einer
Doku gelesen? wenn aus einer Doku, dann würde mich der Link interessieren...

Also ich habe folgende Ausgabe:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
17:27:12     pgpgin/s pgpgout/s   fault/s  majflt/s
17:27:13         0.00      0.00   3150.50      0.00
17:27:14         0.00      0.00   3161.39      0.00
17:27:15         0.00      0.00   3229.29      0.00
17:27:16         0.00    166.34   3159.41      0.00

fault/s
  Number of page faults (major + minor) made by the system per second
  (post  2.5  kernels  only). This is not a count of page faults that generate
  I/O, because some page faults can be resolved without I/O.

majflt/s
  Number of major faults the system has made per second, those which
  have required loading a memory page from disk (post 2.5 kernels only).


Das heißt mit anderen Worten, dass die Werte unter "faults" alles reine
"minor faults" sind, also allokierter Hauptspeicher für Programme. Wenn
die "majflt/s" größer Null wären, dann müsste ich "faults minus majflt/s"
rechnen, um die tatsächlichen "minor faults" herauszubkekommen?

Edit:
Wie groß ist eine Page auf gängigen Linuxsystemen? 1 Byte?\n\n

<!--EDIT|opi|1149264406-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
GwenDragon
 2006-06-02 20:45
#95654 #95654
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Das Paging hängt von der Memory Management Unit (MMU) ab und die Pagegröße wohl auch.

angeblich gibt es da den Befehl pagesize.
http://www.computerhope.com/unix/upagesiz.htm

Das ist wohl 4096 Bytes.\n\n

<!--EDIT|GwenDragon|1149266925-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

bloonix
 2006-06-02 20:54
#95655 #95655
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
@gwen, den befehl pagesize gibt es nicht, aber du hast mit 4096 bytes
recht... das wären dann also knapp 12 mb bei 3000 pages, wenn meine
rechnung richtig ist... vielen lieben dank =)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
nepos
 2006-06-03 01:11
#95656 #95656
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Die Pagesize haengt normal vom Prozessor ab. Normal hat eine Page 4 kByte.
Das mit den Page Faults geht sogar noch weiter. Wenn du ein Programm startest, werden zwar die Pages im Speicher reserviert, aber erstmal als ungueltig markiert. Erst wenn das Programm ans Laufen kommt, wird da wirklich was in den Speicher gelesen. Deshalb wirds beim Starten eines Programmes sehr viele Page Faults geben, spaeter sollte es dann normal nicht mehr soviele geben.
Betriebssysteme sind hier oft faul. Deshalb wird nur in den Speicher geladen, was auch wirklich gebraucht wird.
Wenn dich das Thema genauer interessiert, im Skript zu der Betriebssysteme-Vorlesung bei mir an der FH steht dazu mehr: http://www.cs.fhm.edu/~vogt/os/os_index.htm

Major Page Faults scheinen nun solche zu sein, die wirklich einen Plattenzugriff erfordern. Macht ja auch Sinn, denn die sind dann mal richtig teuer.
Minor Page Faults koennten zum Beispiel nach einem Fork auftreten. Der Childprozess erbt die Page Table des Parents mit Copy-on-Write-Bit gesetzt (Das OS ist faul, es tut erst was, wenns unbedingt sein muss ;)). Wenn nun das Child was in ne Seite schreibt, loest das gesetzte Copy-on-Write-Bit aus, dass die Speicherverwaltung diese Seite nun erstmal wirklich kopiert, damit das Child nicht dem Parent ins Gehege kommt. Da das rein im Speicher ablaeuft isses fuer mich nicht so teuer wie ein I/O-Zugriff und das koennte dann wohl ein Minor Page Fault sein.

Ich hoff, ich hab das aus dem Kopf noch halbwegs korrekt rausgebracht ;)
<< >> 8 Einträge, 1 Seite



View all threads created 2006-06-02 19:34.