调度程序能否自动将关联通过sched_setaffinity设置为非常繁忙的cpu的线程迁移到空闲的cpu?
sched_setaffinity 是实现“硬亲和力”还是“软亲和力”?
我称之为“软关联”的是,它告诉调度程序,线程更喜欢在特定的cpu上运行,并且在必要时可以迁移到其他cpu。
我称之为“硬关联”的是,它告诉调度程序,无论线程等待cpu资源有多长时间,线程都必须在特定的cpu上运行。
我清楚地记得,有一些api可以在windows indeed.Is下提供“软亲和力”和“硬亲和力”,任何api都可以在linux下提供“软亲和力”。
发布于 2020-05-20 16:44:45
不是的。如果一个进程只与一个CPU有关联,那么无论如何它都只能在该CPU上运行。换句话说,这符合你对“硬亲和力”的定义。
当然,如果使用不当,此特性可能是一把双刃剑:如果只将CPU专用于单个CPU,则将任务的亲和力设置为单个CPU会带来很大的好处,但如果CPU不是专用于该任务,并且在某种程度上受到沉重的负载,则会降低性能。
https://stackoverflow.com/questions/61917281
复制相似问题