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?
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.
Tags und Links linux linux-kernel spinlock