这篇文章主要介绍vxworks中SMP的Affinity怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
CPU Affinity一般翻译为CPU的亲和力或亲和性,是多核OS里的一种技术,指的是可以将任务绑定到某个CPU上。在VxWorks的SMP里,默认每个任务都可以在每个CPU上执行,而指定Affinity后,就可以把某些任务固定下来,让其只在特定的CPU上执行。相关的函数是taskCpuAffinitySet()和taskCpuAffinityGet()
与cpuset_t相关的,还有几个宏。看名字应该就能猜出是啥意思,宏定义也是非常简单↘
如果不指定Affinity呢?新创建的任务会继承Parent任务的Affinity,看个例子
如果任务的Affinity指定到某个CPU了,而那个CPU一直忙于更高优先级的任务,一时半会儿还轮不到这个任务执行,怎么办?VxWorks的SMP还提供了一种特殊的功能:保留CPU。被保留的CPU,就只运行那些Affinity是这个CPU的任务。另外提供参数VX_SMP_CPU_EXPLICIT_RESERVE,用来排除那些不能被保留的CPU。
可以看到CPU2(0x1是CPU0、0x2是CPU1、0x4是CPU2…0x80是CPU7)被保留下来,而目前只有任务t1指定到它上边了。因此,不管t1的优先级高低,只要t1进入就绪队列,它就会在CPU2上执行了。
以上是“vxworks中SMP的Affinity怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。