作者wtchen (沒有存在感的人)
看板LinuxDev
標題[問題] 請問是否可以強制多執行緒共用一個cpu
時間Thu Oct 20 21:41:26 2016
正在構思一個程式,load其實不是很重,但是有3-4個thread必須輪流對單一device存取
但是想做到lock-free+節省load+空出其他core做其他的事,
所以希望把該程式生出的所有的thread都集中在單一個core跑。
raspberry pi的case簡單(本來就是single core),可是想在rp3上也這樣做。
請問有在user space(pthread)實作的方法嗎?
我在
http://fred-zone.blogspot.fr/2007/10/cpu.html 看到一個例子:
int main(void) {
cpu_set_t cmask;
unsigned long len = sizeof(cmask);
__CPU_ZERO(&cmask); /* 初始化 cmask */
__CPU_SET(0, &cmask); /* 指定第一個處理器 */
/* 設定自己由指定的處理器執行 */
if (!sched_setaffinity(0, len, &cmask)) {
printf("Could not set cpu affinity for current process.\n");
exit(1);
}
return 0;
}
請問在sched_setaffinity(0, len, &cmask) 之後,不管該程式分出多少thread
都會只在cpu 0 執行嗎?
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 86.209.148.33
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1476970891.A.DEF.html
※ 編輯: wtchen (86.209.148.33), 10/20/2016 21:57:09
→ clampsakura: 印象中要設定繼承的屬性 10/20 23:31
→ clampsakura: search PTHREAD_INHERIT_SCHED 看是否有用~~ 10/20 23:33
→ wtchen: 感謝~~ 10/20 23:35
→ clampsakura: 我只有試過sched policy. cpu mask若有用在回一下吧 10/20 23:38
→ wtchen: 請問要怎麼看哪顆CPU跑哪個process? 10/21 00:15
→ mayasky: taskset 試試? 10/21 01:20
→ wtchen: 懂了,感謝! 10/21 02:23
※ 編輯: wtchen (86.209.148.33), 10/23/2016 17:53:55