一种samba多线程性能打点方法及装置与流程

文档序号:14443791阅读:817来源:国知局
一种samba多线程性能打点方法及装置与流程

本发明涉分布式存储技术领域,特别涉及一种samba多线程性能打点方法及装置。



背景技术:

目前,samba的进程架构一般为单进程单线程架构,其顺序处理一个客户端的请求。在处理过程中,通过在smb协议关键字处理流程的开始和结束统计该关键字处理的总时延、总次数、平均时延及最大时延,在调用底层文件系统操作接口的开始和结束统计调用该接口的总时延、总次数、平均时延及最大时延,完成性能打点统计。而samba的单进程单线程顺序处理客户端请求的架构是性能提升的优化点,但是,也有修改samba现有架构,将单进程单线程的架构改为单进程多线程架构,这样可同时处理多个请求以提升samba的性能。

此时,原有的性能打点统计方法就不再适应samba单进程多线程架构。现有针对samba单进程多线程架构,可以使用加互斥锁的方式来实现性能打点统计。但是,smb协议关键字和底层文件系统调用在客户端读写业务复杂时会调用非常频繁,频繁的加锁和释放锁,使得cpu的处理压力较大。



技术实现要素:

本发明的目的是提供一种samba多线程性能打点方法及装置,以满足samba单进程多线程架构性能打点数据的统计,同时通过减少互斥锁的调用以减少cpu调度,进而节约系统资源。

为实现上述目的,本发明提供如下技术方案:

一种samba多线程性能打点方法,包括:

接收性能打点请求;

主线程将各个所述性能打点请求分发至相应的业务线程;

基于预先建立的samba各个线程与性能打点数组内的各个数组成员的一一对应关系,各所述业务线程根据所述性能打点请求,分别统计各自的性能打点数据。

可选地,在所述接收性能打点请求之前,还包括:

初始化所述性能打点数组,其中,所述性能打点数据内的数组成员数与线程数相同,成员值为零;

初始化线程共享资源变量、线程私有数据和线程索引号为零;

判断所述线程索引号与线程数的大小,若所述线程索引号大于所述线程数,则结束进程;

若所述线程索引号小于所述线程数,则加互斥锁,并将所述线程共享资源变量加一,所述线程私有数据设置为所述线程共享资源变量减一;

释放所述互斥锁,并将所述索引号加一,继续判断所述线程索引号与所述线程数的大小并执行相应操作,直至所有所述线程私有数据初始化完成,以建立各个线程与所述性能打点数组内的各个数组成员的一一对应关系。

可选地,所述各所述业务线程根据所述性能打点请求,分别统计各自的性能打点数据,包括:

各所述业务线程根据所述性能打点请求,分别统计各自的smb协议关键字性能打点数据和文件系统操作接口性能打点数据。

可选地,在所述各所述业务线程根据所述性能打点请求,分别统计各自的性能打点数据之后,还包括:

根据数据汇总指令,汇总各所述业务线程统计的所述性能打点数据,并将汇总的性能打点数据进行汇总输出。

可选地,所述性能打点数据包括smb协议关键字的处理请求次数、平均处理时延、最大处理时延,以及文件系统操作接口的调用次数、平均时延、最大时延。

一种samba多线程性能打点装置,包括:

接收模块,用于接收性能打点请求;

主线程分发模块,用于主线程将各个所述性能打点请求分发至相应的业务线程;

性能打点模块,用于基于预先建立的samba各个线程与性能打点数组内的各个数组成员的一一对应关系,各所述业务线程根据所述性能打点请求,分别统计各自的性能打点数据。

可选地,还包括:

数组初始化模块,用于初始化所述性能打点数组,其中,所述性能打点数据内的数组成员数与线程数相同,成员值为零;

变量初始化模块,用于初始化线程共享资源变量、线程私有数据和线程索引号为零;

判断模块,用于判断所述线程索引号与线程数的大小,若所述线程索引号大于所述线程数,则结束进程;

加锁模块,用于若所述线程索引号小于所述线程数,则加互斥锁,并将所述线程共享资源变量加一,所述线程私有数据设置为所述线程共享资源变量减一;

