Verursachen spin_lock und spin_unlock die Leistung eines SMP-Kernels auf einem Single-CPU-Rechner?

8

Auf meinem Ubuntu-Rechner wird das Standard-Kernel-Image, das gerade läuft, für smp ( CONFIG_SMP=y ) gebaut. Aber diese Maschine hat nur 1 CPU.

Im Uni-Prozessor-Kernel ist spin_lock/unlock im Gegensatz zum SMP-Kernel eine Null-Funktion. Wie verhalten sich spin_lock() und spin_unlock() in diesem Setup?

Gibt es irgendwelche Leistungseinbußen aufgrund eines solchen SMP-spezifischen Codes?

    
vinit dhatrak 29.10.2009, 17:45
quelle

2 Antworten

3

Aktuelle Linux-Kernel enthalten einen Patch, den Sie mit den Begriffen "SMP alternatives" googeln können. Kurz gesagt, wenn der Kernel feststellt, dass er auf einem Uniprozessor-Computer läuft, werden die Spinlock-Funktionen während des Bootens mit No-Ops gepatcht.

    
janneb 01.06.2011 08:48
quelle
0

Ja (und wahrscheinlich nein).

Ja: A. Die Drehsperre / Entsperrung wird den tatsächlichen Code des Sperren und Entsperren ausführen, da der Compiler beim Kompilieren nicht weiß, ob Sie es auf einer Maschine mit einer oder mehreren CPUs ausführen. B. Obwohl Sie eine CPU haben, möchten Sie sie vielleicht immer noch verwenden, wenn Sie Threads verwenden.

Wahrscheinlich nein: Ich vermute, Sie fragen, weil Sie keine Threads für den Teil verwenden, den Sie sperren müssen, und Sie haben nur eine CPU. In diesem Fall sollte die Schleudersperre niemals in Rotation gehen. Der Leistungsaufwand ist also vernachlässigbar.

    
Roee Gavirel 01.06.2011 08:29
quelle

Tags und Links