Das Taskset dient zum Binden eines Prozesses an eine oder mehrere CPUs. Geben Sie im Wesentlichen an, wo es bei der ersten Ausführung oder während der Ausführung ausgeführt werden kann. Wenn Sie RHEL / CentOS auf modernen Servergeräten verwenden, numactl
wird dies empfohlen taskset
.
Cpuset / cset dient zur CPU-Abschirmung und ist ein Framework, das auf Linux- Gruppen basiert. Cset war bei bestimmten Distributionen (wie RHEL) nie beliebt, da andere Tools für das Prozessmanagement verfügbar sind.
Der erste Befehl unten erstellt eine Abschirmung, die die Aufgaben des Betriebssystems auf die CPU-Kerne 0 und 8 beschränkt. Der zweite Befehl verschiebt Ihre aktuelle Shell-Sitzung auf die angegebene CPU-Abschirmung, was zu einer Isolierung der System- und Benutzerprozesse führt.
# cset shield --cpu 1-7,9-15 --kthread=on
# cset proc --move --pid=$$ --threads --toset=user
Möglicherweise müssen Sie noch andere Dinge prüfen und optimieren, bevor Sie den Weg der Bindungsprozesse an CPUs beschreiten. Interrupts ( irqbalance
teilweise Deaktivierung), Energiespareinstellungen, Systemplaner, E / A-Aufzüge, Echtzeitrichtlinie ( chrt
).
Siehe: TCP-Einstellungen mit geringer Latenz unter Ubuntu
Hier ist ein ( verschlungenes ) Beispiel eines Anwendungs-Wrappers, der einen Kern auswählt, das Ungleichgewicht stoppt, ihn startet und den ausgewählten Kern auf eine schwarze Liste setzt und dann ./Ihr_Programm mit SCHED_FIFO und Priorität 99 auf dem ausgewählten Kern ausführt .
Core=5
CoreMask=`echo "16 o 2 $Core ^ p" | dc`
service irqbalance stop
until [ "`service irqbalance status`" = "irqbalance is stopped" ] ; do sleep 1 ; done
IRQBALANCE_ONESHOT=1 IRQBALANCE_BANNED_CPUS=${CoreMask} irqbalance
sleep 1
until [ "`service irqbalance status`" = "irqbalance is stopped" ] ; do sleep 1 ; done
numactl --physcpubind=${Core} --localalloc chrt -f 99 ./your_program