释放模块,用于释放所述互斥锁,并将所述索引号加一,继续判断所述线程索引号与所述线程数的大小并执行相应操作,直至所有所述线程私有数据初始化完成,以建立各个线程与所述性能打点数组内的各个数组成员的一一对应关系。

可选地,所述性能打点模块包括:

性能打点数据统计子模块,用于各所述业务线程根据所述性能打点请求,分别统计各自的smb协议关键字性能打点数据和文件系统操作接口性能打点数据。

可选地,还包括:

汇总输出模块,用于根据数据汇总指令,汇总各所述业务线程统计的所述性能打点数据,并将汇总的性能打点数据进行汇总输出。

一种计算可读存储介质,所述计算机可读存储介质上存储有samba多线程性能打点程序,所述samba多线程性能打点被处理器执行时实现如任一项所述samba多线程性能打点方法的步骤。

本发明所提供的一种samba多线程性能打点方法,包括:接收性能打点请求;主线程将各个性能打点请求分发至相应的业务线程;基于预先建立的samba各个线程与性能打点数组内的各个数组成员的一一对应关系,各业务线程根据性能打点请求,分别统计各自的性能打点数据。该方法通过将各个线程和各个数组成员进行一一对应,即每个线程维护一个性能打点数据成员,避免了多个线程同时访问一个成员的资源竞争情况,大大减少了互斥锁的调用,减少了cpu调度压力,节约了系统资源;且满足了samba单进程多线程架构性能打点数据的统计。本发明提供的一种samba多线程性能打点装置和一种计算机可读存储介质,同样具有上述有益效果。

附图说明

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

图1为本发明实施例提供的samba多线程性能打点方法的一种具体实施方式的流程示意图;

图2为本发明实施例提供的线程与数组成员对应关系建立流程示意图;

图3为本发明实施例提供的线程性能打点数据统计示意图;

图4为本发明实施例提供的samba多线程性能打点装置的结构示意框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例提供的samba多线程性能打点方法的一种具体实施方式的流程示意图,该方法可以包括以下步骤:

步骤101、接收性能打点请求。

步骤102、主线程将各个性能打点请求分发至相应的业务线程。

步骤103、基于预先建立的samba各个线程与性能打点数组内的各个数组成员的一一对应关系,各业务线程根据性能打点请求,分别统计各自的性能打点数据。

具体地,samba服务中的主线程接收来自客户端的性能打点请求,并将性能打点请求分别分发至相应的业务线程进行处理,各个业务线程分别统计各自的性能打点数据。

需要说明,samba各个线程与性能打点数组内的各个数组成员一一对应,即,每个线程对应一个数组成员,也即,每一线程维护一个性能打点数据成员,该成员是性能打点数组内的一个成员。该一一对应关系可以是预先建立好,也可以不是预先建立好的。

上述性能打点数据可以包括但不限于smb协议关键字的处理请求次数、平均处理时延、最大处理时延,以及文件系统操作接口的调用次数、平均时延、最大时延。

参见图2示出的本发明实施例提供的线程与数组成员对应关系建立流程示意图,在一些可行实施方式中,在上述步骤101之前还可以包括:

步骤a、初始化性能打点数组,其中,性能打点数据内的数组成员数与线程数相同,成员值为零;

步骤b、初始化线程共享资源变量、线程私有数据和线程索引号为零;

步骤c、判断线程索引号与线程数的大小,若线程索引号大于线程数,则进入步骤,若线程索引号小于线程数,则进入步骤d;

步骤d、加互斥锁,并将线程共享资源变量加一,线程私有数据设置为线程共享资源变量减一;

步骤e、释放互斥锁,并将索引号加一,继续判断线程索引号与线程数的大小并执行相应操作,直至所有线程私有数据初始化完成,以建立各个线程与性能打点数组内的各个数组成员的一一对应关系;

步骤f、若线程索引号大于线程数,则结束进程。

也就是说,通过上述步骤a至步骤f,可以确定每个线程与数组成员的对应关系,也即进行线程私有数据初始化。这样加锁和释放锁只会在线程启动调用与线程数相等的次数,减少了互斥锁的调用次数。

在一些可行实施方式中,上述各业务线程根据性能打点请求,分别统计各自的性能打点数据可以具体为:各业务线程根据性能打点请求,分别统计各自的smb协议关键字性能打点数据和文件系统操作接口性能打点数据。

