首页> 中国专利> 应用于分布式存储系统的服务器管理方法和装置

应用于分布式存储系统的服务器管理方法和装置

摘要

本申请提供一种应用于分布式存储系统的服务器管理方法和装置,方法包括:监测所述服务器的负载;所述负载包括所述服务器中处理器的负载和/或内存的负载;根据所述负载确定合理工作线程数量;所述工作线程用于处理任务分配线程分配的IO任务;根据所述合理工作线程数量调整所述服务器中运行的所述工作线程的数量。采用本申请实施例提供的服务器管理方法和装置,能够根据服务器的负载情况调整实际运行的工作线程的数量,继而达到充分利用服务器中处理器资源而不会增加因为线程竞争资源造成的浪费问题。

著录项

说明书

技术领域

本申请涉及分布式存储技术领域,尤其涉及应用于分布式存储系统的服务器管理方法和装置。

背景技术

分布式存储系统采用集群架构,将存储数据分布存储在多台数据存储服务器主机上,通过存储接入服务器对外提供访问接口而向客户端提供数据存储服务;具体应用中,存储接入服务器和数据存储服务器通过TCP/IP网络进行存储数据的传输。分布式存储可以通过增加数据存储服务器的数量而快速增加存储容量,并实现存储性能的线性扩展。

目前,应用于分布式存储系统的服务器(包括数据存储服务器和存储接入服务器)包括采用ARM架构的服务器和采用x86结构的服务器,并且分布式存储系统软件在两种架构服务器下的管理模式相同;而因为ARM架构的服务器中单核CPU的处理能力远不如x86架构服务器中单核CPU处理能力(实际应用中,ARM服务器单核CPU处理能力不到x86服务器单核CPU一半),将分布式存储系统从采用x86架构的服务器集群移植到采用ARM架构的服务器集群后,其存储性能出现剧烈下降。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种应用于分布式存储系统的服务器管理方法和装置。

一方面,本申请提供一种应用于分布式存储系统的服务器管理方法,包括:

监测所述服务器的负载;所述负载包括所述服务器中处理器的负载和/或内存的负载;

根据所述负载确定合理工作线程数量;所述工作线程用于处理任务分配线程分配的IO任务;

根据所述合理工作线程数量调整所述服务器中运行的所述工作线程的数量。

可选地,根据所述合理的工作线程数量调整所述服务器中运行的所述工作线程的数量,包括:

获取所述服务器已正在运行的所述工作线程的数量;

判断所述合理工作线程数量和正在运行的所述工作线程的数量的关系;

若所述合理工作线程数量大于正在运行的所述工作线程的数量,则缩减在所述服务器运行的所述工作线程的数量;

若所述合理工作线程数量小于正在运行的所述工作线程的数量,则增加所述服务器运行的所述工作线程的数量。

可选地,在缩减在所述服务器运行的所述工作线程的数量前,还包括:

获取待缩减的所述工作线程的信息;

将待缩减的所述工作线程的信息发送给所述任务分配线程,以触发所述任务分配线程停止向待缩减的所述工作进程分配IO任务。

可选地,在增加所述服务器运行的所述工作线程的数量后,还包括:

将新增加的所述工作线程的信息发送给所述任务分配线程,以触发所述任务分配线程向新增加的所述工作进程分配IO任务。

可选地,所述服务器为存储接入服务器或者数据存储服务器。

另一方面,本申请提供一种应用于分布式存储系统的服务器管理装置,包括:

负载探测模块,用于监测所述服务器的负载;所述负载包括所述服务器中处理器的负载和/或内存的负载;

合理数量确定模块,用于根据所述负载确定合理工作线程数量;所述工作线程用于处理任务分配线程分配的IO任务;

线程调度模块,用于根据所述合理工作线程数量调整所述服务器中运行的所述工作线程的数量。

可选地,所述负载探测模块还用于获取所述服务器已正在运行的所述工作线程的数量;

所述线程调度模块包括:

判断子模块,用于判断所述合理工作线程数量和正在运行的所述工作线程的数量的关系;

执行子模块,用于在若所述合理工作线程数量大于正在运行的所述工作线程的数量的情况下缩减在所述服务器运行的所述工作线程的数量,以及,在所述合理工作线程数量小于正在运行的所述工作线程的数量的情况下,增加所述服务器运行的所述工作线程的数量。

可选地,应用于分布式存储系统的服务器管理装置还包括:通知模块,用于在缩减所述服务器运行的所述工作线程的数量的情况下,将待缩减的所述工作线程的信息发送给所述任务分配线程;以及,用于在增加所述服务器运行的所述工作线程的数量的情况下,将新增加的所述工作线程的信息发送给所述任务分配线程。

