2014-01-28 64 views
2

我指定與芯2-11一cpuset X,和使用taskset --cpu列表2.將所有線程默認爲核心?

看來如果用完的處理與使用taskset嵌套cpuset X,然後sched_getaffinity(像)僅看到芯#2可用。

我的問題是,有沒有辦法實現如下:
- 默認所有線程的過程1個核心,
- 該過程由cpuset「保護」(所以沒有其他進程將使用指定的核心集合)AND AND
- 我仍然可以通過編程方式設置某些線程的cpu親和力(我知道pthread_attr_setaffinity_np()如何實現)?

在此先感謝。

+0

'sched_getaffinity'只報告_current_ cpuset,這_is_ 2. 你嘗試設置的親和力爲0xFFFFFFFF(用'sched_setaffinity'),然後得到cpuset? – Useless

+0

在調用sched_getaffinity()之前,我沒有嘗試調用sched_setaffinity()。有沒有辦法將所有線程默認爲1核心,然後設置我關心的CPU集合中線程的親和性? – Hei

+0

在一個擁有15年曆史的單核奔騰機箱上運行您的應用。 –

回答

0

讓我以這種方式提出您的問題,您希望您的進程在其中一個內核上運行,並防止其他進程在其上運行?在這種情況下,您應該參考命令isolcpus

通過在引導期間使用參數isolcpus,可以將一個或多個CPU與內核調度程序隔離,除非進程/線程使用CPU關聯請求使用隔離CPU。 (Refer- http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/re46.html並須─whole one core dedicated to single process