Jak vytvorit vlakno s definovanou nice?

Dalibor Straka dast na panelnet.cz
Pondělí Říjen 10 13:29:41 CEST 2011


On 10/10/2011 01:00 PM, d.petr wrote:
> Dobrý den,
> marně se pokouším vytvořit vlákno funkcí pthread_create tak, aby se spustilo s požadovanou prioritou nice.
> Při nastavování pthread_attr_setschedpolicy a pthread_attr_setschedparam sice lze určit např. policy==SCHED_RR a nějakou prioritu, to funguje, ale pro policy==SCHED_OTHER může být priorita jen 0 a "nice" není, jak nastavit (tedy já to neumím).
> Po vytvoření vlákna by se v rodičovském vláknu asi dala použít funkce setpriority, jenže bych musel znát TID nového vlákna. Svůj TID dokáže zjistit vlákno voláním syscall (SYS_gettid), ale nenašel jsem nic, co by ho zjistilo "z venčí" (tzn. z rodičovského vlákna) s pomocí hodnoty pthread_t, kterou vrátí pthread_create.
> Napadají mě zatím jen dva způsoby, jak na "nice":
> 1) Změnit nice rodičovského vlákna, pak teprv vytvořit nové vlákno a nechat "nice" podědit a pak ji zas v rodičovském vrátit. To se mi ale nelíbí a navíc to asi nejde vždycky (např. kdyby rodičovské vlákno bylo SCHED_RR).
> 2) Předat parametrem požadovanou hodnotu nice do vlákna při jeho vytváření a vlákno by si muselo po spuštění prioritu nastavit samo. To se mi ale také moc nelíbí.
>
> Ani hledání po internetu nepřineslo výsledek, asi neumím dobře hledat. Mohl by mi někdo, prosím, poradit, kde dál pátrat?


Dobry den,

zkuste pthread_setschedprio(), akorat me zarazila poznamka v manu 
"REALTIME THREADS".

Posilam jeste par odkazu, ktere jsem si kdysi uschoval:

2.8.4 Process Scheduling - 
http://www.opengroup.org/onlinepubs/...l#tag_02_08_04
pthread_[g|s]etschedparam - 
http://www.opengroup.org/onlinepubs/...chedparam.html
pthread_setschedprio - http://www.opengroup.org/onlinepubs/...schedprio.html

-- Dalibor Straka


Další informace o konferenci Linux