Unterschied

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Peter_Pan123
Beiträge: 117
Registriert: 17.08.2006 17:48:47

Unterschied

Beitrag von Peter_Pan123 » 27.02.2009 07:49:46

Hallo,

was ist eigentlich genau der Unterschied zwischen:

"Preemption Model" im Kernel

und der

"HZ"

Sehe ich es richtig wenn die "HZ" bei einem mehrkern CPU die Geschwindigkeit angibt wie schnell er zwischen den einzelnen CPUs hin und her switchen soll?
Das Preemtion Model beschleunigt das ganze nochmal je nachdem was man auswählt?

Ich habe eben in einem anderen Forum folgendes gefunden (Macht das Sinn?):
"Achja: Allgemein kann man sagen, umso höher die Hz-Zahl im Kernel, umso schneller Reagiert der Computer, aber umsomehr Overhead beim Prozesswechsel ensteht.

Wenn du ganz viele Prozesse laufen hast, und der Scheduler oft wechselt, kann es sein, daß die hälfte der CPU-Zeit mit Prozesswechsel beschäftigt ist. Der Computer ist dann nur noch halb so schnell.

Rechenbeispiel auf der selben CPU:

100 Hz => 9,5 ms pro Prozess
Der Overhead für einen Wechsel sei 0,5ms => 95% der CPU-Leistung stehen tatsächlich zur Verfügung.

1000 HZ => 0,5ms Porzess, 0,5ms Overhead => nur 50 % Leistung

Also kann eine höhere Hz-Zahl die Leistung verringern.

Die Hz-Zahl sollte Proporitional zur CPU-Leistung gewählt werden.

Ich verwende für Desktop-Systeme 300 Hz, für Server würde ich 100 Hz nehmen.

Als Oienteirung würde ich sagen:
100 Hz: 1 GHz Systeme
200 Hz: 2 GHz Systeme
300 Hz: 3 GHz Systeme

(aber: Taktfrequenz ist nicht proportional zur Leistung, also Vorsicht!)"
Macht das Sinn?

Gruß

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: Unterschied

Beitrag von Six » 27.02.2009 13:14:29

Die Hz Zahl hat nichts mit Multi-CPU-Setups zu tun! Die Verteilung der Last auf mehrere CPUs ordnet sich ind as Timer Interrupt System ein, aber das System macht viel mehr. Die Hz Zahl gibt die Frequenz des Timer Interrupts an, d.h. ganz konkret, wie groß die Time Slices sind, die im System für Prozesse zur Verfügung stehen. bei 1000Hz sind die Time Slices 1ms lang, bei 100Hz halt 10ms. Je feiner (also je höher die Frequenz) der Timer Interrupt läuft, umso bessere Latenzzeiten zeigt das System, es wird reaktionsfreudiger. Es gibt einen gewissen Overhead für Timer Interrupts, der natürlich mit der Anzahl der Interrupts anwächst. Nach Ansicht der Kernelentwickler wird dieser Overhead jedoch erst auf sehr langsamen Maschinen interessant, man spricht z. B. von 386ern und frühen 486ern (die ja bekanntlich mit 25MHz liefen). Jede CPU, die mindestens auf Pentium-Niveau liegt, ist schnell genug um den Overhead einfach wegzustecken. Hohe Frequenzen erzeugen jedoch andere Probleme. Je höher die Frequenz, um so schlechter kommen Power-Save Mechnismen zur Geltung. Wirklich brauchbare Ergebnisse erzielt man in diesem Bereich erst ab 100Hz, was aber im normalen Betrieb schon für Ogg/MP3 Playback zu wenig ist und lange Time Slices zur Folge hat. Die meisten Distributionen laufen daher standardmäßig mit 250-300 Hz und vertrauen auf Preemption.

Damit kommen wir zum zweiten Teil deiner Frage: Preemption Model. Nehmen wir an, dein Kernel läuft mit 500Hz, hat also Time Slices von 2ms. Jetzt braucht ein Prozeß 3ms CPU-Zeit, d. h. er verbraucht eine komplette Time Slice und eine halbe. Was machen wir mit der verbleibenden Millisekunde? Der Kernel springt in diese Lücke und weise die Rechenzeit anderweitig zu. Nun lassen sich auch die verschiedenen Preemption Modelle erklären. Die einfachste Art ist, der Kernel wartet einfach, bis ein Prozeß fertig ist und sich mit "Fertig, abputzen" meldet. Stürzt ein Prozeß ab oder braucht länger als geplant, so wird der Kernel also nie oder sehr spät eingreifen. Das kennt man noch von MS Windows 95/98/ME, wo die Maschine anscheinend nichts tuend rumsteht. Dann gibt es mehr oder weniger invasive Methoden, die mehr oder weniger alle so ablaufen: der Kernel guckt in regelmäßigen Abständen (wobei wir wieder bei der Frequenz sind), ob alles in Ordnung ist und stoppt mehr oder weniger rüde Prozesse, die noch nicht fertig sind, um sie dann später wieder anzuschmeißen. Das ist auch das, was wir unter Linux "preemptive" nennen. Hier kommen dann auch die Prioritäten eines Prozeßes ins Spiel, wie viel läßt man dem Prozeß durchgehen, darf er sich in der Warteschlange (dem Scheduler) vordrängeln usw. Bedenke, wir reden hier von Millisekunden, der User bekommt davon im Regelfall nichts mit.
Be seeing you!