为更好地业务线程统计性能打点数据的过程,请参见图3示出的多线程性能打点数据统计示意图。如图3所示,客户端向samba服务的发送请求1和请求2,samba服务的主线程将接收的请求1和请求2进行线程分配,将请求1分配给业务线程1处理,请求2分配给业务线程n处理;业务线程1和业务线程n分别进行smb关键字打点数据统计、底层文件系统操作接口打点数据统计。

可以看出,各个业务线程只操作本身的性能打点数据成员,这样无需进行多线程频繁的加锁和释放锁的竞争机制。

为更好了解所统计的性能打点数据,为分析samba性能瓶颈提供有力分析数据,将所统计的性能打点数据进行汇总输出并进行相应显示。在一些可行实施方式中,在上述各业务线程根据性能打点请求,分别统计各自的性能打点数据之后,还可以包括:根据数据汇总指令,汇总各业务线程统计的性能打点数据,并将汇总的性能打点数据进行汇总输出。具体地,接收用户输入的汇总指令,相应的汇总各个业务线程所统计的性能打点数据,输出显示至相应显示屏。

本发明实施例所提供的一种samba多线程性能打点方法,包括:接收性能打点请求;主线程将各个性能打点请求分发至相应的业务线程;基于预先建立的samba各个线程与性能打点数组内的各个数组成员的一一对应关系,各业务线程根据性能打点请求,分别统计各自的性能打点数据。该方法通过将各个线程和各个数组成员进行一一对应,即每个线程维护一个性能打点数据成员,避免了多个线程同时访问一个成员的资源竞争情况,大大减少了互斥锁的调用,减少了cpu调度压力,节约了系统资源;且满足了samba单进程多线程架构性能打点数据的统计。

下面对本发明实施例提供的samba多线程性能打点装置进行介绍,下文描述的samba多线程性能打点装置与上文描述的samba多线程性能打点方法可相互对应参照。

请参考图4,图4为本发明实施例提供的samba多线程性能打点装置的结构示意框图,该装置可以包括:

接收模块41,用于接收性能打点请求;

主线程分发模块42,用于主线程将各个性能打点请求分发至相应的业务线程;

性能打点模块43,用于基于预先建立的samba各个线程与性能打点数组内的各个数组成员的一一对应关系,各业务线程根据性能打点请求,分别统计各自的性能打点数据。

在一些可行实施方式,该装置还可以包括:

数组初始化模块,用于初始化性能打点数组,其中,性能打点数据内的数组成员数与线程数相同,成员值为零;

变量初始化模块,用于初始化线程共享资源变量、线程私有数据和线程索引号为零;

判断模块,用于判断线程索引号与线程数的大小,若线程索引号大于线程数,则结束进程;

加锁模块,用于若线程索引号小于线程数,则加互斥锁,并将线程共享资源变量加一,线程私有数据设置为线程共享资源变量减一;

释放模块,用于释放互斥锁,并将索引号加一,继续判断线程索引号与线程数的大小并执行相应操作,直至所有线程私有数据初始化完成,以建立各个线程与性能打点数组内的各个数组成员的一一对应关系。

在一些可行实施方式,性能打点模块包括:

性能打点数据统计子模块,用于各业务线程根据性能打点请求,分别统计各自的smb协议关键字性能打点数据和文件系统操作接口性能打点数据。

在一些可行实施方式,该装置还可以包括:

汇总输出模块,用于根据数据汇总指令,汇总各业务线程统计的性能打点数据,并将汇总的性能打点数据进行汇总输出。

本实施例中,通过将各个线程和各个数组成员进行一一对应,即每个线程维护一个性能打点数据成员,避免了多个线程同时访问一个成员的资源竞争情况,大大减少了互斥锁的调用,减少了cpu调度压力,节约了系统资源;且满足了samba单进程多线程架构性能打点数据的统计。

本发明实施例提供一种计算可读存储介质,该计算机可读存储介质上存储有samba多线程性能打点程序,samba多线程性能打点被处理器执行时实现如任一项samba多线程性能打点方法的步骤。

需要说明,本实施例与上述两个实施例的相似之处,可具体参见上述两个实施例的相应介绍,在此不再赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的samba多线程性能打点方法、装置及一种计算可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1