CN105786624A - 一种基于redis与RDMA技术的调度平台 - Google Patents
一种基于redis与RDMA技术的调度平台 Download PDFInfo
- Publication number
- CN105786624A CN105786624A CN201610199798.6A CN201610199798A CN105786624A CN 105786624 A CN105786624 A CN 105786624A CN 201610199798 A CN201610199798 A CN 201610199798A CN 105786624 A CN105786624 A CN 105786624A
- Authority
- CN
- China
- Prior art keywords
- main process
- computing module
- rdma
- module
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于redis与RDMA技术的调度平台,属于数据调度技术领域;本发明的调度平台设置前处理计算模块、辅处理计算模块、主处理调度模块、主处理计算模块、辅处理调度模块,通过模块之间的相互作用,针对要求传输体积较大并且调度速率较高情况,利用注册本地内存、获取用户数据到本地内存、RDMA推送消息到处理调度模块,处理调度模块通过redis获取节点状态资源等信息、可以依据fifo机制将任务用RDMA推送至空闲节点进行计算。实现高可靠调度计算,用户可以根据自己的调度流程实现具体方案定制,具有良好的可移植性,实现了大数据分派传输的高效调度。
Description
技术领域
本发明公开一种基于redis与RDMA技术的调度平台,属于数据调度技术领域。
背景技术
调度平台是高性能服务器一项重要服务,可以将用户任务通过调度平台进行调度,实现高效运算。将任务上报给资源少且空闲的节点进行运算,将结果返回给用户。当前有很多的调度平台例如torque,调度策略是按着fifo原则调度,但是对于有些用户计算体积较大的数据,不仅需要本地计算,还需将计算的大数据包反馈到下一个节点再次计算,分发的情况,若按着现有的调度框架进行数据的调度分派,则在效率上有明显的不足,不仅出现明显的网络延时,同时消息通知也不灵活而显得力不从心。此外随着对调度平台的要求不断提高,对大数据传递接力传递在有些领域兴起,急需既能用户定制自己的调度策略,又可以将大数据以最小的延时准确的传到下一个节点的调度平台,本发明提供一种调度平台,针对要求传输体积较大并且调度速率较高情况,利用注册本地内存、获取用户数据到本地内存、RDMA推送消息到调度节点与辅处理节点、调度节点通过redis获取节点状态资源等信息、依据fifo机制将任务用RDMA推送至空闲节点进行计算。
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
RDMA(RemoteDirectMemoryAccess)技术全称远程直接数据存取。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,不需要用到多少计算机的处理功能。它消除了外部存储器复制和文本交换操作,因而能解放内存带宽和CPU周期用于改进应用系统性能。
发明内容
本发明针对现有技术中问题,提供一种基于redis与RDMA技术的调度平台,易于理解,便于维护,并可以添加自己定制的计算过程。适用于对调度速率要求比较高的大数据传输。
本发明提出的具体方案是:
一种基于redis与RDMA技术的调度平台,调度平台设置前处理计算模块、辅处理计算模块、主处理调度模块、主处理计算模块、辅处理调度模块,
前处理计算模块负责读取用户的大数据,将数据放入本地的注册内存,分发数据包到辅处理计算模块与主理调度模块,
辅处理计算模块利用RDMA读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包存入发送注册内存,
主处理调度模块利用RDMA读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包分发给占用资源少,且任务空闲的主处理计算节点进行计算,并且利用RDMA将计算结果读回,放入发送注册内存,
主处理计算模块将自身的信息发布在redis中,将主处理计算节点进行排序,若主处理调度模块有任务分派,则查找可用主处理计算节点,派发任务,利用RDMA读取主处理调度模块的发送注册内存,将数据读取到本地注册内存,根据用户的计算策略将计算后的数据包发送给主处理调度模块,
辅处理调度模块接收来自辅处理计算模块与主处理计算模块的结果,将两个结果分别放入自己本地注册内存,根据用户计算策略将计算后的数据包分发给状态正常、占用资源少,且任务空闲的主处理计算节点进行计算,利用RDMA将计算结果读回,放入发送注册内存,将结果输出。
主处理调度模块及辅处理调度模块涉及的消息通知都是通过redis完成。
主处理计算模块将状态信息,任务信息,资源信息发布在redis中。
前处理计算模块读取用户的大数据,将数据按照固定频率放入本地的注册内存,并按照固定频率分发数据包到辅处理计算模块与主处理调度模块。
主处理调度模块利用RDMA按照固定频率远程读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包按照fifo原则分发给占用资源少,且任务空闲的主处理计算节点进行计算。
辅处理计算模块利用RDMA按照固定频率远程读取前处理计算模块注册内存的数据包。
主处理调度模块在派发任务前查看主处理计算节点的状态信息,通过发ack包确认是否连接正常。
本发明的有益之处是:
本发明的调度平台设置前处理计算模块、辅处理计算模块、主处理调度模块、主处理计算模块、辅处理调度模块,通过模块之间的相互作用,针对要求传输体积较大并且调度速率较高情况,利用注册本地内存、获取用户数据到本地内存、RDMA推送消息到处理调度模块,处理调度模块通过redis获取节点状态资源等信息、可以依据fifo机制将任务用RDMA推送至空闲节点进行计算。实现高可靠调度计算,用户可以根据自己的调度流程实现具体方案定制,具有良好的可移植性,实现了大数据分派传输的高效调度。
具体实施方式
一种基于redis与RDMA技术的调度平台,调度平台设置前处理计算模块、辅处理计算模块、主处理调度模块、主处理计算模块、辅处理调度模块,
前处理计算模块负责读取用户的大数据,将数据放入本地的注册内存,分发数据包到辅处理计算模块与主理调度模块,
辅处理计算模块利用RDMA读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包存入发送注册内存,
主处理调度模块利用RDMA读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包分发给占用资源少,且任务空闲的主处理计算节点进行计算,并且利用RDMA将计算结果读回,放入发送注册内存,
主处理计算模块将自身信息发布在redis中,将主处理计算节点进行排序,若主处理调度模块有任务分派,则查找可用主处理计算节点,派发任务,利用RDMA读取主处理调度模块的发送注册内存,将数据读取到本地注册内存,根据用户的计算策略将计算后的数据包发送给主处理调度模块,
辅处理调度模块接收来自辅处理计算模块与主处理计算模块的结果,将两个结果分别放入自己本地注册内存,根据用户计算策略将计算后的数据包分发给状态正常、占用资源少,且任务空闲的主处理计算节点进行计算,利用RDMA将计算结果读回,放入发送注册内存,将结果输出。
根据上述调度平台及发明内容,对本发明做进一步说明。
一种基于redis与RDMA技术的调度平台,设置前处理计算模块、辅处理计算模块、主处理调度模块、主处理计算模块、辅处理调度模块,
前处理计算模块负责读取用户的大数据,将数据按照固定频率放入本地的注册内存,并按照固定频率分发数据包到辅处理计算模块与主处理调度模块,
辅处理计算模块利用RDMA按照固定频率远程读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包存入发送注册内存,
主处理调度模块利用RDMA按照固定频率远程读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包按照fifo原则分发给占用资源少,且任务空闲的主处理计算节点进行计算,并且利用RDMA将计算结果读回,放入发送注册内存,
主处理计算模块将状态信息,任务信息,资源信息发布在redis中,将主处理计算节点进行排序,若主处理调度模块有任务分派,则查找可用主处理计算节点,派发任务,而主处理调度模块在派发任务前查看主处理计算节点的状态信息,通过发ack包确认是否连接正常;主处理计算模块利用RDMA读取主处理调度模块的发送注册内存,将数据读取到本地注册内存,根据用户的计算策略将计算后的数据包发送给主处理调度模块,
辅处理调度模块接收来自辅处理计算模块与主处理计算模块的结果,将两个结果分别放入自己本地注册内存,根据用户计算策略将计算后的数据包分发给状态正常、占用资源少,且任务空闲的主处理计算节点进行计算,利用RDMA将计算结果读回,放入发送注册内存,将结果输出。
上述主处理调度模块及辅处理调度模块涉及的消息通知都是通过redis完成。
上述调度平台中主要涉及的以下过程,其主要的代码可以如下表示:
RDMA用于读写,则可以通过创建标识符以及QP对实现,例如主要代码可以为:
int
getaddrinfo_and_create_ep(structcontext*ctx)
{
intret;
structrdma_addrinfo*rai,hints;
structibv_qp_init_attrqp_init_attr;
memset(&hints,0x00,sizeof(hints));
hints.ai_port_space=RDMA_PS_TCP;
hints.ai_flags=RAI_PASSIVE;//*thismakdsitaserver*//
printf("rdma_getaddrinfo\n");
ret=rdma_getaddrinfo(ctx->server_name,ctx->server_port,&hints,&rai);
if(ret){
VERB_ERR("rdma_getaddrinfo",ret);
returnret;
}
memset(&qp_init_attr,0x00,sizeof(qp_init_attr));
qp_init_attr.cap.max_send_wr=1;
qp_init_attr.cap.max_recv_wr=1;
qp_init_attr.cap.max_send_sge=1;
qp_init_attr.cap.max_recv_sge=1;
printf("rdma_create_ep\n");
ret=rdma_create_ep(&ctx->id,rai,NULL,&qp_init_attr);
if(ret){
VERB_ERR("rdma_create_ep\n",ret);
returnret;
}
rdma_freeaddrinfo(rai);
return0;
}
其中RDMA的内存注册用于注册远程内存,例如主要代码可以为:
int
reg_mem_for_read(structcontext*ctx)
{
gettimeofday(&start,NULL);
ctx->buf=(char*)malloc(ctx->msg_length);
memset(ctx->buf,0x00,ctx->msg_length);
printf("rdma_reg_msgs\n");
#if0
ctx->mr=rdma_reg_msgs(ctx->id,ctx->buf,ctx->msg_length);
if(!ctx->mr){
VERB_ERR("rdma_reg_msgs",-1);
return-1;
}
#endif
/*itispossibletobereadfromremote*/
ctx->mr=rdma_reg_read(ctx->id,ctx->buf,ctx->msg_length);
if(!ctx->mr){
VERB_ERR("rdma_reg_msgs",-1);
return-1;
}
return0;
}
RDMA读写远程内存,例如主要代码可以为:
int
read_msg(structcontext*ctx)
{
intret;
structibv_wcwc;
intfd;
charbuf[24];
ret=rdma_post_read(ctx->id,NULL,ctx->buf,ctx->msg_length,
ctx->mr,IBV_SEND_SIGNALED,ctx->peer_info->addr,
ctx->peer_info->rkey);
if(ret){
VERB_ERR("rdma_post_read",ret);
returnret;
}
return0;
}
Redis上报自己的状态,例如主要代码可以为:
structmessage{
intmsg_id;
floatmsg_value;
};
int
main(intargc,char**argv)
{
unsignedinti;
redisContext*c;
redisReply*reply;
constchar*hostname=(argc>1)?argv[1]:"127.0.0.1";
intport=(argc>2)?atoi(argv[2]):6379;
structmessaget;
char*buf;
structtimevaltimeout={1,500000};//1.5seconds
c=redisConnectWithTimeout(hostname,port,timeout);
if(c==NULL||c->err){
if(c){
printf("Connectionerror:%s\n",c->errstr);
redisFree(c);
}else{
printf("Connectionerror:can'tallocaterediscontext\n");
}
exit(1);
}
buf=malloc(sizeof(structmessage));
for(i=0;i<10000;i++){
t.msg_id=i;
t.msg_value=i+0.1;
memcpy(buf,&t,sizeof(structmessage));
/*
*sendbinarydata;
*/
reply=redisCommand(c,"LPUSHtest_list%b",buf,sizeof(structmessage));
freeReplyObject(reply);
}
free(buf);
/*Disconnectsandfreesthecontext*/
redisFree(c);
return0;
}
由此利用本发明调度平台,针对要求传输体积较大并且调度速率较高情况,实现高可靠调度计算,用户可以根据自己的调度流程实现具体方案定制,具有良好的可移植性,实现了大数据分派传输的高效调度。
Claims (7)
1.一种基于redis与RDMA技术的调度平台,其特征是调度平台设置前处理计算模块、辅处理计算模块、主处理调度模块、主处理计算模块、辅处理调度模块,
前处理计算模块负责读取用户的大数据,将数据放入本地的注册内存,分发数据包到辅处理计算模块与主理调度模块,
辅处理计算模块利用RDMA读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包存入发送注册内存,
主处理调度模块利用RDMA读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包分发给占用资源少,且任务空闲的主处理计算节点进行计算,并且利用RDMA将计算结果读回,放入发送注册内存,
主处理计算模块将自身的信息发布在redis中,将主处理计算节点进行排序,若主处理调度模块有任务分派,则查找可用主处理计算节点,派发任务,利用RDMA读取主处理调度模块的发送注册内存,将数据读取到本地注册内存,根据用户的计算策略将计算后的数据包发送给主处理调度模块,
辅处理调度模块接收来自辅处理计算模块与主处理计算模块的结果,将两个结果分别放入自己本地注册内存,根据用户计算策略将计算后的数据包分发给状态正常、占用资源少,且任务空闲的主处理计算节点进行计算,利用RDMA将计算结果读回,放入发送注册内存,将结果输出。
2.根据权利要求1所述的调度平台,其特征是主处理调度模块及辅处理调度模块涉及的消息通知都是通过redis完成。
3.根据权利要求1或2所述的调度平台,其特征是主处理计算模块将状态信息,任务信息,资源信息发布在redis中。
4.根据权利要求3所述的调度平台,其特征是前处理计算模块读取用户的大数据,将数据按照固定频率放入本地的注册内存,并按照固定频率分发数据包到辅处理计算模块与主处理调度模块。
5.根据权利要求4所述的调度平台,其特征是主处理调度模块利用RDMA按照固定频率远程读取前处理计算模块注册内存的数据包,根据用户的计算策略将计算后的数据包按照fifo原则分发给占用资源少,且任务空闲的主处理计算节点进行计算。
6.根据权利要求4或5所述的调度平台,其特征是辅处理计算模块利用RDMA按照固定频率远程读取前处理计算模块注册内存的数据包。
7.根据权利要求6所述的调度平台,其特征是主处理调度模块在派发任务前查看主处理计算节点的状态信息,通过发ack包确认是否连接正常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610199798.6A CN105786624B (zh) | 2016-04-01 | 2016-04-01 | 一种基于redis与RDMA技术的调度平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610199798.6A CN105786624B (zh) | 2016-04-01 | 2016-04-01 | 一种基于redis与RDMA技术的调度平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105786624A true CN105786624A (zh) | 2016-07-20 |
CN105786624B CN105786624B (zh) | 2019-06-25 |
Family
ID=56395343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610199798.6A Active CN105786624B (zh) | 2016-04-01 | 2016-04-01 | 一种基于redis与RDMA技术的调度平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105786624B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408243A (zh) * | 2018-11-13 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种基于rdma的数据处理方法、装置和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040049600A1 (en) * | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | Memory management offload for RDMA enabled network adapters |
CN101577716A (zh) * | 2009-06-10 | 2009-11-11 | 中国科学院计算技术研究所 | 基于InfiniBand网络的分布式存储方法和系统 |
CN102073593A (zh) * | 2010-11-15 | 2011-05-25 | 浪潮(北京)电子信息产业有限公司 | 内存中数据块的发送、接收方法和装置及传输系统 |
CN102831018A (zh) * | 2011-06-15 | 2012-12-19 | 塔塔咨询服务有限公司 | 低延迟先进先出消息交换系统 |
CN103634350A (zh) * | 2012-08-24 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 一种存储系统及其实现方法 |
-
2016
- 2016-04-01 CN CN201610199798.6A patent/CN105786624B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040049600A1 (en) * | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | Memory management offload for RDMA enabled network adapters |
CN101577716A (zh) * | 2009-06-10 | 2009-11-11 | 中国科学院计算技术研究所 | 基于InfiniBand网络的分布式存储方法和系统 |
CN102073593A (zh) * | 2010-11-15 | 2011-05-25 | 浪潮(北京)电子信息产业有限公司 | 内存中数据块的发送、接收方法和装置及传输系统 |
CN102831018A (zh) * | 2011-06-15 | 2012-12-19 | 塔塔咨询服务有限公司 | 低延迟先进先出消息交换系统 |
CN103634350A (zh) * | 2012-08-24 | 2014-03-12 | 阿里巴巴集团控股有限公司 | 一种存储系统及其实现方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408243A (zh) * | 2018-11-13 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种基于rdma的数据处理方法、装置和介质 |
CN109408243B (zh) * | 2018-11-13 | 2021-08-10 | 郑州云海信息技术有限公司 | 一种基于rdma的数据处理方法、装置和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105786624B (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254982B (zh) | 一种流数据处理方法、系统、装置及计算机可读存储介质 | |
CN111381983B (zh) | 虚拟试验靶场验证系统的轻量级消息中间件系统及方法 | |
US8447881B2 (en) | Load balancing for services | |
CN103414579A (zh) | 一种适用于云计算的跨平台监控系统及其监控方法 | |
CN103442049A (zh) | 一种面向构件的混合型云操作系统体系结构及其通信方法 | |
US20130219009A1 (en) | Scalable data feed system | |
TW202038581A (zh) | 管理用戶端、設備監控系統及方法 | |
US10303529B2 (en) | Protocol for communication of data structures | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
US9590885B1 (en) | System and method of calculating and reporting of messages expiring from a queue | |
CN103067486B (zh) | 基于PaaS平台的大数据处理方法 | |
CN101373428A (zh) | 中间件的整合系统 | |
CN114221995B (zh) | 服务调用方法、装置及电子设备 | |
JP2020198636A (ja) | 効率的な呼処理のためのシステムおよび方法 | |
CN111200606A (zh) | 深度学习模型任务处理方法、系统、服务器及存储介质 | |
CN102932269A (zh) | 负载均衡的实现方法和装置 | |
US20200220910A1 (en) | Idempotent processing of data streams | |
CN115834708A (zh) | 负载均衡方法、装置、设备及计算机可读存储介质 | |
Patro et al. | Comparative study of middleware solutions for control and monitoring systems | |
CN115865874A (zh) | 一种会议消息推送方法、会议服务端及电子设备 | |
CN105786624A (zh) | 一种基于redis与RDMA技术的调度平台 | |
US20210157691A1 (en) | Inter-processor communications fault handling in high performance computing networks | |
CN111294383B (zh) | 物联网服务管理系统 | |
CN115250276A (zh) | 分布式系统及数据处理的方法和装置 | |
CN111813621A (zh) | 基于Flume数据中台的数据处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |