可以在Linux中爲每個線程在每個核心上運行的多線程程序設置cpu親和性,從而有效阻止任何其他進程被該核心上的操作系統調度。實際上,我想保證在我的進程中使用內核,並將所有其他非關鍵程序綁定到最少數量的內核。Linux cpu_affinity保證一次性使用
或者我錯過了Linux調度程序的東西,或者我需要我自己的。
可以在Linux中爲每個線程在每個核心上運行的多線程程序設置cpu親和性,從而有效阻止任何其他進程被該核心上的操作系統調度。實際上,我想保證在我的進程中使用內核,並將所有其他非關鍵程序綁定到最少數量的內核。Linux cpu_affinity保證一次性使用
或者我錯過了Linux調度程序的東西,或者我需要我自己的。
可以設置在Linux中CPU親和力其中每個線程上的每個核心運行有效地被安排在操作系統上的核心
沒有阻止任何其他 進程多線程程序 ,設置cpu affinity會阻止調度程序使用某些內核來處理線程。也就是說,它只會在某些核心上安排你的線程 - 它對其他線程沒有任何作用。
您可以使用setpriority
或許可以達到您想要的效果。如果您的要求非常嚴格,您可以查看sched_setscheduler
並選擇SCHED_RR
或SCHED_FIFO
。
當調度程序被積極地使用時,taskset和nice只會給調度程序提供關於您的偏好的提示。調度程序可以根據工作負載自由地重新調度任何可用內核中的任何線程。您可以使用perf來監視上下文切換和cpu遷移。
你有兩個選擇:
我希望它有幫助。
您的Linux內核的線程調度程序的哪些特性使默認行爲不適合您的應用程序? –