首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >seastar如何在不同的cpus上调用代码?

seastar如何在不同的cpus上调用代码?
EN

Stack Overflow用户
提问于 2020-01-09 16:30:21
回答 1查看 129关注 0票数 1

我目前正在使用seastart框架,并发现它声称seastart可以向不同的cpus提交任务。

Seastar声称它在不同的coers之间没有任何共享。

所以我认为seastar将不同的线程绑定到不同的、,并将不同的任务提交给不同的后台线程(称为引擎cpus容器或其他东西)。

seastar如何实现这一点,使用pthread_setaffinity_np

但是在提交任务之前,代码仍然在随机线程上工作吗?是否通过使用smp::submit_to显式编码将网络插座或存储等关键资源分配到不同的cpus?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-09 19:34:22

我从来没有听说过Seastar,直到现在,这张图片看起来效率非常低。正如benchmarks所证实的那样。每个线程有一个堆栈的效率要高得多,因为堆栈的顶部总是“热的”(缓存在L1中)。

无论如何,可以使用特定于平台的API将线程绑定到内核。在POSIX情况下,这将是pthread_setaffinity_np

代码语言:javascript
复制
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(core, &cpuset); // core number starts from 0
int rc = pthread_setaffinity_np(myThread.native_handle(), (cpu_set_t), &cpuset);

或者Windows上的SetThreadAffinityMask

代码语言:javascript
复制
DWORD_PTR mask = (DWORD_PTR) (1 << core); // core number starts from 0
auto rc = SetThreadAffinityMask(GetCurrentThread(), mask);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59659862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档