È possibile limitare un processo Linux in modo che possa essere eseguito solo su un particolare core su una determinata macchina?


10

Diciamo che ho una scatola quad-core e quattro processi identici, ognuno con dieci thread. È possibile, in Linux, affermare che il processo A può essere eseguito solo su CPU 0, mentre il processo B può essere eseguito solo su CPU 1, ecc.?

Risposte:


16
taskset <affinity mask> -p <process>

vale a dire

taskset 1 -p 12345

per impostare il processo 12345 per utilizzare solo il processore / core 1

La maschera di bit può essere un elenco (ovvero 1,3,4 per utilizzare i core 1 3 e 4 di un sistema core 4+) o una maschera di bit in esadecimale (0x0000000D 1,3,3, 0x00000001 solo per il core 1)

tasksetè di solito in un pacchetto chiamato shedutils.

Modifica: quasi dimenticato ... Se si desidera impostare l'affinità di un nuovo comando anziché modificarlo per un processo esistente, utilizzare:

taskset <mask> <program> [<arg1>]...[<argN>]

1

utilizzo Tasetet (util-linux 2.13-pre7): tasket [opzioni] [maschera | cpu-list] [pid | cmd [args ...]] impostato o ottiene l'affinità di un processo

-p, --pid opera su un dato pid -c, --cpu-list visualizzato esistente e specifica cpus nel formato elenco -h, --help visualizza questo aiuto -v, --version informazioni sulla versione dell'output

Il comportamento predefinito è quello di eseguire un nuovo comando: tasket 03 sshd -b 1024 È possibile recuperare la maschera di un'attività esistente: tasket -p 700 O impostarlo: tasket -p 03 700 Il formato elenco utilizza un elenco separato da virgole anziché un maschera: tasket -pc 0,3,7-11 700 Intervalli in formato elenco possono accettare un argomento falcata: ad es. 0-31: 2 è equivalente alla maschera 0x55555555

puoi sempre ottimizzare il tuo server secondo le tue necessità

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.