采用本申请实施例提供的服务器管理方法和装置,能够根据服务器的负载情况调整实际运行的工作线程的数量,继而达到充分利用服务器中处理器资源而不会增加因为线程竞争资源造成的资源开销。实际应用中,本申请实施例提供的方法和装置尤其适用于一些配置有处理器中核心数量较高,但是单核性能并不高的服务器中,例如配置有采用ARM架构处理器的服务器。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的分布式存储系统的架构示意图;

图2是本申请实施例提供的应用于分布式存储服务系统的服务器管理方法流程图;

图3是本申请实施例提供的应用于分布式存储系统的服务器管理装置结构示意图;

图4是本申请实施例提供的服务器的结构示意图;

其中:11-存储接入服务器,111-逻辑单元,112-任务分发线程,113-任务拆分线程,114-TCP进程,12-数据存储服务器,121-磁盘控制进程,122-IO调度线程,123-IO处理线程,124-TCP进程,21-负载探测模块,22-合理数量确定模块,23-线程调度模块;31-处理器,32-存储器,33-通信接口,34-总线系统。

具体实施方式

为了能够更清楚地理解本申请的上述目的、特征和优点,下面将对本申请的方案进行进一步描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本申请,但本申请还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本申请的一部分实施例,而不是全部的实施例。

本申请实施例提供一种应用于分布式存储服务系统的服务器管理方法,用于对服务器中运行的工作线程数量进行管理,以实现服务器处理性能与服务器中CPU内核数量的匹配。

在对本申请实施例提供的应用于分布式存储服务系统的服务器管理方法进行说明前,首先对本申请实施例中的分布式存储系统架构做介绍。

图1是本申请实施例提供的分布式存储系统的架构示意图。如图1所示,分布式存储系统包括存储接入服务器11和数据存储服务器12。

存储接入服务器11用于为客户端提供访问存储接口,其对外提供iSCSI服务,客户端可以通过iSCSI协议访问存储接入服务器中的逻辑单元111;在存储接入服务器11中可以创建一个或多个逻辑单元111(逻辑单元111采用逻辑单元号表示,逻辑单元111实质为一个逻辑存储进程),逻辑单元111内创建有任务分发线程112和任务拆分线程113。

任务分发线程112用于在逻辑存储进程接收到来自客户端的IO请求后,采用负载均衡算法将IO请求分配给工作线程;任务拆分线程113用于根据预先存储的存储映射表,对分配的IO请求进行拆分处理,得到IO切片,并通过调用TCP进程114,采用TCP/IP网络将得到的IO切片发送给对应的数据存储服务器12。

数据存储服务器12用于实现真正的数据存储和数据读取。在数据存储服务器12开启后,其创建磁盘控制进程121,通过磁盘控制进程121确定实际的IO操作内容;具体的,磁盘控制进程121包括IO调度线程122和IO处理线程123。

在接收到存储接入服务器11通过TCP/IP网络发送而来的IO切片后,IO调度线程122将IP切片分发给IO处理线程123,由IO处理线程123对IO切片进行实际处理(如果IO切片为写入任务,则实际处理包括写入数据的压缩和加密;如果IO切片为读数据任务,则实际处理包括对读取后数据的解密和解压缩),并将处理后的数据写入到IO处理线程123对应的IO队列中;随后,存储接入服务器中的磁盘写入线程从IO队列中获取IO内容,并将IO内容写入磁盘或者从磁盘中读出相应的数据。

实际应用中,前述的数据存储服务器12和存储接入服务器11中的各种进程在服务器内存中均具有对应的地址段,以存储相应的数据;各个线程下的线程根据工作需求竞争服务器中的处理器内核资源。

为了方便起见,本申请实施例中,前述的任务拆分线程113和IO处理线程123被称为工作线程,以完成对应任务分配线程分配的IO任务(例如前文中的IO请求和IO切片任务),前述的任务分发线程112和IO调度线程122被称为任务分配线程。

本申请实施例提供的服务器管理方法可以应用在前文中的存储接入服务器11和数据存储服务器12。

图2是本申请实施例提供的应用于分布式存储服务系统的服务器管理方法流程图,如图2所示,本申请实施例提供的服务器管理方法包括步骤S101-S103。

S101:监测服务器的负载。

本申请实施例中所说的服务器的负载,可以是服务器中处理器的负载,也可以是服务器中内存的负载;如果是处理器的负载,其对应的是处理器内核的利用率;如果是内存的负载,其对应的是内存的使用量。