Peter_Pan123
Beiträge: 117
Registriert: 17.08.2006 17:48:47

Re: Unterschied

Beitrag von Peter_Pan123 » 27.02.2009 13:28:50

ich hatte es mir gerade einmal durchgelesen und werde es nochmal machen müssen nru gerade keine zeit.

ich bedanke mich erstmal vorweg und habe spontan eine frage:

Wäre es dann also wenn ich es richtig verstanden habe eher sinnvoll einen Server auf 300hz laufen zu lassen um die reaktionsfähigkeit optimal zu halten und dazu low latency als preemption nehmen ?

Gruß

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Unterschied

Beitrag von habakug » 27.02.2009 13:42:24

Hallo!

Inzwischen gibt es da recht feine Einstelmöglichkeiten [1], selbst für einzelne Geräte.

Code: Alles auswählen

less /usr/src/linux/Documentation/block/switching-sched.txt

Gruß, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Peter_Pan123
Beiträge: 117
Registriert: 17.08.2006 17:48:47

Re: Unterschied

Beitrag von Peter_Pan123 » 27.02.2009 13:59:13

ok jetzt hatte ich es nochmal mehrmals durchgelesen > das system wird also bei einer hohen hz zahl reaktionsfreudiger weil er sozusagen schneller alles abtastet.
Macht es denn überhaupt sinn so hohe zahlen wie 1000 einzusetzen? jetzt speziell für servertechnik kein desktop?
Sollte man wenn man eine geringere hz nimmt eine preemption wählen? wobei hier die frage ist welche was macht. Ich denke mal die no preemption wartet bis der prozess wirklich abgeschlossen ist. Der low latency wartet nicht sondern springt hin und her und bricht diese vorher schon ab. der voluntary macht ein mittelding?
WÄre es sinnvoll 300hz zu nehmen bei einem RT Kernel? Dort wäre es ja dann sinnfrei oder?

Gruß

P.S.: ist da nicht ein Fehler in der Logik oder sehe ich das was falsch?
Hohe Frequenzen erzeugen jedoch andere Probleme. Je höher die Frequenz, um so schlechter kommen Power-Save Mechnismen zur Geltung. Wirklich brauchbare Ergebnisse erzielt man in diesem Bereich erst ab 100Hz, was aber im normalen Betrieb schon für Ogg/MP3 Playback zu wenig ist und lange Time Slices zur Folge hat. Die meisten Distributionen laufen daher standardmäßig mit 250-300 Hz und vertrauen auf Preemption.
Müsste es nicht heissen "umso niedriger die Frequenzen, desto" > sonst würde die Aussage keinen Sinn machen das ab dem Bereich erst alles gut läuft wenn wir hier als Beispiel 1000hz haben, was ja hohe Frequenzen sind.

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: Unterschied

Beitrag von Six » 27.02.2009 14:23:24

Realtime setzt ganz andere Bedingungen voraus. Im wesentlichen garantiert ein RT-Kernel einer RT-Applikation eine Reaktion innerhalb eines Zeitabschnitts t, das leistet der Vanilla Linux Kernel nicht.
Be seeing you!

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: Unterschied

Beitrag von Six » 27.02.2009 14:27:38

Peter_Pan123 hat geschrieben: P.S.: ist da nicht ein Fehler in der Logik oder sehe ich das was falsch?
Hohe Frequenzen erzeugen jedoch andere Probleme. Je höher die Frequenz, um so schlechter kommen Power-Save Mechnismen zur Geltung. Wirklich brauchbare Ergebnisse erzielt man in diesem Bereich erst ab 100Hz, was aber im normalen Betrieb schon für Ogg/MP3 Playback zu wenig ist und lange Time Slices zur Folge hat. Die meisten Distributionen laufen daher standardmäßig mit 250-300 Hz und vertrauen auf Preemption.
Müsste es nicht heissen "umso niedriger die Frequenzen, desto" > sonst würde die Aussage keinen Sinn machen das ab dem Bereich erst alles gut läuft wenn wir hier als Beispiel 1000hz haben, was ja hohe Frequenzen sind.
Je höher die Frequenz, also je öfter der Kernel aufwacht und seine Prozesse abklappert, umso schlechter greifen Power-Save Mechanismen. Gut funktionieren Power-Save Mechanismen ab 100Hz und drunter, aber diese Frequenz ist für den Alltagseinsatz kaum zu gebrauchen, weil schon simpelste Multimedia-Aufgaben nicht mehr flüssig ablaufen. Alles klar?
Be seeing you!

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Unterschied

