Wie erzwingt man mit numactl, dass ein Prozess nur auf einem einzigen Thread ausgeführt wird?

Wie erzwingt man mit numactl, dass ein Prozess nur auf einem einzigen Thread ausgeführt wird?

Meine lokalen Rechner haben mehrere CPUs, jeder hat mehrere Kerne und jeder kann mehrere Threads unterstützen. Ich habe einen Multithreading-Prozess, den ich zwingen möchte, nur auf einem einzigen Thread zu laufen. Ich verstehe, dass numactrldas geht.

Wie kann ich numactlden Prozess zwingen, nur auf einem einzigen Thread zu laufen? Gibt es alternativ ein noch einfacheres integriertes Dienstprogramm, das dies kann?

Antwort1

numactl --physcpubind=+1 /path/to/your/executable

dadurch sollte Ihr Prozess auf dem zweiten Kern/der zweiten CPU ausgeführt werden, der Ihrem Chipsatz zugewiesen ist (Index 1). Weitere Einzelheiten finden Sie im Abschnitt „Beispiele“ der Manpage: http://linux.die.net/man/8/numactl

Bearbeiten: Ich sollte darauf hinweisen, dass dies bedeutet, dass das Programm höchstens einen Thread gleichzeitig ausführt, aber nicht, dass der gesamte Prozess nur aus einem Thread besteht. Wenn das Programm so geschrieben ist, dass es einen neuen Thread erzeugt, wird es dies tun, aber es wird auf demselben Core/der selben CPU ausgeführt wie der Rest des Prozesses. Ein kleiner Unterschied, aber dennoch potenziell wichtig.

Antwort2

Um das Programm auf einen CPU-Hardwarekern/-thread zu beschränken, kann man auch verwendentaskset 1 prog [args]

PS

Das Programm zur Begrenzung der Anzahl der Prozesse, die ein Programm haben kann (Threads), ist prlimit --nproc=1 prog [args]. Ich habe versucht, es zu verwenden rsyncund bekam „Fork nicht verfügbar ... Fehler in IPC“ und das Ende – rsyncist so geschrieben, dass es nicht als ein Thread funktioniert.

strace prlimit --nproc=1 rsync  

Das Ausführen stracehat wie im SO-Link unten beschrieben angezeigt, der Rückgabewert vom cloneAufruf ist-1 EAGAIN (resource temporary unavailable).

PS Idee übernommen vonhttps://stackoverflow.com/questions/38637451/is-there-a-way-force-a-program-to-use-only-1-thread.

verwandte Informationen