CN104750543B - 线程创建方法、业务请求处理方法及相关设备 - Google Patents
线程创建方法、业务请求处理方法及相关设备 Download PDFInfo
- Publication number
- CN104750543B CN104750543B CN201310733930.3A CN201310733930A CN104750543B CN 104750543 B CN104750543 B CN 104750543B CN 201310733930 A CN201310733930 A CN 201310733930A CN 104750543 B CN104750543 B CN 104750543B
- Authority
- CN
- China
- Prior art keywords
- network interface
- thread
- queue
- interface card
- hardware core
- 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.)
- Active
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/5083—Techniques for rebalancing the load in a distributed system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Telephonic Communication Services (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种线程创建方法、业务请求处理方法及相关设备,包括:获取服务器的多队列网卡的网卡队列数;并创建与网卡队列数相等数量的进程;并在每个进程中创建一个监听线程和多个工作线程;以及将创建的每个监听线程分别与不同的网卡队列绑定。采用本发明实施例提供的方案,使得进程和线程创建更合理,且提高了服务器对并发的业务请求的处理效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种线程创建方法、业务请求处理方法及相关设备。
背景技术
随着Internet的迅猛发展,人们对Web服务器的访问日益频繁,从而对Web服务器的性能也提出越来越高的要求。为了能够向用户提供更加快捷的服务,Web服务器对处理并发访问的要求越来越高。当用户并发访问量过高时,服务器就会超载,Web站点的访问速度就会下降。为了能够容纳更多的用户同时访问,尽可能提升Web服务器性能,需要尽量改善Web服务器的处理器能力,使用更加强大的计算机芯片。
近几年,计算机芯片制作工艺的不断提高,众核处理器已经成为了处理器发展的一个重要趋势。众核处理器比多核处理器中的处理内核数量还要多,计算能力更强大。当前的软件结构可以在当前的多核结构上得到较好的扩展,但如果超过八个处理器核,当前软件结构的扩展能力将会很差。超过八个处理器核的设计即被称为“众核”处理器。
众核处理器拥有比普通的多核处理器更多的处理单元,以及更加强大的并行处理能力。越来越多的Web服务器正在采用这种强大的众核环境作为其提升性能的基础。当今的软件结构已经可以在普通的多核处理器上得到较好的扩展。但是,在众核处理器环境下,如何保证软件能够随着硬件核数地增多更加高效地扩展,已经逐渐变成众核软件设计的核心问题。
另一方面,基于众核处理器的多内核操作系统也在不断发展。在多内核操作系统中,每一个硬件核(core)都有自已的一个内核(kernel),并且不共享内存,这一点有别于现存的Windows与基于Linux内核的操作系统。内核之间的通信通过消息传递方式,在内核数量很大的情况下要优于传统的共享内存的通信方式,能充分利用众核处理芯片。目前,已经有一些基于多内核操作系统的应用,例如基于Barrelfish的Haskell编译器、虚拟机等。在众核环境下,它们的性能明显地高出传统的操作系统。
伴随着Web服务器对处理器的需求显著增加,如果能够利用多内核操作系统的优势,就可以尽可能充分发挥众核环境的处理能力,所以,如何将Web服务器的软件部署在多内核操作系统中即成为核心的问题。
在Windows、Linux等操作系统中,目前的Web服务器软件是针对操作系统的进程线程模型,使用特定的方式创建和管理进程线程来进行多任务的管理,从而同时响应并发请求。如果将现有的多任务管理方式直接地运用在多内核操作系统中,会引人一些不必要的系统开销,从而导致无法发挥众核环境的优越性。
在针对多任务管理的问题上,现有技术中已经存在了一些成熟的方法和模型。一个典型的多任务管理方法叫做Prefork(预派生)。Prefork实现了一个非线程型的、预派生的web服务器。
在Prefork方法中,一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。并且,Web服务器总是试图保持一些备用的(spare)或者是空闲的子进程,用于准备对将到来的请求进行处理,从而使得客户端不需要在得到服务前等候子进程的产生,以提高对请求的处理效率。
然而,在上述Prefork方法中,虽然可以让预先创建好的进程处理新的请求,以避免客户端等待服务端创建处理进程而影响响应速度,但仍然存在如下问题:
进程过多会占有过多的不必要的系统资源,浪费了系统的空间资源,并且增加操作系统调度进程的开销,浪费了系统的时间资源,并且是利用进程来完成对请求的处理,而没有利用线程的优势,代价较大。
另一种常用的Web服务器的多任务管理方法是Worker,Worker方法支持混合的多线程多进程。
在Worker方法中,总是试图维持一个备用(spare)或是空闲的服务线程池,这样,客户端的请求无须等待新线程或新进程的建立即可得到处理。初始化时建立一定数量进程,随后父进程检测所有子进程中空闲线程的总数,并新建或结束子进程使空闲线程的总数维持在一定的范围内。
并且,如图1所示,可以创建多个进程,例如,进程1至进程4,一个进程下所创建的线程中,可以包括一个监听线程(listener)和多个工作线程(worker),且各个线程会被随机调度到空闲的硬件核上,如图1中的硬件核1至硬件核8。在创建多进程和多线程后,由多个进程的多个监听线程向系统请求竞争一个锁,并在请求到锁后才能监听,并将监听得到的业务请求分配给与自身属于同一个进程的空闲的工作线程。
在Worker方法中,由于使用线程来处理业务请求,所以可以处理海量请求,而系统资源的开销小于基于进程的管理方法。
然而,由于多个监听线程需要向系统请求竞争一个锁,随着硬件核数的增加,竞争加剧,导致服务器的处理能力无法随着硬件核数的增加而线性增加,进而由于进程和线程创建的不合理,导致服务器对并发的多业务请求的处理效率较低。
发明内容
本发明实施例提供一种线程创建方法、业务请求处理方法及相关设备,用以解决现有技术中存在的线程创建不合理的问题,以及因此导致的服务器对并发的业务请求的处理效率较低的问题。
第一方面,提供一种线程创建方法,应用于具有多队列网卡的服务器,所述多队列网卡的网卡队列中存储来自客户端的业务请求,包括:
获取所述服务器的所述多队列网卡的网卡队列数;
创建与所述网卡队列数相等数量的进程;
在每个进程中创建一个监听线程和多个工作线程;
将创建的每个监听线程分别与不同的网卡队列绑定。
结合第一方面,在第一种可能的实现方式中,所述服务器具有多硬件核处理器;
将创建的每个监听线程分别与不同的网卡队列绑定,包括:
将创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,将所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
将每个进程中创建的工作线程绑定一个硬件核。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
结合第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
当所述服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程;
将创建的新的工作线程与新增加的该硬件核绑定。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第五种可能的实现方式中,还包括:
当所述服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程;
在创建的新进程中创建一个监听线程和多个工作线程;
将在新进程中创建的监听线程与新增加的该网卡队列绑定。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第六种可能的实现方式中,还包括:
当一个进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
第二方面,提供一种业务请求处理方法,应用于服务器的多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述方法包括:
所述多队列网卡从自身的网卡队列中获取来自客户端的业务请求;
向与该网卡队列绑定的监听线程发送所述业务请求;
接收与该监听线程属于同一进程的工作线程对所述业务请求进行业务处理后发送的业务处理结果;
向所述客户端返回所述业务处理结果。
结合第二方面,在第一种可能的实现方式中,在从自身的网卡队列中获取来自客户端的业务请求之前,还包括:
接收已创建的各监听线程分别发送的业务请求获取消息,所述业务请求获取消息中携带监听线程绑定的网卡队列的队列标识;
确定发送所述业务请求获取消息的监听线程,与所述业务请求获取消息中携带的所述队列标识对应的网卡队列相绑定。
结合第二方面,在第二种可能的实现方式中,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
向与该网卡队列绑定的监听线程发送所述业务请求,包括:
向与该网卡队列绑定的目标硬件核上运行的监听线程发送所述业务请求。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,每个进程中创建的工作线程绑定一个硬件核。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
第三方面,提供一种业务请求处理方法,应用于服务器上创建的监听线程,所述服务器具有多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述方法包括:
监听线程接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求;
向与该监听线程属于同一进程的处于空闲状态的工作线程发送所述业务请求,用于指示该工作线程对所述业务请求进行业务处理,并将得到的业务处理结果发送给所述多队列网卡。
结合第三方面,在第一种可能的实现方式中,在接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求之前,还包括:
向所述多队列网卡发送业务请求获取消息,所述业务请求获取消息中携带该监听线程绑定的网卡队列的队列标识,用于所述多队列网卡确定该监听线程与所述队列标识对应的网卡队列相绑定。
结合第三方面,在第二种可能的实现方式中,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
监听线程接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求,包括:
监听线程接收所述服务器的多队列网卡发送的从与运行该监听线程的目标硬件核绑定的网卡队列中获取的来自客户端的业务请求。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,每个进程中创建的工作线程绑定一个硬件核。
结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式或者第三方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
第四方面,提供一种线程创建装置,应用于具有多队列网卡的服务器,所述多队列网卡的网卡队列中存储来自客户端的业务请求,包括:
数量获取单元,用于获取所述服务器的所述多队列网卡的网卡队列数;
进程创建单元,用于创建与所述网卡队列数相等数量的进程;
线程创建单元,用于在每个进程中创建一个监听线程和多个工作线程;
绑定单元,用于将创建的每个监听线程分别与不同的网卡队列绑定。
结合第四方面,在第一种可能的实现方式中,所述服务器具有多硬件核处理器;
所述绑定单元,具体用于将创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,将所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量。
结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述绑定单元,还用于将每个进程中创建的工作线程绑定一个硬件核。
结合第四方面的第二种可能的实现方式,在第三种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
结合第四方面的第一种可能的实现方式、第四方面的第二种可能的实现方式或者第四方面的第三种可能的实现方式,在第四种可能的实现方式中,所述线程创建单元,还用于当所述服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程;
所述绑定单元,还用于将创建的新的工作线程与新增加的该硬件核绑定。
结合第四方面、第四方面的第一种可能的实现方式、第四方面的第二种可能的实现方式或者第四方面的第三种可能的实现方式,在第五种可能的实现方式中,所述进程创建单元,还用于当所述服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程;
所述线程创建单元,还用于在创建的新进程中创建监听线程和工作线程;
所述绑定单元,还用于将在新进程中创建的监听线程与新增加的该网卡队列绑定。
结合第四方面、第四方面的第一种可能的实现方式、第四方面的第二种可能的实现方式或者第四方面的第三种可能的实现方式,在第六种可能的实现方式中,所述线程创建单元,还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
第五方面、提供一种业务请求处理装置,应用于服务器的多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述装置包括:
业务请求获取单元,用于从所述多队列网卡的网卡队列中获取来自客户端的业务请求;
第一发送单元,用于向与该网卡队列绑定的监听线程发送所述业务请求;
接收单元,用于接收与该监听线程属于同一进程的工作线程对所述业务请求进行业务处理后发送的业务处理结果;
第二发送单元,用于向所述客户端返回所述业务处理结果。
结合第五方面,在第一种可能的实现方式中,所述接收单元,还用于所述业务请求获取单元在从所述多队列网卡的网卡队列中获取来自客户端的业务请求之前,接收已创建的各监听线程分别发送的业务请求获取消息,所述业务请求获取消息中携带监听线程绑定的网卡队列的队列标识;
所述装置,还包括:
绑定关系确定单元,用于确定发送所述业务请求获取消息的监听线程,与所述业务请求获取消息中携带的所述队列标识对应的网卡队列相绑定。
结合第五方面,在第二种可能的实现方式中,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
所述第一发送单元,具体用于向与该网卡队列绑定的目标硬件核上运行的监听线程发送所述业务请求。
结合第五方面的第二种可能的实现方式,在第三种可能的实现方式中,每个进程中创建的工作线程绑定一个硬件核。
结合第五方面的第三种可能的实现方式,在第四种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
第六方面,提供一种业务请求处理装置,应用于服务器上创建的监听线程,所述服务器具有多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述装置包括:
接收单元,用于接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求;
第一发送单元,用于向与该监听线程属于同一进程的处于空闲状态的工作线程发送所述业务请求,用于指示所述工作线程对所述业务请求进行业务处理,并将得到的业务处理结果发送给所述多队列网卡。
结合第六方面,在第一种可能的实现方式中,还包括:
第二发送单元,用于在所述接收单元接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求之前,向所述多队列网卡发送业务请求获取消息,所述业务请求获取消息中携带所述监听线程绑定的网卡队列的队列标识,用于所述多队列网卡确定所述监听线程与所述队列标识对应的网卡队列相绑定。
结合第六方面,在第二种可能的实现方式中,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
所述接收单元,具体用于接收所述服务器的多队列网卡发送的从与运行该监听线程的目标硬件核绑定的网卡队列中获取的来自客户端的业务请求。
结合第六方面的第二种可能的实现方式,在第三种可能的实现方式中,每个进程中创建的工作线程绑定一个硬件核。
结合第六方面的第三种可能的实现方式,在第四种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
结合第六方面、第六方面的第一种可能的实现方式、第六方面的第二种可能的实现方式、第六方面的第三种可能的实现方式或者第六方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
线程创建单元,用于当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
用于当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
第七方面,提供一种服务器,包括:
多队列网卡,用于接收来自客户端的业务请求,并在自身的网卡队列中存储来自客户端的业务请求;
处理器,用于获取所述服务器的所述多队列网卡的网卡队列数;并创建与所述网卡队列数相等数量的进程;并在每个进程中创建一个监听线程和多个工作线程;以及将创建的每个监听线程分别与不同的网卡队列绑定。
结合第七方面,在第一种可能的实现方式中,处理器为多硬件核处理器;
处理器,具体用于将创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,将所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量。
结合第七方面的第一种可能的实现方式,在第二种可能的实现方式中,处理器,还用于将每个进程中创建的工作线程绑定一个硬件核。
结合第七方面的第二种可能的实现方式,在第三种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
结合第七方面的第一种可能的实现方式、第七方面的第二种可能的实现方式或者第七方面的第三种可能的实现方式,在第四种可能的实现方式中,处理器,还用于当所述服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程;并将创建的新的工作线程与新增加的该硬件核绑定。
结合第七方面、第七方面的第一种可能的实现方式、第七方面的第二种可能的实现方式或者第七方面的第三种可能的实现方式,在第五种可能的实现方式中,处理器,还用于当所述服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程;并在创建的新进程中创建一个监听线程和多个工作线程;以及将在新进程中创建的监听线程与新增加的该网卡队列绑定。
结合第七方面、第七方面的第一种可能的实现方式、第七方面的第二种可能的实现方式或者第七方面的第三种可能的实现方式,在第六种可能的实现方式中,处理器,还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
第八方面,提供一种服务器的多队列网卡,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,该多队列网卡,包括:
接口,用于接收来自客户端的业务请求,并存储到网卡队列中;
处理芯片,用于从多队列网卡的网卡队列中获取来自客户端的业务请求;并向与该网卡队列绑定的监听线程发送所述业务请求;并接收与该监听线程属于同一进程的工作线程对所述业务请求进行业务处理后发送的业务处理结果;以及向所述客户端返回所述业务处理结果;
存储器,用于存储网卡队列中的来自客户端的业务请求。
结合第八方面,在第一种可能的实现方式中,处理芯片,还用于在从多队列网卡的网卡队列中获取来自客户端的业务请求之前,接收已创建的各监听线程分别发送的业务请求获取消息,所述业务请求获取消息中携带监听线程绑定的网卡队列的队列标识;
确定发送所述业务请求获取消息的监听线程,与所述业务请求获取消息中携带的所述队列标识对应的网卡队列相绑定。
结合第八方面,在第二种可能的实现方式中,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
处理芯片,具体用于向与该网卡队列绑定的目标硬件核上运行的监听线程发送所述业务请求。
结合第八方面的第二种可能的实现方式,在第三种可能的实现方式中,每个进程中创建的工作线程绑定一个硬件核。
结合第八方面的第三种可能的实现方式,在第四种可能的实现方式中,不同进程中创建的工作线程绑定的硬件核不同。
本发明有益效果包括:
本发明实施例提供的方案,应用于具有多队列网卡的服务器,该多队列网卡的网卡队列中存储来自客户端的业务请求,服务器在启动后创建进程和线程时,创建与网卡队列数相等数量的进程,并在每个进程中创建一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,从而在对业务请求进行处理时,针对从一个网卡队列中获取的来自客户端的业务请求,将该业务请求发送给与该网卡队列绑定的监听线程,由该监听线程选择与自身属于同一进程的工作线程对该业务请求进行业务处理,相比现有技术,避免了多个监听进程在请求获取业务请求时对锁的竞争,可以将网络队列中的业务请求直接发送给绑定的监听线程即可,从而使得进程和线程创建更合理,并且因此提高了服务器对并发的业务请求的处理效率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为采用现有技术中的Worker方法创建的多进程和多线程的示意图;
图2为本发明实施例1中提供的线程创建方法的流程图之一;
图3为本发明实施例1中提供的线程创建方法的流程图之二;
图4为本发明实施例1中创建的进程和线程的示意图;
图5为本发明实施例1中绑定的进程和网卡队列的示意图;
图6为本发明实施例1中当硬件核增加时创建新线程的处理流程图;
图7为本发明实施例1中当多队列网卡的网卡队列增加时创建新进程和新线程的处理流程图;
图8为本发明实施例2提供的应用于服务器的多队列网卡的业务请求处理方法的流程图;
图9为本发明实施例2提供的应用于监听线程的业务请求处理方法的流程图;
图10为本发明实施例2提供的业务请求处理方法的流程图;
图11为本发明实施例3提供的线程创建装置的结构示意图;
图12为本发明实施例4提供的业务请求处理装置的结构示意图;
图13为本发明实施例5提供的业务请求处理装置的结构示意图;
图14为本发明实施例6提供的服务器的结构示意图;
图15为本发明实施例7提供的多队列网卡的结构示意图。
具体实施方式
为了给出使得线程创建更合理,且提高服务器对并发的业务请求的处理效率的实现方案,本发明实施例提供了一种线程创建方法、业务请求处理方法及相关设备,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例1:
本发明实施例1提供一种线程创建方法,应用于具有多队列网卡的服务器,多队列网卡的网卡队列中存储来自客户端的业务请求,如图2所示,包括:
步骤201、获取服务器的多队列网卡的网卡队列数。
步骤202、创建与网卡队列数相等数量的进程。
步骤203、在每个进程中创建一个监听线程和多个工作线程。
步骤204、将创建的每个监听线程分别与不同的网卡队列绑定。
在上述线程创建方法中,创建的进程数与网卡队列数相等,且进程中创建的监听线程与不同的网卡队列绑定,从而使得后续可以将每个网卡队列中的业务请求,分配给与该网卡队列绑定的监听线程处理,从而避免了多个监听线程竞争一个锁,使得进程和线程的创建更合理。
该服务器具有多硬件核处理器时,进一步的,在将创建的每个监听线程分别与不同的网卡队列绑定时,具体可以采用如下方式:
将创建的每个监听线程分别与多硬件核处理器中的不同的目标硬件核绑定,将多队列网卡中的每个网卡队列分别与目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,目标硬件核为多硬件核处理器中用于绑定监听线程和网卡队列的所有硬件核,网卡队列的数量等于目标硬件核的数量。
进一步的,还可以将每个进程中创建的工作线程绑定一个硬件核,且不同进程中创建的工作线程绑定的硬件核不同,从而相比现有技术中各个线程被随机调度到空闲的硬件核上的方案,减少了线程调度的开销,使得即便产生大量的线程,也不会因线程在硬件核上的调度而导致对服务器性能造成明显下降。
并且,在将监听线程和工作线程与硬件核绑定之前,还可以获取服务器的多硬件核处理器的硬件核数,并基于该硬件核数进行绑定,使得在将每个进程中创建的工作线程绑定一个硬件核之后,不同进程中创建的监听线程和工作线程绑定的硬件核的数量相差不大于1,以便最大程度的充分利用每个硬件核的处理能力,提高服务器对并发业务请求的整体处理性能。
进一步的,还可以针对多硬件核处理器的硬件核增加的情况,多队列网卡的网卡队列增加的情况,相应的创建新的进程和线程,以及还可以针对一个进程中处于空闲状态的工作线程的数量,创建新的线程或撤销处于空闲状态的工作线程,以便使得处于空闲状态的工作线程处于一个合理的数量,在保证及时对来自客户端的业务请求进行处理的同时,节省系统维持工作进程所使用的系统资源。
下面结合附图,用具体实施例对本发明提供的上述线程创建方法进行详细描述,如图3所示,具体包括如下处理步骤:
步骤301、在服务器被启动后,获取服务器的多队列网卡的网卡队列数。
步骤302、进一步的,还可以获取服务器的多硬件核处理器的硬件核数。
步骤301和步骤302之间没有严格的先后顺序。
步骤303、创建与网卡队列数相等数量的进程。
例如,如图4所示,服务器的多队列网卡的网卡队列数为4,则依据最大并行原则,创建与网卡队列数相等数量的进程,即进程1-进程4。
步骤304、在每个进程中创建监听线程(listener)和工作线程(worker)。
本步骤中,如图4所示,可以在每个进程中创建一个监听线程和多个工作线程,其中,多个工作线程的数量,可以根据服务器的实际应用场景,例如,预期可能的吞吐量、并发业务请求数和响应时间要求等,以及服务器实际的物理硬件处理能力共同决定。
工作线程在创建后,初始状态为空闲状态,当其后续接收到业务请求后,在对业务请求进行业务处理的过程中,其状态为工作状态。
步骤305、将创建的每个监听线程分别与不同的网卡队列绑定。
当每个进程中创建一个监听线程时,创建的监听线程的数量与网卡队列数相同,则可以将数量相等的多个监听线程与多个网卡队列一一对应绑定,如图5所示,进程1-进程4中分别创建的监听线程1-监听线程4,分别于网卡队列1-网卡队列4一一对应绑定。
具体的,该服务器具有多硬件核处理器时,可以从多硬件核处理器的硬件核中选择与网卡队列数数量相等的多个目标硬件核,并将创建的每个监听线程分别与不同的目标硬件核绑定,以及将多队列网卡中的每个网卡队列分别与不同的目标硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定。
步骤306、进一步的,还可以将每个进程中创建的工作线程绑定一个硬件核,且不同进程中创建的工作线程绑定的硬件核不同,以便监听线程和工作线程固定由自身绑定的硬件核运行,避免了由于多个硬件核随机调度监听线程和工作线程所消耗的系统资源,且提高了处理效率。
进一步的,为了提高多个硬件核的利用率,最大程度的平均多个硬件核处理的业务请求数量,还可以根据多硬件核处理器的硬件核数,使得不同进程中创建的监听线程和工作线程绑定的硬件核的数量相差不大于1。
如图4所示,服务器的多硬件核处理器的硬件核数为8,创建的进程的数量为4,则每个进程可以分配用于与监听线程和工作线程绑定的硬件核,进程1对应的硬件核包括硬件核1和硬件核2,进程2对应的硬件核包括硬件核3和硬件核4,进程3对应的硬件核包括硬件核5和硬件核6,进程4对应的硬件核包括硬件核7和硬件核8。
进程1中创建的监听线程和部分工作线程与硬件核1绑定,其余工作线程与硬件核2绑定,进程2-进程3中创建的监听线程和工作线程与硬件核的绑定关系,如图4所示。
本发明实施例中,多队列网卡端口分配需要物理硬件、操作系统以及上层应用全面的支持。物理硬件层面,多队列网卡能够并行接收来自以太网的网络报文。操作系统通过网卡驱动获得网络报文,将其打包并传递给负责网络分发的模块。在传统操作系统中该过程通常是由内核模块来完成,而在多内核操作系统中,该任务主要由运行在用户态的一个服务完成。该服务将网络包分发给物理硬件核上正在运行的监听线程,监听线程解析事务逻辑,根据状态再做相应的转发处理。
并发请求处理是多任务管理系统最为核心的功能。本发明实施例中,处理多任务的最小单元为线程。与通常的多任务处理方法不同的是,这些工作线程都固定绑定在相应的硬件核上,无需被调度。并且,工作线程可以根据当前状态处于工作状态或者空闲状态,而分别保存在工作队列和空闲队列中。在初始部署完成后,所有的工作线程都处于空闲队列中。当一个进程内负责监听业务请求的监听线程收到业务请求后,触发处理事件。此时,在空闲队列中取出一个空闲的工作线程,监听线程将来自客户端的业务请求交给该工作线程处理。此时,该工作线程被送入工作队列,处理该任务。处理结束后,自动从工作队列中取出,进入空闲队列,回到空闲状态。状态的变化可以由触发不同的事件完成。
通过上述图3所示的线程创建方法,将创建的与网卡队列数相同数量的多个监听线程分别与网卡队列一一对应绑定,用于后续接收绑定的网卡队列中的来自客户端的业务请求,并分发给与自身属于同一个进程的处于空闲状态的工作线程进行业务处理,从而使得进程和线程创建更合理,以提高服务器对并发的业务请求的处理效率。
并且,创建的每个监听线程和工作线程还可以绑定一个硬件核,并固定由绑定的硬件核运行,避免了由于多个硬件核随机调度监听线程和工作线程所消耗的系统资源,且提高了处理效率。
在使用服务器对业务请求进行处理的实际应用中,还可以根据实际需要对服务器的处理能力进行扩展,例如,当需要提升服务器的计算能力时,可以扩展硬件核的数量,当需要提升网络吞吐量时,可以扩展多队列网卡的网卡队列数量。
本发明实施例1中,针对服务器处理能力的扩展,在进程和线程的创建上,还提出了如下相应的处理方案:
图6所示为当硬件核增加时创建新线程的处理流程,具体包括:
步骤601、当服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程。
步骤602、将创建的新的工作线程与新增加的该硬件核绑定。
图7所示为当多队列网卡的网卡队列增加时创建新进程和新线程的处理流程,具体包括:
步骤701、当服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程。
步骤702、在创建的新进程中创建一个监听线程和多个工作线程。
步骤703、将在新进程中创建的监听线程与新增加的该网卡队列绑定。
具体的,可以从多硬件核处理器的除目标硬件核之外的其它硬件核中,选择一个作为新的目标硬件核,将新进程中创建的监听线程与该新的目标硬件核绑定,并将新增加的该网卡队列与该新的目标硬件核绑定,从而实现将在新进程中创建的监听线程与新增加的该网卡队列绑定。
步骤704、进一步的,还可以将在新进程中创建的工作线程绑定一个硬件核,如果此时存在新增加的硬件核,可以与新增加的硬件核绑定,如果不存在新增加的硬件核,可以解除一个原有硬件核绑定的工作线程,并将该原有硬件核与在新进程中创建的工作线程进行绑定。
本发明实施例中,在服务器启动后,并采用上述图3所示方法创建进程和线程后,服务器即可以对来自客户端的业务请求进行业务处理,在处理过程中,工作线程的状态在工作状态与空闲状态之间切换,当前处于空闲状态的工作线程的数量,可以表示服务器当前的负载情况,以及对将来并发的业务请求的处理能力。
为了更好地使用硬件资源,服务器可以具备一定动态扩展的能力。一方面,当业务请求负载过高时,如果当前的工作线程的数量无法达到并发量时,需要增加工作线程的数量,以便尽可能发挥硬件的计算能力。反之,如果服务器在某一时间段内的业务请求过少,如果始终维护着大量的工作线程,将浪费硬件的资源,例如能耗。
为了保证对将来并发的业务请求及时处理,可以采用如下第一种方式调整一个进程中的工作线程:
第一种方式:针对每个进程,监控该进程中创建的工作线程中处于空闲状态的工作线程的数量与第一预设阈值的大小关系,并当该进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程,以便为对将来并发的业务请求的及时处理做准备。
进一步的,还可以将创建的新的工作线程与一个硬件核进行绑定,该硬件核为该新的工作线程所属的进程对应的硬件核。
另一方面,由于维持创建的工作线程需要消耗系统资源,所以为了节省系统资源的消耗,还可以采用如下第二种方式调整一个进程中的工作线程:
第二种方式:针对每个进程,监控该进程中创建的工作线程中处于空闲状态的工作线程的数量与第二预设阈值的大小关系,并当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
进一步的,当上述两种方式相结合时,在第二种方式中,撤销后处于空闲状态的工作线程的数量不小于第一预设数量阈值,其中,第一预设数量阈值小于第二预设数量阈值,具体数值可以根据实际应用场景和需要进行灵活设置,在此不再进行详细描述。
上述两种方式相结合,即可以在保证对将来并发的业务请求及时处理的同时,还能够有效节省维持创建的工作线程所消耗的系统资源。
实施例2:
针对本发明实施例1提供的上述线程创建方法,相应的,本发明实施例2提供一种业务请求处理方法,应用于服务器的多队列网卡,该多队列网卡的网卡队列中存储来自客户端的业务请求,如图8所示,包括:
步骤801、多队列网卡从自身的网卡队列中获取来自客户端的业务请求。
步骤802、向与该网卡队列绑定的监听线程发送该业务请求。
步骤803、接收与该监听线程属于同一进程的工作线程对该业务请求进行业务处理后发送的业务处理结果。
步骤804、向客户端返回业务处理结果。
相应的,本发明实施例2还提供了一种业务请求处理方法,应用于监听线程,如图9所示,包括:
步骤901、监听线程接收服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求。
步骤902、向与该监听线程属于同一进程的处于空闲状态的工作线程发送该业务请求,用于指示该工作线程对该业务请求进行业务处理,并将得到的业务处理结果发送给多队列网卡。
下面结合附图,用具体实施例对本发明提供的上述业务请求处理方法进行详细描述,如图10所示,具体包括如下处理步骤:
步骤1001、客户端向服务器发送业务请求。
本发明实施例提供的业务请求处理方法,可应用于各种具体业务场景中,例如,服务器可以为Web服务器,客户端发送的业务请求为Web请求。
步骤1002、服务器通过多队列网卡接收到客户端发送的业务请求后,将保存到网卡队列中,等待被分发给工作线程进行业务处理。
步骤1003、多队列网卡从网卡队列中获取业务请求,并向与该网卡队列绑定的监听线程发送该业务请求。
本发明实施例2中,在多队列网卡一侧保存的网卡队列与监听线程的绑定关系,可以是在创建进程和线程后,预先在多队列网卡一侧进行配置的,也可以由已创建的各监听线程分别向多队列网卡发送业务请求获取消息,该业务请求获取消息中携带监听线程绑定的网卡队列的队列标识,多队列网卡基于接收的每个业务请求获取消息,确定发送该业务请求获取消息的监听线程,与该业务请求获取消息中携带的队列标识对应的网卡队列相绑定。
本步骤中,当通过与网卡队列和监听线程分别绑定的目标硬件核,实现该网卡队列和该监听线程的绑定时,具体可以向与该网卡队列绑定的目标硬件核上运行的监听线程发送该业务请求。
步骤1004、监听线程在接收到服务器的多队列网卡发送的业务请求后,确定一个与自身属于同一进程的且处于空闲状态的工作线程,作为后续将要处理该业务请求的工作线程。
本步骤中,监听线程可以从与自身属于同一进程的且当前处于空闲状态的全部工作线程中,选择一个工作线程,当不存在处于空闲状态的工作线程时,可以创建一个新的工作线程,并在创建完成后,将该新的工作线程作为后续将要处理该业务请求的工作线程。
当创建了新的工作线程时,还可以将该新的工作线程与一个硬件核进行绑定,且该硬件核为新的工作线程所属进程对应的硬件核。
步骤1005、监听线程向确定的该工作线程发送该业务请求。
步骤1006、该工作线程在接收到该业务请求后,对该业务请求进行业务处理,得到业务处理结果。
具体的处理方式可以基于不同的业务应用场景进行确定,例如,当业务请求为Web请求时,可以解析Web请求中携带的URL地址,并通过从磁盘读取文件等处理操作进行业务处理,在此不再进行详细描述。
当工作线程已与一个硬件核绑定时,工作线程由绑定的硬件核运行,并对业务请求进行业务处理,避免了该工作线程在多个硬件核之间的随机调度,节省了调度工作线程所消耗的系统资源,并提高了处理效率。
步骤1007、该工作线程向多队列网卡返回对该业务请求处理后得到的业务处理结果。
步骤1008、多队列网卡将得到业务处理结果返回给对应的客户端,完成对该客户端的业务请求的响应。
采用本发明实施例2提供的上述业务请求处理方法,针对从一个网卡队列中获取的来自客户端的业务请求,可以将该业务请求发送给与该网卡队列绑定的监听线程,由该监听线程选择与自身属于同一进程的工作线程对该业务请求进行业务处理,相比现有技术,避免了多个监听进程在请求获取业务请求时对锁的竞争,可以将网络队列中的业务请求直接发送给绑定的监听线程即可,从而提高了服务器对并发的业务请求的处理效率。
并且,进一步的,每个工作线程可以由绑定的硬件核运行,避免了多个硬件核对工作线程的调度,节省了系统资源的消耗,进一步提高了对并发的业务请求的处理效率。
实施例3:
基于同一发明构思,根据本发明上述实施例提供的线程创建方法,相应地,本发明实施例3还提供了一种线程创建装置,应用于具有多队列网卡的服务器,所述多队列网卡的网卡队列中存储来自客户端的业务请求,其结构示意图如图11所示,具体包括:
数量获取单元1101,用于获取所述服务器的所述多队列网卡的网卡队列数;
进程创建单元1102,用于创建与所述网卡队列数相等数量的进程;
线程创建单元1103,用于在每个进程中创建一个监听线程和多个工作线程;
绑定单元1104,用于将创建的每个监听线程分别与不同的网卡队列绑定。
进一步的,所述服务器具有多硬件核处理器;
绑定单元1104,具体用于将创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,将所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量。
进一步的,绑定单元1104,还用于将每个进程中创建的工作线程绑定一个硬件核。
进一步的,不同进程中创建的工作线程绑定的硬件核不同。
进一步的,线程创建单元1103,还用于当所述服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程;
绑定单元1104,还用于将创建的新的工作线程与新增加的该硬件核绑定。
进一步的,进程创建单元1102,还用于当所述服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程;
线程创建单元1103,还用于在创建的新进程中创建监听线程和工作线程;
绑定单元1104,还用于将在新进程中创建的监听线程与新增加的该网卡队列绑定。
进一步的,线程创建单元1103,还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
上述进程和线程的创建装置中各单元的功能可对应于图2、图3、图6和图7所示流程中的相应处理步骤,在此不再赘述。
实施例4:
基于同一发明构思,根据本发明上述实施例提供的应用于多队列网卡的业务请求处理方法,相应地,本发明实施例4还提供了一种业务请求处理装置,应用于服务器的多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,其结构示意图如图12所示,具体包括:
业务请求获取单元1201,用于从所述多队列网卡的网卡队列中获取来自客户端的业务请求;
第一发送单元1202,用于向与该网卡队列绑定的监听线程发送所述业务请求;
接收单元1203,用于接收与该监听线程属于同一进程的工作线程对所述业务请求进行业务处理后发送的业务处理结果;
第二发送单元1204,用于向所述客户端返回所述业务处理结果。
进一步的,接收单元1203,还用于所述业务请求获取单元1201在从所述多队列网卡的网卡队列中获取来自客户端的业务请求之前,接收已创建的各监听线程分别发送的业务请求获取消息,所述业务请求获取消息中携带监听线程绑定的网卡队列的队列标识;
所述装置,还包括:
绑定关系确定单元1205,用于确定发送所述业务请求获取消息的监听线程,与所述业务请求获取消息中携带的所述队列标识对应的网卡队列相绑定。
进一步的,服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
第一发送单元1202,具体用于向与该网卡队列绑定的目标硬件核上运行的监听线程发送所述业务请求。
进一步的,每个进程中创建的工作线程绑定一个硬件核。
进一步的,不同进程中创建的工作线程绑定的硬件核不同。
上述图12所示的业务请求处理装置中的各单元的功能可对应于图8、图9和图10所示流程中的相应处理步骤,在此不再赘述。
实施例5:
基于同一发明构思,根据本发明上述实施例提供的应用于监听线程的业务请求处理法,相应地,本发明实施例5还提供了一种业务请求处理装置,应用于服务器上创建的监听线程,所述服务器具有多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,其结构示意图如图13所示,具体包括:
接收单元1301,用于接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求;
第一发送单元1302,用于向与该监听线程属于同一进程的处于空闲状态的工作线程发送所述业务请求,用于指示所述工作线程对所述业务请求进行业务处理,并将得到的业务处理结果发送给所述多队列网卡。
进一步的,还包括:
第二发送单元1303,用于在所述接收单元1301接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求之前,向所述多队列网卡发送业务请求获取消息,所述业务请求获取消息中携带所述监听线程绑定的网卡队列的队列标识,用于所述多队列网卡确定所述监听线程与所述队列标识对应的网卡队列相绑定。
进一步的,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
接收单元1301,具体用于接收所述服务器的多队列网卡发送的从与运行该监听线程的目标硬件核绑定的网卡队列中获取的来自客户端的业务请求。
进一步的,每个进程中创建的工作线程绑定一个硬件核。
进一步的,不同进程中创建的工作线程绑定的硬件核不同。
进一步的,还包括:
线程创建单元1304,用于当所述监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
用于当所述监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
上述图13所示的业务请求处理装置中的各单元的功能可对应于图8、图9和图10所示流程中的相应处理步骤,在此不再赘述。
实施例6:
基于同一发明构思,根据本发明上述实施例提供的线程创建方法,相应地,本发明实施例6还提供了一种服务器,其结构示意图如图14所示,具体包括:
多队列网卡1401,用于接收来自客户端的业务请求,并在自身的网卡队列中存储来自客户端的业务请求;
处理器1402,用于获取所述服务器的所述多队列网卡的网卡队列数;并创建与所述网卡队列数相等数量的进程;并在每个进程中创建一个监听线程和多个工作线程;以及将创建的每个监听线程分别与不同的网卡队列绑定。
进一步的,处理器为多硬件核处理器;
处理器1402,具体用于将创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,将所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量。
进一步的,处理器1402,还用于将每个进程中创建的工作线程绑定一个硬件核。
进一步的,不同进程中创建的工作线程绑定的硬件核不同。
进一步的,处理器1402,还用于当所述服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程;并将创建的新的工作线程与新增加的该硬件核绑定。
进一步的,处理器1402,还用于当所述服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程;并在创建的新进程中创建一个监听线程和多个工作线程;以及将在新进程中创建的监听线程与新增加的该网卡队列绑定。
进一步的,处理器1402,还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
实施例7:
基于同一发明构思,根据本发明上述实施例提供的应用于多队列网卡的业务请求处理方法,相应地,本发明实施例7还提供了一种服务器的多队列网卡,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,其结构示意图如图15所示,具体包括:
接口1501,用于接收来自客户端的业务请求,并存储到网卡队列中;
处理芯片1502,用于从多队列网卡的网卡队列中获取来自客户端的业务请求;并向与该网卡队列绑定的监听线程发送所述业务请求;并接收与该监听线程属于同一进程的工作线程对所述业务请求进行业务处理后发送的业务处理结果;以及向所述客户端返回所述业务处理结果;
存储器1503,用于存储网卡队列中的来自客户端的业务请求。
进一步的,处理芯片1502,还用于在从多队列网卡的网卡队列中获取来自客户端的业务请求之前,接收已创建的各监听线程分别发送的业务请求获取消息,所述业务请求获取消息中携带监听线程绑定的网卡队列的队列标识;
确定发送所述业务请求获取消息的监听线程,与所述业务请求获取消息中携带的所述队列标识对应的网卡队列相绑定。
进一步的,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
处理芯片1502,具体用于向与该网卡队列绑定的目标硬件核上运行的监听线程发送所述业务请求。
进一步的,每个进程中创建的工作线程绑定一个硬件核。
进一步的,不同进程中创建的工作线程绑定的硬件核不同。
综上所述,本发明实施例提供的方案,包括:获取服务器的多队列网卡的网卡队列数;并创建与网卡队列数相等数量的进程;并在每个进程中创建一个监听线程和多个工作线程;以及将创建的每个监听线程分别与不同的网卡队列绑定。采用本发明实施例提供的方案,使得进程和线程创建更合理,且提高了服务器对并发的业务请求的处理效率。
并且,通过监听线程,利用多队列网卡与系统硬件计算单元(硬件核)绑定的特性,将需要监听业务请求的监听线程依次部署在相应的硬件核上,可以达到能够同时监听多个来自网络客户端的业务请求。由网卡驱动并行地转发业务请求到各个监听线程,改善了传统服务器系统中串行转发业务请求所带来的性能问题。同时,可以使得同一时刻内有更多的工作线程对业务请求进行业务处理。
并且,本发明实施例提供的方案具有可扩展性(Scalability)。这里提到的可扩展性指的是,在更新硬件资源,提高处理器计算能力以及网络处理能力的同时,如增加新的硬件核和新的网卡队列时,通过相应的创建新的进程和/或线程,整个系统的性能可以有效地得到提高。
本发明实施例提供的方案,利用了多内核操作系统线性扩展的优势,针对服务器的模型进行了进程线程部署。这种新的结构,在计算单元数量很大时,继续增加硬件资源,依然可以有效地改善服务器的性能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (36)
1.一种线程创建方法,应用于具有多队列网卡的服务器,所述多队列网卡的网卡队列中存储来自客户端的业务请求,其特征在于,包括:
获取所述服务器的所述多队列网卡的网卡队列数;
创建与所述网卡队列数相等数量的进程;
在每个进程中创建一个监听线程和多个工作线程;
将创建的每个监听线程分别与不同的网卡队列绑定。
2.如权利要求1所述的方法,其特征在于,所述服务器具有多硬件核处理器;
将创建的每个监听线程分别与不同的网卡队列绑定,包括:
将创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,将所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量。
3.如权利要求2所述的方法,其特征在于,还包括:
将每个进程中创建的工作线程绑定一个硬件核。
4.如权利要求3所述的方法,其特征在于,不同进程中创建的工作线程绑定的硬件核不同。
5.如权利要求2-4任一所述的方法,其特征在于,还包括:
当所述服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程;
将创建的新的工作线程与新增加的该硬件核绑定。
6.如权利要求1-4任一所述的方法,其特征在于,还包括:
当所述服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程;
在创建的新进程中创建一个监听线程和多个工作线程;
将在新进程中创建的监听线程与新增加的该网卡队列绑定。
7.如权利要求1-4任一所述的方法,其特征在于,还包括:
当一个进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
8.一种业务请求处理方法,应用于服务器的多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,其特征在于,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述方法包括:
所述多队列网卡从自身的网卡队列中获取来自客户端的业务请求;
向与该网卡队列绑定的监听线程发送所述业务请求;
接收与该监听线程属于同一进程的工作线程对所述业务请求进行业务处理后发送的业务处理结果;
向所述客户端返回所述业务处理结果。
9.如权利要求8所述的方法,其特征在于,在从自身的网卡队列中获取来自客户端的业务请求之前,还包括:
接收已创建的各监听线程分别发送的业务请求获取消息,所述业务请求获取消息中携带监听线程绑定的网卡队列的队列标识;
确定发送所述业务请求获取消息的监听线程,与所述业务请求获取消息中携带的所述队列标识对应的网卡队列相绑定。
10.如权利要求8所述的方法,其特征在于,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
向与该网卡队列绑定的监听线程发送所述业务请求,包括:
向与该网卡队列绑定的目标硬件核上运行的监听线程发送所述业务请求。
11.如权利要求10所述的方法,其特征在于,每个进程中创建的工作线程绑定一个硬件核。
12.如权利要求11所述的方法,其特征在于,不同进程中创建的工作线程绑定的硬件核不同。
13.一种业务请求处理方法,应用于服务器上创建的监听线程,所述服务器具有多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,其特征在于,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述方法包括:
监听线程接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求;
向与该监听线程属于同一进程的处于空闲状态的工作线程发送所述业务请求,用于指示该工作线程对所述业务请求进行业务处理,并将得到的业务处理结果发送给所述多队列网卡。
14.如权利要求13所述的方法,其特征在于,在接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求之前,还包括:
向所述多队列网卡发送业务请求获取消息,所述业务请求获取消息中携带该监听线程绑定的网卡队列的队列标识,用于所述多队列网卡确定该监听线程与所述队列标识对应的网卡队列相绑定。
15.如权利要求13所述的方法,其特征在于,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
监听线程接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求,包括:
监听线程接收所述服务器的多队列网卡发送的从与运行该监听线程的目标硬件核绑定的网卡队列中获取的来自客户端的业务请求。
16.如权利要求15所述的方法,其特征在于,每个进程中创建的工作线程绑定一个硬件核。
17.如权利要求16所述的方法,其特征在于,不同进程中创建的工作线程绑定的硬件核不同。
18.如权利要求13-17任一所述的方法,其特征在于,还包括:
当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
19.一种线程创建装置,应用于具有多队列网卡的服务器,所述多队列网卡的网卡队列中存储来自客户端的业务请求,其特征在于,包括:
数量获取单元,用于获取所述服务器的所述多队列网卡的网卡队列数;
进程创建单元,用于创建与所述网卡队列数相等数量的进程;
线程创建单元,用于在每个进程中创建一个监听线程和多个工作线程;
绑定单元,用于将创建的每个监听线程分别与不同的网卡队列绑定。
20.如权利要求19所述的装置,其特征在于,所述服务器具有多硬件核处理器;
所述绑定单元,具体用于将创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,将所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量。
21.如权利要求20所述的装置,其特征在于,所述绑定单元,还用于将每个进程中创建的工作线程绑定一个硬件核。
22.如权利要求21所述的装置,其特征在于,不同进程中创建的工作线程绑定的硬件核不同。
23.如权利要求20-22任一所述的装置,其特征在于,所述线程创建单元,还用于当所述服务器的多硬件核处理器的硬件核增加时,针对每个增加的硬件核,在一个进程中创建新的工作线程;
所述绑定单元,还用于将创建的新的工作线程与新增加的该硬件核绑定。
24.如权利要求19-22任一所述的装置,其特征在于,所述进程创建单元,还用于当所述服务器的多队列网卡的网卡队列增加时,针对每个增加的网卡队列创建新进程;
所述线程创建单元,还用于在创建的新进程中创建监听线程和工作线程;
所述绑定单元,还用于将在新进程中创建的监听线程与新增加的该网卡队列绑定。
25.如权利要求19-22任一所述的装置,其特征在于,所述线程创建单元,还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
还用于当一个进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
26.一种业务请求处理装置,应用于服务器的多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,其特征在于,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述装置包括:
业务请求获取单元,用于从所述多队列网卡的网卡队列中获取来自客户端的业务请求;
第一发送单元,用于向与该网卡队列绑定的监听线程发送所述业务请求;
接收单元,用于接收与该监听线程属于同一进程的工作线程对所述业务请求进行业务处理后发送的业务处理结果;
第二发送单元,用于向所述客户端返回所述业务处理结果。
27.如权利要求26所述的装置,其特征在于,所述接收单元,还用于所述业务请求获取单元在从所述多队列网卡的网卡队列中获取来自客户端的业务请求之前,接收已创建的各监听线程分别发送的业务请求获取消息,所述业务请求获取消息中携带监听线程绑定的网卡队列的队列标识;
所述装置,还包括:
绑定关系确定单元,用于确定发送所述业务请求获取消息的监听线程,与所述业务请求获取消息中携带的所述队列标识对应的网卡队列相绑定。
28.如权利要求26所述的装置,其特征在于,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
所述第一发送单元,具体用于向与该网卡队列绑定的目标硬件核上运行的监听线程发送所述业务请求。
29.如权利要求28所述的装置,其特征在于,每个进程中创建的工作线程绑定一个硬件核。
30.如权利要求29所述的装置,其特征在于,不同进程中创建的工作线程绑定的硬件核不同。
31.一种业务请求处理装置,应用于服务器上创建的监听线程,所述服务器具有多队列网卡,所述多队列网卡的网卡队列中存储来自客户端的业务请求,其特征在于,所述服务器上创建有与所述多队列网卡的网卡队列数相等数量的进程,且每个进程中创建有一个监听线程和多个工作线程,且创建的每个监听线程分别与不同的网卡队列绑定,所述装置包括:
接收单元,用于接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求;
第一发送单元,用于向与该监听线程属于同一进程的处于空闲状态的工作线程发送所述业务请求,用于指示所述工作线程对所述业务请求进行业务处理,并将得到的业务处理结果发送给所述多队列网卡。
32.如权利要求31所述的装置,其特征在于,还包括:
第二发送单元,用于在所述接收单元接收所述服务器的多队列网卡发送的从与该监听线程绑定的网卡队列中获取的来自客户端的业务请求之前,向所述多队列网卡发送业务请求获取消息,所述业务请求获取消息中携带所述监听线程绑定的网卡队列的队列标识,用于所述多队列网卡确定所述监听线程与所述队列标识对应的网卡队列相绑定。
33.如权利要求31所述的装置,其特征在于,所述服务器具有多硬件核处理器,创建的每个监听线程分别与所述多硬件核处理器中的不同的目标硬件核绑定,且所述多队列网卡中的每个网卡队列分别与所述目标硬件核中不同的硬件核绑定,从而实现创建的每个监听线程分别与不同的网卡队列绑定;其中,所述目标硬件核为所述多硬件核处理器中用于绑定所述监听线程和所述网卡队列的所有硬件核,所述网卡队列的数量等于所述目标硬件核的数量;
所述接收单元,具体用于接收所述服务器的多队列网卡发送的从与运行该监听线程的目标硬件核绑定的网卡队列中获取的来自客户端的业务请求。
34.如权利要求33所述的装置,其特征在于,每个进程中创建的工作线程绑定一个硬件核。
35.如权利要求34所述的装置,其特征在于,不同进程中创建的工作线程绑定的硬件核不同。
36.如权利要求31-35任一所述的装置,其特征在于,还包括:
线程创建单元,用于当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量小于第一预设数量阈值时,在该进程中创建新的工作线程;和/或
用于当该监听线程所属进程中创建的工作线程中处于空闲状态的工作线程的数量大于第二预设数量阈值时,在该进程中撤销处于空闲状态的工作线程,且撤销后该进程中创建的工作线程中处于空闲状态的工作线程的数量不大于第二预设数量阈值。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310733930.3A CN104750543B (zh) | 2013-12-26 | 2013-12-26 | 线程创建方法、业务请求处理方法及相关设备 |
EP14873894.1A EP3073374B1 (en) | 2013-12-26 | 2014-12-18 | Thread creation method, service request processing method and related device |
PCT/CN2014/094208 WO2015096656A1 (zh) | 2013-12-26 | 2014-12-18 | 线程创建方法、业务请求处理方法及相关设备 |
US15/191,996 US20160306680A1 (en) | 2013-12-26 | 2016-06-24 | Thread creation method, service request processing method, and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310733930.3A CN104750543B (zh) | 2013-12-26 | 2013-12-26 | 线程创建方法、业务请求处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750543A CN104750543A (zh) | 2015-07-01 |
CN104750543B true CN104750543B (zh) | 2018-06-15 |
Family
ID=53477531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310733930.3A Active CN104750543B (zh) | 2013-12-26 | 2013-12-26 | 线程创建方法、业务请求处理方法及相关设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160306680A1 (zh) |
EP (1) | EP3073374B1 (zh) |
CN (1) | CN104750543B (zh) |
WO (1) | WO2015096656A1 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452450B2 (en) | 2015-03-20 | 2019-10-22 | International Business Machines Corporation | Optimizing allocation of multi-tasking servers |
CN105631708B (zh) * | 2015-12-25 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及装置 |
CN111274015A (zh) * | 2016-08-31 | 2020-06-12 | 华为技术有限公司 | 一种配置方法、装置和数据处理服务器 |
CN107818056B (zh) * | 2016-09-14 | 2021-09-07 | 华为技术有限公司 | 一种队列管理方法及装置 |
US20180088960A1 (en) * | 2016-09-23 | 2018-03-29 | International Business Machines Corporation | Providing highly available and scalable access to a restricted access service through a restful interface |
CN106412088B (zh) * | 2016-10-25 | 2019-10-18 | 深圳市万普拉斯科技有限公司 | 一种数据同步方法及终端 |
CN106789152A (zh) * | 2016-11-17 | 2017-05-31 | 东软集团股份有限公司 | 基于多队列网卡的处理器扩展方法及装置 |
CN106708628A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇虎科技有限公司 | 基于工作线程压力优化的连接建立方法及装置 |
CN107317759A (zh) * | 2017-06-13 | 2017-11-03 | 国家计算机网络与信息安全管理中心 | 一种网卡的线程级动态均衡调度方法 |
CN107315385B (zh) * | 2017-06-26 | 2019-08-06 | 杭州电子科技大学 | 嵌入式plc引擎实现方法和引擎 |
CN107450854B (zh) * | 2017-08-07 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 一种期望速率下最大线程数的确定方法及系统 |
US10719350B2 (en) * | 2017-10-10 | 2020-07-21 | Sap Se | Worker thread manager |
CN107682198A (zh) * | 2017-10-20 | 2018-02-09 | 盛科网络(苏州)有限公司 | 一种网络通信设备 |
CN107945354A (zh) * | 2017-11-20 | 2018-04-20 | 浪潮金融信息技术有限公司 | 排队叫号方法及系统、计算机存储介质和终端 |
CN108881063B (zh) * | 2017-12-29 | 2019-06-28 | 视联动力信息技术股份有限公司 | 一种数据发送方法和装置 |
CN108427603A (zh) * | 2018-01-10 | 2018-08-21 | 链家网(北京)科技有限公司 | 一种任务分派方法方法及装置 |
CN108763046B (zh) * | 2018-06-01 | 2024-04-05 | 中国平安人寿保险股份有限公司 | 线程运行监控方法、装置、计算机设备和存储介质 |
CN108958944A (zh) * | 2018-07-26 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种多核处理系统及其任务分配方法 |
CN111124655A (zh) * | 2018-10-31 | 2020-05-08 | 武汉斗鱼网络科技有限公司 | 一种网络请求调度方法、终端装置及存储介质 |
CN109684064A (zh) * | 2018-12-26 | 2019-04-26 | 亚信科技(中国)有限公司 | 一种任务调度方法及任务调度设备 |
CN110134531A (zh) * | 2019-05-06 | 2019-08-16 | 广州华多网络科技有限公司 | 虚拟资产流转数据的处理方法、装置和计算机设备 |
CN110333916B (zh) * | 2019-06-18 | 2024-03-19 | 平安银行股份有限公司 | 请求消息处理方法、装置、计算机系统及可读存储介质 |
CN110505164B (zh) * | 2019-07-25 | 2022-05-31 | 联想(北京)有限公司 | 虚拟设备的处理方法及电子设备 |
CN110908784B (zh) * | 2019-11-12 | 2022-09-20 | 苏州智加科技有限公司 | 图像标注方法、装置、设备及存储介质 |
CN111104183B (zh) * | 2019-12-17 | 2023-09-12 | 北京小米移动软件有限公司 | 应用程序运行方法、装置、电子设备及存储介质 |
CN111338787B (zh) * | 2020-02-04 | 2023-09-01 | 浙江大华技术股份有限公司 | 一种数据处理方法及装置、存储介质、电子装置 |
CN111400002B (zh) * | 2020-03-09 | 2022-09-27 | 聚好看科技股份有限公司 | 应用进程与处理器核绑定方法及终端 |
CN111541646A (zh) * | 2020-03-24 | 2020-08-14 | 成都国泰网信科技有限公司 | 一种增强密码机安全服务接入能力的方法 |
CN112217883B (zh) * | 2020-09-25 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种基于nfs协议的多通道构建方法、装置和系统 |
US20220188144A1 (en) * | 2020-12-11 | 2022-06-16 | Oracle International Corporation | Intra-Process Caching and Reuse of Threads |
CN112702338B (zh) * | 2020-12-22 | 2022-07-01 | 杭州迪普科技股份有限公司 | Ike报文获取方法及装置 |
CN112667318A (zh) * | 2020-12-31 | 2021-04-16 | 京信网络系统股份有限公司 | 逻辑核的绑定方法、装置、设备及存储介质 |
CN112988416B (zh) * | 2021-03-02 | 2023-06-30 | 杭州迪普科技股份有限公司 | 报文处理方法、装置、设备及计算机可读存储介质 |
CN112801559A (zh) * | 2021-04-09 | 2021-05-14 | 恒生电子股份有限公司 | 业务请求的处理方法、装置、设备和存储介质 |
US20210326177A1 (en) * | 2021-06-26 | 2021-10-21 | Intel Corporation | Queue scaling based, at least, in part, on processing load |
CN114138471B (zh) * | 2021-11-18 | 2024-04-19 | 苏州浪潮智能科技有限公司 | 一种软件业务绑定cpu核心的方法及相关装置 |
CN114257561B (zh) * | 2021-12-17 | 2023-02-07 | 东土科技(宜昌)有限公司 | 一种串口网口的数据透传方法及装置、设备、存储介质 |
CN115296958B (zh) * | 2022-06-28 | 2024-03-22 | 青岛海尔科技有限公司 | 设备控制任务的分发方法、装置、存储介质及电子装置 |
CN115499346B (zh) * | 2022-09-15 | 2024-04-26 | 巨擎网络科技(济南)有限公司 | 一种多网卡的测速方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631139A (zh) * | 2009-05-19 | 2010-01-20 | 华耀环宇科技(北京)有限公司 | 基于多核平台的负载均衡软件架构及方法 |
CN102591715A (zh) * | 2012-01-05 | 2012-07-18 | 北京航空航天大学 | 一种使用多队列技术的虚拟机网络性能优化的实现方法 |
CN102916905A (zh) * | 2012-10-18 | 2013-02-06 | 曙光信息产业(北京)有限公司 | 一种基于hash算法的万兆网卡多路分流方法及其系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477586B1 (en) * | 1998-06-29 | 2002-11-05 | International Business Machines Corporation | Remote procedure calls in distributed systems |
US6625639B1 (en) * | 1999-10-20 | 2003-09-23 | International Business Machines Corporation | Apparatus and method for processing a task in a clustered computing environment |
US7051330B1 (en) * | 2000-11-21 | 2006-05-23 | Microsoft Corporation | Generic application server and method of operation therefor |
US7076545B2 (en) * | 2002-07-31 | 2006-07-11 | Sun Microsystems, Inc. | Load balancing the servicing of received packets |
US7631106B2 (en) * | 2002-08-15 | 2009-12-08 | Mellanox Technologies Ltd. | Prefetching of receive queue descriptors |
US7418719B2 (en) * | 2004-08-31 | 2008-08-26 | Microsoft Corporation | Method and system to support a unified process model for handling messages sent in different protocols |
US8032900B2 (en) * | 2006-08-02 | 2011-10-04 | Microsoft Corporation | Conducting client-server inter-process communication |
US8185906B2 (en) * | 2007-05-23 | 2012-05-22 | Sap Ag | Method and apparatus for dynamically adjusting thread pool |
JP5681465B2 (ja) * | 2010-12-02 | 2015-03-11 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理システム、情報処理装置、準備方法、プログラムおよび記録媒体 |
US8832690B1 (en) * | 2011-06-21 | 2014-09-09 | Google Inc. | Multi-threaded virtual machine processing on a web page |
CN102497322A (zh) * | 2011-12-19 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种基于分流网卡和多核cpu实现的高速包过滤设备和方法 |
CN102769575A (zh) * | 2012-08-08 | 2012-11-07 | 南京中兴特种软件有限责任公司 | 一种用于智能网卡的流量负载均衡方法 |
US9280388B2 (en) * | 2013-01-22 | 2016-03-08 | Oracle International Corporation | Method and apparatus for efficient scheduling of multithreaded programs |
US9843540B2 (en) * | 2013-08-26 | 2017-12-12 | Vmware, Inc. | Traffic and load aware dynamic queue management |
-
2013
- 2013-12-26 CN CN201310733930.3A patent/CN104750543B/zh active Active
-
2014
- 2014-12-18 WO PCT/CN2014/094208 patent/WO2015096656A1/zh active Application Filing
- 2014-12-18 EP EP14873894.1A patent/EP3073374B1/en active Active
-
2016
- 2016-06-24 US US15/191,996 patent/US20160306680A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631139A (zh) * | 2009-05-19 | 2010-01-20 | 华耀环宇科技(北京)有限公司 | 基于多核平台的负载均衡软件架构及方法 |
CN102591715A (zh) * | 2012-01-05 | 2012-07-18 | 北京航空航天大学 | 一种使用多队列技术的虚拟机网络性能优化的实现方法 |
CN102916905A (zh) * | 2012-10-18 | 2013-02-06 | 曙光信息产业(北京)有限公司 | 一种基于hash算法的万兆网卡多路分流方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3073374B1 (en) | 2019-02-06 |
WO2015096656A1 (zh) | 2015-07-02 |
EP3073374A1 (en) | 2016-09-28 |
EP3073374A4 (en) | 2016-12-07 |
US20160306680A1 (en) | 2016-10-20 |
CN104750543A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104750543B (zh) | 线程创建方法、业务请求处理方法及相关设备 | |
Brandenburg et al. | Global scheduling not required: Simple, near-optimal multiprocessor real-time scheduling with semi-partitioned reservations | |
Wang et al. | Cake: enabling high-level SLOs on shared storage systems | |
Zhang et al. | vGASA: Adaptive scheduling algorithm of virtualized GPU resource in cloud gaming | |
CN103412786B (zh) | 一种高性能服务器架构系统及数据处理方法 | |
US20170024251A1 (en) | Scheduling method and apparatus for distributed computing system | |
CN105893126A (zh) | 一种任务调度方法及装置 | |
CN111052086A (zh) | 一种云托管函数的暖启动技术 | |
CN104468638B (zh) | 一种分布式数据处理方法及系统 | |
CN110888719A (zh) | 一种基于web服务的分布式任务调度系统及方法 | |
CN111427675B (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
US20090113440A1 (en) | Multiple Queue Resource Manager | |
CN108319508A (zh) | Http同步请求转为异步处理的方法及服务器 | |
US20090183166A1 (en) | Algorithm to share physical processors to maximize processor cache usage and topologies | |
CN107491346A (zh) | 一种应用的任务处理方法、装置及系统 | |
CN104820616B (zh) | 一种任务调度的方法及装置 | |
CN109491788A (zh) | 一种虚拟化平台负载均衡实现方法及装置 | |
CN110515713A (zh) | 一种任务调度方法、设备和计算机存储介质 | |
CN105049240B (zh) | 一种消息处理方法及服务器 | |
CN110888726A (zh) | 一种多任务并发处理方法及系统 | |
CN106970827A (zh) | 信息处理方法、信息处理装置、电子设备 | |
Bartolini et al. | Proactive workload dispatching on the EURORA supercomputer | |
CN107528871A (zh) | 存储系统中的数据分析 | |
CN104184685B (zh) | 数据中心资源分配方法、装置及系统 | |
CN106598726A (zh) | 一种多任务管理系统及其分布式部署方法 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200417 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 301, A building, room 3, building 301, foreshore Road, No. 310052, Binjiang District, Zhejiang, Hangzhou Patentee before: Huawei Technologies Co.,Ltd. |
|
TR01 | Transfer of patent right |