Multicore-System. Wie werden die Kerne "sortiert"

662
asdrubael

Wenn ich ein System mit zwei Quadcore-CPUs und HyperThreading habe, wie kann ich wissen, wie die physischen und virtuellen Kerne sortiert sind? Wenn ich zum Beispiel einen Prozess erzwinge, der auf "CPU 0" ausgeführt wird, woher soll ich wissen, welcher Kern das wirklich ist? Ich erinnere mich an eine komplexe Zeichnung, fand aber nichts Nützliches.

Update: Nach einer Diskussion mit einem Programmierer bin ich überzeugt, dass es nicht sinnvoll ist, ein Programm / einen Thread an einen bestimmten Kern zu binden. In den meisten Fällen ist es besser, das Betriebssystem entscheiden zu lassen, welche Kerne verwendet werden sollen. Es wäre jedoch immer noch interessant, wie die Aufzählung funktioniert.

5
Warum sollten Sie aus Neugier wissen, um welchen physischen Kern es sich handelt? Bobby vor 14 Jahren 8
Solange das Etikett konsistent ist, scheint es keine Rolle zu spielen. mindless.panda vor 14 Jahren 0
It may matter if trying to manually control affinity for some reason. A CPU intensive threaded process that shares data between threads running on two or more cores of one CPU will run faster than one using the same number of processing units spread over distinct physical CPUs, and may event perform faster than one that is actively using _more_ cores but spread over multiple CPUs, due to cache sharing/management, CPU<->RAM bandwidth, and related issues. Trying to optimise things this way is unlikely to be best use of your time though. David Spillett vor 14 Jahren 2
Die Idee ist, ein Programm / Thread A zu haben, das alle verfügbaren Kerne verwendet, die von einem und einem anderen Programm / Thread B erwartet werden, das auf dem "letzten" Kern alleine laufen kann. Wenn die Beschriftung konsistent ist, spielt es keine Rolle, wie es gemacht wird, aber ich bin neugierig, wie es funktioniert und ob sich dies beispielsweise zwischen Windows / Linux oder verschiedenen PCs unterscheidet. asdrubael vor 14 Jahren 0
klingt, als würden Sie nach einer Möglichkeit suchen, LPARs außerhalb von AIX zu implementieren, vielleicht? warren vor 14 Jahren 0

1 Antwort auf die Frage

2
knweiss

Schauen Sie sich das hwloc- Projekt an. Es bietet eine C-API zur Beantwortung dieser Art von Fragen sowie ein Werkzeug, lstopodas CPU- / Speichertopologie-Maps generiert. Siehe die URL für Beispiele.

Danke, das ist genau das, wonach ich gesucht habe. Nochmals: Dies ist nur für "wissenschaftliche" Zwecke. asdrubael vor 14 Jahren 0