因为后续的操作过程主要是用于调整工作线程的数量,其更多的是需要考虑的是服务器中处理器的使用情况,所以在本申请实施例具体应用中,监测服务器的负载多是监测服务器中处理器的负载。

应当注意的是,本申请实施例中的处理器是多核心的处理器,处理器的负载可以是处理器的整体利用率,也可以是处理器中各个内核单独对应的利用率。

在实际应用中,操作系统一般设置有对其资源使用量的监控进程(例如在windows操作系统中的任务管理器),因此监测服务器的负载可以是通过调用监控线程获取的服务器负载情况。当然,在其他应用中,也可以建立起专门获取服务器负载的线程或者进程,以实现前述的任务。

S102:根据负载确定合理工作线程数量。

如前文,工作线程用于处理任务分配线程分配的IO任务的线程。实际应用中,因为工作线程需要竞争使用服务器处理器内核资源,所以需要基于负载确定合理工作线程数量,以保证工作线程尽可能地合适,以提高处理器核心的使用效率并降低因为线程竞争造成的处理器资源开销。

本申请实施例中,可以根据服务器中处理器内核的处理能力、处理器中内核的数量,预先确定在各种负载状态下对应的合理工作线程数量;在获取得到负载后,根据负载查找确定对应的合理工作线程数量。

S103:根据合理工作线程数量调整服务器中运行的工作线程的数量。

在确定合理工作线程数量后,本申请实施例中根据合理工作线程数量调整服务器中运行的工作线程数量,可以包括步骤S1031-S1036。

S1031:获取服务器已正在运行的工作线程的数量。

获取服务器正在运行的工作线程的数量可以是通过查询监控进程的监控内容,确定正在运行的工作线程数量,也可以是专门设置相应的进程或者线程,确定正在运行的工作线程的数量。

应当注意的是,在本申请实施例服务器开启多个包括工作线程的进程(例如前述的逻辑单元111和磁盘控制进程121)的情况下,需要全局地获取所有进程中包括的工作线程的数量。

S1032:判断合理工作线程数量是否大于正在运行的工作线程的数量;若是,执行S1033;若否,执行S1034。

S1033:缩减在服务器运行的工作线程的数量。

S1034:判断合理工作线程数量是否等于正在运行的工作线程数量;若是,执行S1035;若否,执行S1036。

S1035:不对正在运行的工作线程数量做调整。

S1036:增加服务器运行的工作线程的数量。

前述的缩减正在运行的工作线程的数量,是结束部分正在结束的工作线程;前述增加服务器运行的工作线程的数量,是创建新的工作线程,直至服务器中运行的工作线程的数量达到合理工作线程数量。

采用本申请实施例提供的服务器管理方法,能够根据服务器的负载情况调整实际运行的工作线程的数量,继而达到充分利用服务器中处理器资源而不会增加因为线程竞争资源造成的资源开销。

实际应用中,本申请实施例提供的方法尤其适用于一些配置有处理器中核心数量较多,但是单核性能并不高的服务器中,例如配置有采用ARM架构处理器的服务器;当然,本申请实施例提供的方法也可以应用在采用x86架构的一些采用单核性能较高的处理器的服务器中。

本申请实施例具体应用中,除了需要执行前述的步骤S103根据合理工作线程数量调整服务器中运行的工作线程数量外,还需要协调处理任务分配线程分配任务与调整工作线程数量的关系,以避免工作进程崩溃等问题。

具体的,本申请实施例中提供的服务器管理方法还可以包括步骤S104和S105,应当注意的是,前述的步骤S104和S105是可选的执行步骤,在某一特定时刻确定合理工作线程数量后,仅能执行步骤S104和S105中的一个。

S104:在缩减在服务器运行的工作线程的数量前,将待缩减的工作线程的信息发送给任务分配线程。

将待缩减的工作线程的信息发送给任务分配线程,是为了触发任务分配线程停止向待缩减的工作进程分配IO任务,以使得待缩减的工作线程在完成已分配IO任务后,处在停用状态。

应当注意的是,步骤S104是在步骤S1033之前执行。

S105:将新增加的工作线程的信息发送给任务分配线程。

将新增加的工作线程的信息发送给任务分配线程,是为了触发任务分配新城向新增加的工作进程分配IO任务;随后,新增加的工作线程也可以接受到IO任务并请求使用处理器核心资源。

除了提供前述的应用于分布式存储系统的服务器管理方法外,本申请实施例还提供一种应用于分布式存储系统的服务器管理装置。图3是本申请实施例提供的应用于分布式存储系统的服务器管理装置结构示意图,如图3所示,服务器管理装置包括负载探测模块21、合理数量确定模块22和线程调度模块23。

负载探测模块21用于监测所述服务器的负载。

本申请实施例中所说的服务器的负载,可以是服务器中处理器的负载,也可以是服务器中内存的负载;如果是处理器的负载,其对应的是处理器内核的利用率;如果是内存的负载,其对应的是内存的使用量。

因为后续的操作过程主要是用于调整工作线程的数量,其更多的是需要考虑的是服务器中处理器的使用情况,所以在本申请实施例具体应用中,监测服务器的负载多是监测服务器中处理器的负载。

应当注意的是,本申请实施例中的处理器是多核心的处理器,处理器的负载可以是处理器的整体利用率,也可以是处理器中各个内核单独对应的利用率。

在实际应用中,操作系统一般设置有对其资源使用量的监控进程(例如在windows操作系统中的任务管理器),因此监测服务器的负载可以是通过调用监控线程获取的服务器负载情况。当然,在其他应用中,也可以建立起专门获取服务器负载的线程或者进程,以实现前述的任务。

合理数量确定模块22用于根据所述负载确定合理工作线程数量。

工作线程是用于处理任务分配线程分配的IO任务的线程。实际应用中,因为工作线程需要竞争使用服务器处理器内核资源,所以需要基于负载确定合理工作线程数量,以保证工作线程尽可能地合适,以提高处理器核心的使用效率并降低因为线程竞争造成的处理器核心资源浪费。

本申请实施例中,可以根据服务器中处理器内核的处理能力、处理器中内核的数量,预先确定在各种负载状态下对应的合理工作线程数量;在获取得到负载后,根据负载查找确定对应的合理工作线程数量。

线程调度模块23用于根据所述合理工作线程数量调整所述服务器中运行的所述工作线程的数量。

采用本申请实施例提供的服务器管理装置,能够根据服务器的负载情况调整实际运行的工作线程的数量,继而达到充分利用服务器中处理器资源而不会增加因为线程竞争资源造成的资源开销。

实际应用中,本申请实施例提供的装置尤其适用于一些配置有处理器中核心数量较高,但是单核性能并不高的服务器中,例如配置有采用ARM架构处理器的服务器。

在本申请实施例的一些应用中,探测模块还用于获取所述服务器已正在运行的所述工作线程的数量。

所述线程调度模块23包括判断子模块和执行子模块。判断子模块用于判断所述合理工作线程数量和正在运行的所述工作线程的数量的关系;执行子模块用于在若所述合理工作线程数量大于正在运行的所述工作线程的数量的情况下缩减在所述服务器运行的所述工作线程的数量,以及,在所述合理工作线程数量小于正在运行的所述工作线程的数量的情况下,增加所述服务器运行的所述工作线程的数量。

在本申请实施例的一些应用中,服务器管理装置还包括通知模块,通知模块用于在缩减所述服务器运行的所述工作线程的数量的情况下,将待缩减的所述工作线程的信息发送给所述任务分配线程;以及,用于在增加所述服务器运行的所述工作线程的数量的情况下,将新增加的所述工作线程的信息发送给所述任务分配线程。

实际应用中,前述的服务器管理装置可以应用在分布式存储系统的存储接入服务器11或者数据存储服务器12中。

基于前述的发明构思,本申请还提供一种服务器。图4是本申请实施例提供的服务器的结构示意图。如图4所示,服务器包括至少一个处理器31、至少一个存储器32和至少一个通信接口33。通信接口33,用于与外部设备之间的信息传输。

服务器中的各个组件通过总线系统34耦合在一起。可理解地,总线系统34用于实现这些组件之间的连接通信。总线系统34除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但为了清楚说明起见,在图4中将各种总线都标为总线系统34。

可以理解,本实施例中的存储器32可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。在一些实施方式中,存储器32存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。

其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础任务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用任务。实现本公开实施例提供的应用于分布式存储系统的服务器管理方法的程序可以包含在应用程序中。

在本公开实施例中,处理器31通过调用存储器32存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器31用于执行本公开实施例提供的应用于分布式存储系统的服务器管理方法的各个步骤。

本公开实施例提供的应用于分布式存储系统的服务器管理方法可以应用于处理器31中,或者由处理器31实现。处理器31可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器31中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器31可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本公开实施例提供的应用于分布式存储系统的服务器管理方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器32,处理器31读取存储器32中的信息,结合其硬件完成方法的步骤。

本公开实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行应用于分布式存储系统的服务器管理方法的步骤各实施例的步骤,为避免重复描述,在此不再赘述。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号