[发明专利]一种高速缓存友好的用户级线程调度方法有效
申请号: | 201910745905.4 | 申请日: | 2019-08-13 |
公开(公告)号: | CN110597606B | 公开(公告)日: | 2022-02-18 |
发明(设计)人: | 吴继鹏 | 申请(专利权)人: | 中国电子科技集团公司第二十八研究所 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 胡建华;于瀚文 |
地址: | 210000 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 高速缓存 友好 用户 线程 调度 方法 | ||
1.一种高速缓存友好的用户级线程调度方法,其特征在于,包括如下步骤:
步骤1,线程池初始化;
步骤2,线程池运行,进行用户级线程调度;
步骤1包括如下步骤:
步骤1-1,根据cpu数目确定工作线程Worker数目,每个工作线程Worker对应一个物理线程,工作线程Worker中包含对象池Arena;
步骤1-2,初始化每个工作线程Worker的对象池Arena,预先构造对象池Arena中的FixSizedTask;
步骤1-3,初始化对象池Arena中的4个链表:ExecList,FreeList,ReadyList,StolenList,其中FreeList中装满预先构造好的Task和join方法,所述join方法即等待子任务,并与子任务同步的方法;
所述Task是任意用户级任务的任务例程的抽象,是公开给用户的接口,由用户自主定义任务执行函数,并提供fork方法;
ExecList是专门存放即将执行或正在执行中的FixSizedTask的容器,其中的FixSizedTask不能被其他工作线程窃取;
FreeList是专门存放预先构造好的空的FixSizedTask的容器,新任务创建时能够随时取用,任务执行完要回收到该容器;
ReadyList是专门存放待执行的FixSizedTask的容器,其中的FixSizedTask是能够被其他工作线程窃取的;
StolenList是专门存放已经被其他工作现场窃取的FixSizedTask的容器,所述FixSizedTask虽被窃取,物理上仍位于本地对象池Arena的FixSizedTask中;
步骤1-4,将所述对象池Arena的所有FixSizedTask中的任务指针加入所述对象池Arena的FreeList中;
步骤1-5,初始化用于暂存用户提交的任务的Buffer,Buffer是Task的缓存区,专门存放由用户提交的Task,而非fork方法产生的子任务Task。
2.根据权利要求1所述的方法,其特征在于,步骤1-1中,所述工作线程Worker对应一个物理线程,持有一个Buffer和一个对象池Arena;工作线程Worker在闲暇时会自适应地进行休眠。
3.根据权利要求2所述的方法,其特征在于,所述对象池Arena为对应工作线程Worker拥有的子任务的任务容器,由ExecList,ReadyList,FreeList,StolenList和FixSizedTask组成;ExecList,ReadyList,FreeList,StolenList只存放FixSizedTask指针,用于进行空闲对象管理,兼具内存池和预构造对象池的功能。
4.根据权利要求3所述的方法,其特征在于,步骤1-3中,所述ExecList,FreeList,ReadyList,StolenList均为无锁栈数据结构,支持无锁的并发push与pop操作,其中ReadyList和StolenList是免疫ABA问题的。
5.根据权利要求4所述的方法,其特征在于,步骤1-5中,所述任务在物理上顺序存放于预先构造好的Task中,FreeList,ReadyList,StolenList,ExecList只存放Task的指针;所述任务有如下共同的元数据:
next指针;
用于解决ABA问题的引用计数器refcnt;
用于统计未结束的子任务数量的依赖计数器pendingcnt;
父任务指针parent;
每个工作线程Worker有个从0开始递增的序号,即工作线程WorkerID,以位图形式表示工作线程WorkerID和location的状态字段state,location是一个数字,用于代表所述任务位于哪个容器,有以下几种可能:FreeList,ReadyList,ExecList,StolenList,本地线程的运行栈,Buffer的空闲区间,Buffer的可用区间,Buffer的被窃取区间;
用于同步的synced字段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电子科技集团公司第二十八研究所,未经中国电子科技集团公司第二十八研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910745905.4/1.html,转载请声明来源钻瓜专利网。