Taskset: CPU Mask Frage

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Bf2Linux
Beiträge: 2
Registriert: 19.08.2009 10:10:36

Taskset: CPU Mask Frage

Beitrag von Bf2Linux » 19.08.2009 13:40:50

Guten Tag Leute,

habe folgenden Thread schon gelesen
http://debianforum.de/forum/viewtopic.p ... it=taskset

und bin nicht weiter gekommen.

Ich habe mir meine Prozesse angeguckt und alle laufen auf Mask f.... Einen Prozess würde ich gerne direkt nur einen CPU zuordnen, weil er sonst instabil läuft.

Jetzt verstehe ich nicht ganz den zusammenhang mit dem "f", "0x00000001", der CPU/kern Zuordnung

Den Befehl Taskset habe ich soweit verstanden, nur mir fehlt die Eingabe der Zuordnung/CPU/Kern

Auf einigen Seiten geben sie anstatt "f" eine "1...x" ein, aber solange ich da nicht genauestens Bescheid weiß werde ich da nichts ändern. ("f" soll wohl für alle Kerne stehen).


Vielen Dank


Anhang:
Important information regarding kernel-updates:

If you want to use your own kernel, please make sure you don't touch the
kernel boot parameters (append) as some of our hardware requires the
parameters acpi=ht and/or noapic.
rocoto0xx:~# more /proc/cpuinfo
processor : 0(1,2,3)
vendor_id : AuthenticAMD
cpu family : 16
model : 2
model name : Quad-Core AMD Opteron(tm) Processor 1352
stepping : 3
cpu MHz : 1050.000
cache size : 512 KB
physical id : 0
siblings : 4
core id : 0 (1,2,3)
cpu cores : 4
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp
lm 3dnowext 3dnow constant_tsc pni cx16 popcnt lahf_lm cmp_legacy svm extapic c
r8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs ts ttp tm stc 100mhzsteps
hwpstate
bogomips : 2111.41
clflush size : 64

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Re: Taskset: CPU Mask Frage

Beitrag von storm » 20.08.2009 00:12:07

Herzlich Willkommen im Forum,
Bf2Linux hat geschrieben:Ich habe mir meine Prozesse angeguckt und alle laufen auf Mask f.... Einen Prozess würde ich gerne direkt nur einen CPU zuordnen, weil er sonst instabil läuft.

Jetzt verstehe ich nicht ganz den zusammenhang mit dem "f", "0x00000001", der CPU/kern Zuordnung
...
Auf einigen Seiten geben sie anstatt "f" eine "1...x" ein, aber solange ich da nicht genauestens Bescheid weiß werde ich da nichts ändern. ("f" soll wohl für alle Kerne stehen).
Zu deinem letzten Satz (sozusagen als Schlüssel zum Thema): richtig.

Mit der manpage und etwas Wissen über Zahlendarstellung auf dem Computer wird das schon. Wie du schon richtig bemerkt hast, bedeutet die Zahl 0xFFFFFFFF nutze alle Prozessoren. Diese Zahl ist hexadezimal (Basis des Zählsystems ist 16 und nicht 10 wie du es gewöhnt bist). Im hexadezimalen System werden alle Zahlen größer 9 als Buchstaben angegeben, 10 = A, 11= B und so weiter bis F = 15. Das Hexadezimale ist wiederum nur eine Vereinfachung für zB. den Programmierer, denn der Rechner versteht eigentlich nur 0 oder 1 (aus oder an), das ist binär (Basis des Zählsystems ist 2). Ein F (hexadezimal) bedeutet 1111 (binär), man schreibt zur Erkennung von hexadezimalen Zahlen auch 0xF. In diesem Sinne bedeutet die Maske 0x1 nichts anderes als 0001 (binär, der erste Prozessor), und 0x2 bedeutet 0010 (binär, der zweite Prozessor). Wenn du jetzt die Maske (Auswahl der Prozessoren) für deinen Prozesses setzen willst, kannst du folgendes verwenden:
  • taskset 0x00000001 dein_kommando # für die erste cpu (binär: 0001 = dezimal: 1)
  • taskset 0x00000002 dein_kommando # für die zweite cpu (binär: 0010 = dezimal: 2)
  • taskset 0x00000003 dein_kommando # für die erste *und* zweite cpu (binär: 0011 = dezimal: 3)
  • taskset 0x0000000F dein_kommando # für vier kerne (binär: 1111 = dezimal: 15 = hexadezimal: F)
Mit taskset -c 0 kommando kannst du dir den ganzen hex-/binär-Kram auch sparen und normale Zahlen verwenden. :mrgreen:

Ich hoffe, dass ist so einigermaßen verständlich. Prinzipiell kannst du mit taskset nichts kaputtmachen und das Programm wird sich bei falschen Parametern sicher bemerkbar machen (oder auch nicht *g).

hth, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Taskset: CPU Mask Frage

Beitrag von rendegast » 20.08.2009 17:47:45

Zwei Artikel aus dem Linux-Magazin zu Multiprozessorbetrieb und cpusets:
http://www.linux-magazin.de/Heft-Abo/Au ... n-Technik/
mit Beispielen:
http://www.linux-magazin.de/Heft-Abo/Au ... n-Technik/
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Bf2Linux
Beiträge: 2
Registriert: 19.08.2009 10:10:36

Re: Taskset: CPU Mask Frage

Beitrag von Bf2Linux » 20.08.2009 19:20:03

Das war sehr verständlich und ich bedanke mich für deine Mühen...

:hail: Hail Debianforum :wink:

Antworten