TASKSET(1) Comenzi utilizator TASKSET(1) NUME taskset - stabilete sau recupereaza afinitatea CPU a unui proces REZUMAT taskset [opiuni] masca comanda [argument...] taskset [opiuni] -p [masca] pid DESCRIERE Comanda taskset este utilizata pentru a stabili sau a prelua afinitatea CPU a unui proces in curs de execuie, avand in vedere pid-ul acestuia, sau pentru a lansa o noua comanda cu o anumita afinitate CPU. Afinitatea CPU este o proprietate a planificatorului care ,,leaga" un proces de un anumit set de CPU-uri din sistem. Planificatorul Linux va respecta afinitatea CPU data, iar procesul nu va rula pe alte CPU-uri. Reinei ca planificatorul Linux accepta i afinitatea naturala a CPU: planificatorul incearca sa menina procesele pe acelai CPU cat mai mult timp posibil din motive de performana. Prin urmare, forarea unei afinitai CPU specifice este utila numai in anumite aplicaii. Afinitatea unor procese, cum ar fi firele per-CPU ale nucleului, nu poate fi definita. Afinitatea CPU este reprezentata ca o masca de bii, cu bitul de ordinul cel mai mic corespunzand primei CPU logice i bitul de ordinul cel mai mare corespunzand ultimei CPU logice. Este posibil sa nu existe toate CPU-urile pe un anumit sistem, dar o masca poate specifica mai multe CPU-uri decat cele prezente. O masca recuperata va reflecta numai biii care corespund CPU-urilor aflate fizic in sistem. In cazul in care se indica o masca nevalida (adica una care nu corespunde niciunui CPU valid de pe sistemul curent), se returneaza o eroare. Matile pot fi specificate in hexazecimal (cu sau fara un "0x" de inceput) sau sub forma unei liste de CPU-uri cu ajutorul opiunii --cpu-list. De exemplu, 0x00000001 reprezinta procesorul nr. 0, 0x00000003 reprezinta procesoarele nr. 0 i nr. 1, FFFFFFFF reprezinta procesoarele de la nr. 0 la nr. 31, 0x32 reprezinta procesoarele nr. 1, nr. 4 i nr. 5, --cpu-list 0-2,6 reprezinta procesoarele nr. 0, nr. 1, nr. 2 i nr. 6. --cpu-list 0-10:2 reprezinta procesoarele nr. 0, nr. 2, nr. 4, nr. 6, nr. 8 i nr. 10. Sufixul ,,:N" specifica intervalul de valori, de exemplu 0-10:3 este interpretat ca fiind lista 0,3,6,9. Cand taskset returneaza, se garanteaza ca programul dat a fost planificat pentru un procesor (CPU) legal. OPIUNI -a, --all-tasks Stabilete sau recupereaza atributele de planificare ale tuturor sarcinilor (fire de execuie) pentru PID-ul furnizat. -c, --cpu-list Interpreteaza masca ca o lista numerica de procesoare in loc de o masca de bii. Numerele sunt separate prin virgule i pot include intervale. De exemplu: 0,5,8-11. -p, --pid Opereaza pe un PID existent i nu lanseaza o sarcina noua. -h, --help Afieaza acest mesaj de ajutor i iese. -V, --version Afieaza versiunea i iese. UTILIZARE Comportamentul implicit este de a rula o noua comanda cu o masca de afinitate data: taskset masca comanda [argumente] De asemenea, putei prelua afinitatea CPU a unei sarcini existente: taskset -p pid Sau s-o stabilii: taskset -p masca pid Cand se specifica o lista de cpu-uri pentru un proces existent, opiunile -p i -c trebuie sa fie grupate impreuna: taskset -pc cpu-list pid Forma --cpu-list se aplica numai pentru lansarea de noi comenzi: taskset --cpu-list cpu-list comanda PERMISIUNI Un utilizator poate modifica afinitatea CPU a unui proces aparinand aceluiai utilizator. Un utilizator trebuie sa posede CAP_SYS_NICE pentru a modifica afinitatea CPU a unui proces aparinand unui alt utilizator. Un utilizator poate prelua masca de afinitate a oricarui proces. VALOAREA RETURNATA taskset returneaza 0 in acest mod de obinere a afinitailor atat timp cat exista PID-ul furnizat. taskset returneaza 0 in modul sau de stabilire a afinitaii atat timp cat apelul de sistem sched_setaffinity(2) care sta la baza acestuia o face. Succesul comenzii nu garanteaza faptul ca firul specificat a migrat efectiv catre procesorul (procesoarele) indicat(e), ci doar ca firul nu va migra catre un procesor aflat in afara noii mati de afinitate. De exemplu, afinitatea firului nucleului kswapd poate fi definita, dar este posibil ca firul sa nu migreze imediat i nu este garantat ca o va face vreodata: $ ps ax -o comm,psr,pid | grep kswapd + kswapd0 4 82 + $ sudo taskset -p 1 82 + pid 82's current affinity mask: 1 + pid 82's new affinity mask: 1 + $ echo $? + 0 + $ ps ax -o comm,psr,pid | grep kswapd + kswapd0 4 82 + $ taskset -p 82 + pid 82's current affinity mask: 1 In schimb, atunci cand utilizatorul specifica o afinitate ilegala, taskset va afia o eroare i va returna 1: $ ps ax -o comm,psr,pid | grep ksoftirqd/0 + ksoftirqd/0 0 14 + $ sudo taskset -p 1 14 + pid 14's current affinity mask: 1 + taskset: failed to set pid 14's affinity: Invalid argument + $ echo $? + 1 AUTORI Scris de Robert M. Love. DREPTURI DE AUTOR Drepturi de autor (C) 2004 Robert M. Love. Acesta este un software liber; consultai sursa pentru condiiile de copiere. Nu exista nicio garanie; nici macar pentru COMERCIALIZARE sau ADECVARE LA UN SCOP PARTICULAR. CONSULTAI I chrt(1), nice(1), renice(1), sched_getaffinity(2), sched_setaffinity(2) Consultai sched(7) pentru o descriere a schemei de planificare Linux. RAPORTAREA ERORILOR Pentru rapoarte de eroare, folosii sistemul de urmarire al erorilor . DISPONIBILITATE Comanda taskset face parte din pachetul util-linux care poate fi descarcat de la Linux Kernel Archive . util-linux 2.41 2025-03-29 TASKSET(1)