Hallo,
weiß jemand von euch zufällig :), wie ich einen Prozess starten kann und diesen dann direkt an eine bestimmte CPU oder sogar einen bestimmten Core binden kann? Gibt es außerdem irgend einen top Parameter oder ein anderes Werkzeug das mir anzeigt, welcher Core gerade welchen Prozess(e) abarbeitet.
Außerdem ist mir unklar wie die Cores unter Linux durchgeschriftet werden..ich wurde aus der /proc/cpuinfo nicht schlau.
der Eintrag sieht folgendermaßen aus (es handelt um 2 Quad Core Xeons):
:~> cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4
processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 1 siblings : 4 core id : 0 cpu cores : 4
processor : 2 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 0 siblings : 4 core id : 2 cpu cores : 4
processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 1 siblings : 4 core id : 2 cpu cores : 4
processor : 4 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 0 siblings : 4 core id : 1 cpu cores : 4
processor : 5 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 1 siblings : 4 core id : 1 cpu cores : 4
processor : 6 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 0 siblings : 4 core id : 3 cpu cores : 4
processor : 7 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Xeon(R) CPU E5345 @ 2.33GHz stepping : 7 cpu MHz : 2333.419 cache size : 4096 KB physical id : 1 siblings : 4 core id : 3 cpu cores : 4
also was sind jetzt die 4 Cores zu einer CPU? was sind die ersten beiden Cores die sich einen Level 2 Cache teilen und was sind die 2..
Ich Danke
Hallo,
weiß jemand von euch zufällig :), wie ich einen Prozess starten kann und diesen dann direkt an eine bestimmte CPU oder sogar einen bestimmten Core binden kann?
Dafür sind afaik Kernelpatches notwendig.
Gibt es außerdem irgend einen top Parameter oder ein anderes Werkzeug das mir anzeigt, welcher Core gerade welchen Prozess(e) abarbeitet.
man top -> u.a. Gliederungspunkt 2a j)
Außerdem ist mir unklar wie die Cores unter Linux durchgeschriftet werden..ich wurde aus der /proc/cpuinfo nicht schlau.
Für das OS ist nicht direkt ersichtlich, was ein Core und was ein Prozessor ist. Für Linux ist jedes "Ding das rechnen kann" eine CPU (es taucht also jeder Core als CPU auf, aber jeder Chip nicht noch einmal extra). Wie das auf dem Die oder auf dem Board angeordnet ist weiß das OS nicht (das ist transparent). Linux nummeriert einfach der Reihenfolge nach, beginnend mit 0. Die Prozessornummern werden also erst an den ersten, dann den zweiten, dann den dritten, ... Prozessor vergeben. Im Fall von zwei Quadcores: zuerst die vier Cores auf dem ersten Chip (0 - 3), dann die Cores auf dem zweiten (4 - 7).
Viele Grüße Fabian
On Di, 2008-04-22 at 11:34 +0200, "Fabian Hänsel" wrote: Haollo,
Hallo,
weiß jemand von euch zufällig :), wie ich einen Prozess starten kann und diesen dann direkt an eine bestimmte CPU oder sogar einen bestimmten Core binden kann?
Dafür sind afaik Kernelpatches notwendig.
Gibt es außerdem irgend einen top Parameter oder ein anderes Werkzeug das mir anzeigt, welcher Core gerade welchen Prozess(e) abarbeitet.
man top -> u.a. Gliederungspunkt 2a j)
Außerdem ist mir unklar wie die Cores unter Linux durchgeschriftet werden..ich wurde aus der /proc/cpuinfo nicht schlau.
Für das OS ist nicht direkt ersichtlich, was ein Core und was ein Prozessor ist. Für Linux ist jedes "Ding das rechnen kann" eine CPU (es taucht also jeder Core als CPU auf, aber jeder Chip nicht noch einmal extra). Wie das auf dem Die oder auf dem Board angeordnet ist weiß das OS nicht (das ist transparent). Linux nummeriert einfach der Reihenfolge nach, beginnend mit 0. Die Prozessornummern werden also erst an den ersten, dann den zweiten, dann den dritten, ... Prozessor vergeben. Im Fall von zwei Quadcores: zuerst die vier Cores auf dem ersten Chip (0 - 3), dann die Cores auf dem zweiten (4 - 7).
betrachtet man
physical id core id
komm ich da auf was anderes
Gruß Gerd
am Tue, dem 22.04.2008, um 10:05:52 +0200 mailte marcus folgendes:
Hallo,
weiß jemand von euch zufällig :), wie ich einen Prozess starten kann und diesen dann direkt an eine bestimmte CPU oder sogar einen bestimmten Core binden kann? Gibt es außerdem irgend einen top Parameter oder ein
IIRC versucht Linux das, sofern möglich, um nach Möglichkeit den Cache nutzen zu können. Das wird aber nur bis zu einem bestimmten Grade funktionieren.
Ansonsten siehe die andere Antwort.
Andreas
Hi,
On Tue, April 22, 2008 10:05, marcus wrote:
weiß jemand von euch zufällig :), wie ich einen Prozess starten kann und diesen dann direkt an eine bestimmte CPU oder sogar einen bestimmten Core binden kann?
Eigentlich nicht. Gibt es einen bestimmten Grund warum Du das machen willst?
Wenn Du maximalen Durchsatz willst, dann solltest Du die Finger von solchen Settings lassen - die Scheduling-Algorithmen von Linux sind so weit ausgereift, dass man es von Hand nur schlechter machen kann.
Im Gegensatz zu gewissen Gehversuchen in Redmond weiss ein Linux was ein Cache und was eine asymmetrische Architektur (z.B. NUMA) ist - es hat eine automatische CPU-Affinitaet, die Du nicht anzufassen brauchst.
Konrad
Am Dienstag, 22. April 2008 13:09 schrieb Konrad Rosenbaum:
Hi,
On Tue, April 22, 2008 10:05, marcus wrote:
weiß jemand von euch zufällig :), wie ich einen Prozess starten kann und diesen dann direkt an eine bestimmte CPU oder sogar einen bestimmten Core binden kann?
Eigentlich nicht. Gibt es einen bestimmten Grund warum Du das machen willst?
Wenn Du maximalen Durchsatz willst, dann solltest Du die Finger von solchen Settings lassen - die Scheduling-Algorithmen von Linux sind so weit ausgereift, dass man es von Hand nur schlechter machen kann.
Im Gegensatz zu gewissen Gehversuchen in Redmond weiss ein Linux was ein Cache und was eine asymmetrische Architektur (z.B. NUMA) ist - es hat eine automatische CPU-Affinitaet, die Du nicht anzufassen brauchst.
Konrad
Einfach mal da herum als Einstieg nachsehen.
http://rt.wiki.kernel.org/index.php/CPU_shielding_using_/proc_and_/dev/cpuse...
Bernhard
Konrad Rosenbaum schrieb:
Hi,
On Tue, April 22, 2008 10:05, marcus wrote:
weiß jemand von euch zufällig :), wie ich einen Prozess starten kann und diesen dann direkt an eine bestimmte CPU oder sogar einen bestimmten Core binden kann?
Eigentlich nicht. Gibt es einen bestimmten Grund warum Du das machen willst?
Wenn Du maximalen Durchsatz willst, dann solltest Du die Finger von solchen Settings lassen - die Scheduling-Algorithmen von Linux sind so weit ausgereift, dass man es von Hand nur schlechter machen kann.
Im Gegensatz zu gewissen Gehversuchen in Redmond weiss ein Linux was ein Cache und was eine asymmetrische Architektur (z.B. NUMA) ist - es hat eine automatische CPU-Affinitaet, die Du nicht anzufassen brauchst.
Konrad
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
schon einmal vielen dank für die zahlreichen Antworten...ich will nen Benchmark fahren und dann einfach ma vergleiche zwischen SMP und Cores die sich den gleichen Level 2 Cache teilen ziehen.
also taskset kann einen Prozess auf eine bestimmte CPU zuordnen...
lug-dd@mailman.schlittermann.de