Beitrag von habakug » 27.02.2009 14:40:20

Hallo!

Preemption ist wie Scheduling ein Fein-Tuning der Performance. Server-Kernel haben keins (CONFIG_PREEMPT_NONE=y), Desktop-Kernel ja (CONFIG_PREEMPT_BKL=y, CONFIG_PREEMPT_VOLUNTARY=y). Beim Server-Kernel kann der Scheduler den Code nicht stoppen, bis er fertig ist. Der Linux-Kernel erlaubt aber das Anhalten von Tasks an nahezu jeder Stelle, so das Tasks mit einer niedrigeren Priorität zum Zuge kommen können. Bei Desktop-Systemen macht das ja auch durchaus Sinn. Die Ausnahmen sind in meinen Augen VoIP- oder VoD-Server.
Eine große Rolle spielt auch die Art des I/O-Scheduling. Im Desktop-Kernel sieht das so aus:

Code: Alles auswählen

CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_CFQ=y
CONFIG_IOSCHED_DEADLINE=y
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_IOSCHED_AS=y
# CONFIG_DEFAULT_AS is not set
CONFIG_IOSCHED_NOOP=y
# CONFIG_DEFAULT_NOOP is not set
Der Server-Kernel hat Deadline als default. CFQ (Completely Fair Queuing) versucht die Balance zwischen Lese- und Schreibzugriffen herzustellen, Deadline bevorzugt lesende Anfragen und sortiert Lese- und Schreibzugriffe im Hinblick auf die termingerechte Erledigung der Lesenden. Anticipatory (AS) bevorzugt alle "schon laufenden" Anwendungen, eine Einstellung die ich für Desktops mit höchstens zwei Festplatten und höchstens zwei Kernen bevorzugen würde. NOOP ist empfehlenswert wenn z.B. ein Hardware-Raid eines Datei-Servers schon die Hauptarbeit erledigt und dort sonst nicht viel vor sich geht.
Du kannst dir dazu mal das hier [1] anschauen. ;-)

Gruß, habakug

[1] http://kerneltrap.org/Linux/DeskOpt_Com ... Scheduling
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Peter_Pan123
Beiträge: 117
Registriert: 17.08.2006 17:48:47

Re: Unterschied

Beitrag von Peter_Pan123 » 27.02.2009 15:09:23

six: "ab 100Hz" > dachte du meintest damit von 100 bis und höher. Daran hatte ich mich aufgehangen.

Irgendwie sind jetzt so viele Begriffe gefallen.

Also nochmal >

1.) wenn der Kernel 1000 HZ hat sprich hohe HZ wird er öfter geweckt um die prozesse abzuklappern > das verursacht load
2.) realtime hat so gesehen nichts mit HZ zu tun
3.) 300 HZ bei low latency ist für Server geigneter als 1000 Hz?
4.) CFQ macht mehr sinn bei vielen prozessen als anti?

ich würde gerne mal wissen wozu der preemption mode ist? normal habe ich jetzt verstanden das wenn der prozesse bearbeitet wird entscheidet der mode ob der prozess frühzeitig abgebrochen wird oder nicht. Mich wundert dann aber wieso man bei gameservern z.b.
low latency nehmen soll > das verursacht doch hohen load ubnd darüber hinaus können doch wenn er die prozesse net richtig abarbeitet "lags" entstehen? Ich gehe jetzt hier von vielen prozessen aus. Gibt es irgendwo ein Schema wo man sehen kann wie der kernel die prozesse zuweist bei welchem model > ich würde das gerne 100% verstehen wollen?

Gruß

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Unterschied

Beitrag von Danielx » 27.02.2009 17:42:50

Peter_Pan123 hat geschrieben:Mich wundert dann aber wieso man bei gameservern z.b.
low latency nehmen soll
Warum wundert dich das?
Ein Gameserver soll doch meistens reaktionsfreudig sein, oder nicht?

Gruß,
Daniel

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Unterschied

Beitrag von Duff » 27.02.2009 17:49:17

Denke mal, dass mit low latency eine geringe Latenzeit gemeint ist, was im Umkehrschluss eine große HZ ist.
Oh, yeah!

Benutzeravatar
Six
Beiträge: 8071
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: Unterschied

Beitrag von Six » 28.02.2009 16:07:22

Gibt es irgendwo ein Schema wo man sehen kann wie der kernel die prozesse zuweist bei welchem model > ich würde das gerne 100% verstehen wollen?
http://kerneltrap.org/node/6750
http://kerneltrap.org/node/464

In diesem Zusammenhang eine exzellente Quelle: Understanding the Linux Kernel von O'Reilly.
http://oreilly.com/catalog/linuxkernel/ ... /ch10.html
Be seeing you!

Antworten