加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

pthread on-wakeup执行

发布时间:2020-12-16 07:02:17 所属栏目:百科 来源:网络整理
导读:每次内核重新安排时,如何让我的pthread执行一个函数? 我需要确定我的线程正在安排在哪个物理CPU /套接字(不是逻辑核心),并且不能一直这样做. 只有当线程实际被重新安排时,唤醒例程是否可以以某种方式挂钩以对TLS进行必要的更新? 至于为什么我需要这个:我
每次内核重新安排时,如何让我的pthread执行一个函数?

我需要确定我的线程正在安排在哪个物理CPU /套接字(不是逻辑核心),并且不能一直这样做.

只有当线程实际被重新安排时,唤醒例程是否可以以某种方式挂钩以对TLS进行必要的更新?

至于为什么我需要这个:我有每个线程每70ns执行AMO appx的代码,如果地址没有缓存在另一个套接字上就没问题,在两个套接字上部署相同的代码会因频繁的缓存失效而产生15倍的性能影响.我打算为此分配内存,这只在运行相同L3缓存的线程之间共享.所以我需要确定我正在运行哪个套接字并解决正确的内存块.我显然可以调用sched_getcpu并将其与/ proc / cpuinfo中的物理CPU ID进行比较,但这是一个相当大的开销.我不能为每个线程分配线程专用内存,但是太贵了.

解决方法

从我在 Linux Kernel Development,Third Edition中读到的内容来看,内核提供的服务和接口都不是你想要的.使用pthread_setaffinity(如上面的@osgx所建议,或者,在最近的Linux内核实现中,pthread_setaffinity_np)或者在开始时为每个cpu套接字缓存一个TLS密钥(如上面@caf所建议的那样)可能是在这个方向上使用的最佳方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读