Hyper Threading aktivieren

Kamikaze

Warrior of Sunlight
Staff member
Ich habe mir gerade einen SMP Kernel [thread=15391]gebaut[/thread] um HTT auf meiner neuen Kiste (P4, 1.6 GHz) zu aktivieren. Verschiedene Quellen sagen ich müsse lediglich
Code:
machdep.hlt_logical_cpus=0
machdep.hyperthreading_allowed=1
in meine /boot/loader.conf eintragen. Jedoch hat das bei mir keinen Effekt und sysctl kennt die Variablen auch nicht.

Hat irgendjemand das gleiche Problem, oder sogar eine Lösung?
 
Hallo!

Hyperthreading mußt Du im BIOS aktivieren. Dann sollte Dein Kernel von selber mehrere Prozessoren erkennen.

Gruß
 
Hat ein P4 mit 1.6 GHz überhaupt HTT? Da bin ich mir nicht sicher. Du kannst das im dmesg überprüfen:
Code:
CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz (2800.11-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0xf29  Stepping = 9
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,FXSR,
                      PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,
                      SSE,SSE2,SS,[b]HTT[/b],TM,PBE>
  Hyperthreading: 2 logical CPUs
Ich verwende einen UP-Kernel und HTT ist im BIOS deaktiviert, weil es mir keinen Mehrwert bringt. Im dmesg muß trotzdem das HTT-Feature auftauchen und die zwei logischen CPUs müssen gemeldet werden.

Ansonsten: Welches System verwendest du und wie sieht deine Kernel-Konfig genau aus? Man hat schnell mal eine Kleinigkeit übersehen.
 
Ja, HTT wird vom dmesg angezeigt, allerdings bietet das BIOS keine Option um es einzuschalten.
 
Das HTT angezeigt wird, bedeutet noch lange nicht, dass dies Feature auch unterstützt wird. Zum Beispiel sagen meine Opterons mir auch, dass sie HTT können, was natürlich nicht der Fall nicht.
 
Ah, OK. Ich dachte das könnten alle P4. Aber 1.6 GHz ist ja auch nicht mehr taufrisch (aber besser als 700 MHz).
 
Bin hiervon auch ein wenig gerührt, allerdings als staunender Neuling auch unbedarft.

Bei mir machen es zwei 733MHz PIII und dmesg hatte die auch beide angezeigt, auch mit standard Kernel.
Nun habe ich einen SMP eingesetzt, allerdings nichts daran geschraubt. Ich sehe und merke eigentlich keinen Unterschied und halte den Rechner auch für passend schnell, so wie ich das bei zwei solchen µP erwarte (also etwas schneller als ein PIV mit 1.6GHz :)).
Beim Systemstart erzählt als allererstes BSD was von SMP, egal, welcher Kernel und später erklärt es, die zweite CPU werde gelauncht. Das alles sieht mir gut aus, verstehen will ich es noch nicht so recht.
xosview, was bei mir immer läuft, zeigt auch nur einen Balken, also nur eine CPU. Bei anderen (Linux) Systemen wurde bei einem geladenen SMP auch zwei Balken gezeigt.
Das macht mich wirre.

Nun will der SMP auch noch meinen USB Stick nicht erkennen (ich denke mal, das hier die Ursache liegt) und eigentlich würde ich deshalb wieder auf den Standard-Kern wechseln.

Wer weiß dazu genaueres? Wie macht Free-BSD das mit dem SMP?
Kann es sein, dass eine entsprechende Konfiguration auch beim Standard Kernel gesetzt wird? Ich meine, grundsätzlich ist der Unterschied ja nicht so groß und das System könnte bei der Installation den Kernel so setzen. Oder sehe ich was nicht, weil ich alles falsch mache?
 
Erst einmal, um Missverständnissen vorzubeugen, eine SMP-Maschine ist bei den meisten Einzelanwendungen NICHT schneller als eine Uni-CPU-Maschine. Der Grund ist einfach, dass die allermeisten Anwendungen nur auf einem Thread laufen und somit auch auf einer CPU. SMP bringt dir nur dann Vorteile, wenn du entweder Anwendungen nutzt, die auf mehreren Threads laufen oder du mehrere komplexe Anwendungen parallel ausführen möchtest.

So, nun zur Anzeige. Bei FreeBSD funktioniert das SMP ein wenig anders als z.B. bei Linux. Wenn in der dmesg mehrere CPUs gefunden wurden (Eintrag mit FreeBSD/SMP) und diese am Ende des Boots auch gestartet werden, ist alles OK und SMP ist aktiviert. Man kann dies auch im Top sehen, wo bei den einzelnen Prozessen zeitweilig die CPU angezeigt wird, auf der sie läuft.
Allerdings wird bei FreeBSD in letzter Konsequenz nicht zwischen den einzelnen CPUs unterschieden. (OK, das ist nun sehr laberig formuliert) So tauchen sowohl im Top, als auch in allen anderen Tool nicht mehrere CPUs auf, sondern nur eine, welche die Gesamtbelastung des Systems wiederspiegelt. Hast du 2 Prozessoren und dein Balken steht bei 50%, ist eine idealerweise voll ausgelastet und die andere gar nicht.
 
Ist es aber beim Starten der meisten Anwendungen nicht so, dass dabei mehrere Threads ausgeführt werden müssen?

Wenn ich der Anzeige auf dem Linux trauen kann, werden beim Start der meisten Applikationen beide CPU heftig beschäftigt. Danach wechseln sich beide ziemlich zyklisch ab, vielleicht, damit nicht eine zu einsam wird.

Vielleicht ist es Einbildung, doch ich arbeite hier mit einem dual PIII mit 733MHz und FreeBSD und einem dual PIII mit 866MHz und GNU/Linux und mit einem AMD1800+ mit GNU/Linux und einem Celeron 2.4GHz auf dem derzeit noch PC-BSD drauf ist und im Starten von Anwendungen empfinde ich die beiden dual-Prozessor Rechner als schneller. Diese haben auch beide mehr RAM und laden von SCSI-Platten, also nicht direkt vergleichbar, doch bei den Unterschieden in der Taktung, würde ich erwarten, dass diese deutlich langsamer sein müssten, wenn nur jeweils ein Prozessor arbeitet.

Bei der Umrechnung von Filmen in andere Formate, was so etwa ist, womit ich die Rechner am liebsten beschäftige, zeigt Free-BSD sich einen Tick langsamer, aber das hat wohl mit der Zuweisung von Prioritäten zu tun, denn ich kann da andere Anwendungen nahezu ohne Unterschied starten und nutzen, während die Linux-Rechner erst mal Luft holen müssen. Den PC-BSD (das ich, nebenbei gesagt, gar nicht mag) habe ich noch nicht so weit, (und werde es wohl auch nicht einrichten) dass ich ihn zum Vergleich nutzen könnte, doch von den drei verbliebenen rechnet mir der dual866er mit Linux am schnellsten, danach der AMD1800+, gleich gefolgt und fast nicht unterscheidbar von dual733 mit Free-BSD.
 
Back
Top