用于监视计算机系统中的资源的方法和系统的制作方法

文档序号:6428291阅读:136来源:国知局
专利名称:用于监视计算机系统中的资源的方法和系统的制作方法
技术领域
本发明一般涉及计算机网络上的资源监视。更具体地说,本发明涉及监视和管理存在于分布式计算环境中的资源。
背景技术
自动计算模型围绕着可以智能化地分布其工作负载到多台计算机上的连网计算机之间的交互来发展。数据存储和处理能力在分布式计算环境中分布在网络上。分布式系统中的机器可以具有不同硬件体系结构和操作系统。
分布式系统基于能够在动态和异构环境中自治行动的智能组件。这些分布式系统使该环境自治化且智能化,并且可以减少用户交互。很多分布式计算架构包括安装在多个客户端系统上的“轻量级”软件代理,以及一个或多个专用分布式计算管理服务器。这些服务器接受分布式计算请求,并且将它们的大处理任务划分成可以在单独桌面计算机系统上运行的较小任务。
作为一个例子,运行在客户端计算机系统上的代理可以检测何时系统处于空闲状态,向管理服务器通知该系统可用于处理,并且请求应用包。然后,客户端系统从服务器接收所请求的应用包,并且当空闲处理器循环可用时运行应用包。客户端系统将结果回送给服务器。
该例子由图10所示的顺序图进一步示出,该图涉及分布式计算环境内的一般性监视代理。在客户端系统上持续运行以处理请求的客户端后台程序(daemon)接收监视资源的请求。客户端系统上的监视代理初始化其各个组件如调度器和评估器(evaluator)对象。
监视代理向其调度器对象通知超时值。监视应用还向评估器对象通知要应用于由调度器对象收集的数据的任务和算法。调度器对象通过调用由操作系统提供的适当接口或系统调用来从系统收集数据。当服务器请求资源状态时,监视代理将评估请求发送到评估器对象,然后评估器对象向调度器对象要求应用算法的规格(metrics)。然后,将经过处理的数据返回到服务器。
下面表1概括描述图10的步骤。
表1步骤1001 客户端后台程序向监视代理发送涉及所要监视的资源的请求。
步骤1002 监视代理将资源详细信息发送到调度器对象。
步骤1003 为该特定资源设置调度器对象的超时。
步骤1004 调度器对象向计时器登记其自身。
步骤1005 在每一个超时内,调度器对象通过调用适当可执行代码来获得资源状态。
步骤1006 可执行代码对操作系统进行系统调用。
步骤1007 操作系统提取特定资源的状态。该信息在每一个超时内由和1008调度器对象存储。
步骤1009 当有请求来自服务器时,客户端后台程序再次与监视代理通信。
步骤1010 采用所需的要对资源数据执行的算法调用评估器对象。
步骤1011 评估器对象从调度器对象收集矩阵信息。
步骤1003 评估器对象对数据执行算法,并且将结果发送到监视代理以最终发送到服务器。
鉴于上述观察,显然需要一种改进的分布式资源监视方式。

发明内容
描述了一种用于在分布式计算环境中探测和监视应用的技术和相关软件设计。探测器设计集成到客户端系统上的操作系统内核中。更具体地说,在此所述的设计巧妙地把周期性探测功能委托给操作系统内核。执行该委托在操作系统负担方面是“轻量级”的,因为为了其自己的资源配目的,操作系统已经监视系统资源。
监视代理对被观察参数的影响是微不足道的。由监视代理加到对特定资源所预期的理想数据的偏差极其小。客户机上的资源探测应用现在仅留有根据服务器请求对矩阵数据运行简单算法。在大多数操作系统中,该矩阵数据或存储段可以直接使得可用于监视代理而无需创建重复副本。基于中断的编程用来开发内核任务例程。该编程模型使得监视代理完全透明于客户端系统的用户。该编程模型减小了对客户端系统的应用空间的负担,并且对客户端系统的资源具有较小影响。


图1是提供在此所述的探测器代理所涉及的各组件的示意图。
图2是示出在此所述的探测器代理所涉及的各步骤的流程图。
图3是适于提供在此所述的探测器代理的合适类型的计算机系统的示意图。
图4是示出资源监视器代理初始化如何在客户端系统上发生的顺序图。
图5是示出如何在客户端系统上调用资源监视器代理的顺序图。
图6是示出内核探测任务例程如何执行的顺序图。
图7是示出从服务器接收和处理了解分布式资源状态的请求的顺序图。
图8是示出当客户端系统接收到停止资源监视代理的请求时的事件序列的顺序图。
图9A、9B、9C和9D共同给出在Linux操作系统环境上实现的设备驱动程序的计算机代码。
图10是分布式计算环境中的现有监视代理的顺序图。
具体实施例方式
参照五个示例事件序列来描述自动计算探测器代理,其中这五个示例事件序列示出该代理通过其与探测器代理所驻留的计算系统进行交互的操作。在描述这里给出的这五个例子之前,下面直接提供各组件的描述。然后描述能够用于实现探测器代理中的类型的计算硬件,随后是相关软件实现观察的描述。相关源代码的例子在五个所提供例子之后。
组件图1示意性地示出描述资源监视探测器103所涉及的各组件。涉及资源监视探测器103的事件由在客户端系统的操作系统下运行的客户端后台程序102发起。请求从监视服务器101发送到客户端后台程序102,并且作为例子来描述以说明在客户端系统中各个所述组件的状态如何改变。
监视服务器监视服务器101是对监视客户端系统上的资源感兴趣的服务器应用。例如,监视服务器101可以驻留在特定服务器上或者分布在不同服务器上。
客户端后台程序客户端后台程序102是由监视服务器101发送到客户端系统以监视客户端系统上的各资源的后台程序进程。例如,这可以涉及客户端系统的软件、硬件或网络化。因此,客户端后台程序102担当监视服务器101与正被监视的客户端系统之间的通信通道。该客户端后台程序102保存由监视服务器101发送的不同资源监视探测器103的引用。
资源监视探测器资源监视探测器103是监视客户端系统上的资源的代理。资源监视探测器103执行评估器对象104,并且将整理数据返回到监视服务器101。当由监视服务器101请求执行时,资源监视探测器103在用户空间中执行。
评估器对象评估器对象104包含要对由任务函数109收集的数据执行的分析算法。评估器对象104在用户空间中执行。
设备驱动程序在初始化的时候,设备驱动程序105担当数据页和任务操作的创建者。设备驱动程序105将任务操作集成到定时器任务中。直到设备驱动程序105被卸载,设备驱动程序105担当探测器与内核106之间的通信通道。
内核内核106是客户端系统上操作系统的核心,因此具有各种相关特性。资源监视探测器103将其自己集成到操作系统的内核106中以执行其功能。集成到内核106中的最重要组件是任务函数109。
内核页内核页107具有两个部分。一个部分是设备驱动程序接口例程代码。内核页107的第二部分是用于记录被监视参数的循环位图缓冲区。资源监视探测器103不需要多个存储页,因此使用内核页107。
内核定时器内核定时器108是资源监视探测器103通过任务函数109与其链接的内核106(也就是,基本操作系统)的一部分。
任务函数任务函数109由设备驱动程序105动态创建,并且链接到内核定时器108。任务函数109的工作是周期性地扫描软件、硬件或网络资源。
过程概述图2是以概述方式描述在此所述的资源监视探测器103的操作所涉及的各步骤的流程图。
首先,在步骤210,客户端后台程序102从监视服务器101接收监视资源的请求。在步骤220,客户端后台程序102将资源监视探测器103装载到存储器中。在步骤230,资源监视探测器103又装载和初始化设备驱动程序105。该设备驱动程序105担任操作系统的内核106与资源监视探测器103之间的接口的角色。
在步骤240,设备驱动程序105在此阶段仅分配内核页107以作将来使用。在步骤230完成设备驱动程序105的初始化之后,设备驱动程序105在步骤250建立用于收集涉及被监视资源并且将该数据存储在内核页107中的任务函数109。在步骤260,资源监视探测器103初始化评估器对象104。该评估器对象104的目的是运行一算法以处理在步骤250由任务函数109收集的数据。
最后,在步骤270,客户端后台程序102将经过处理的数据报告给监视服务器101。
计算机硬件图3是在其上可以实现资源监视探测器103的客户端系统的典型类型的计算机系统300的示意图。
实现资源监视探测器103和相关功能的计算机软件在安装在计算机系统300上的适当操作系统下执行。
计算机系统300的各组件包括计算机320、键盘310和鼠标315、以及视频显示器390。计算机320包括处理器340、存储器350、输入/输出(I/O)接口360、365、视频接口345以及存储设备355。
处理器340是执行操作系统和在操作系统下执行的计算机软件的中央处理单元(CPU)。存储器350包括随机存取存储器(RAM)和只读存储器(ROM),并且在处理器340的引导下使用。
视频接口345连接到视频显示器390,并且提供视频信号以显示在视频显示器390上。从键盘310和鼠标315提供用来操作计算机320的用户输入。存储设备355可以包括盘驱动器或任何其他适当存储介质。
计算机320的每一个组件均连接到包括数据、地址和控制总线的内部总线330,以允许计算机320的各组件通过总线330相互通信。
计算机系统300可以使用与以因特网380代表的网络的通信通道385通过输入/输出(I/O)接口365连接到一个或多个其他类似计算机。
计算机软件可以记录在便携式存储介质上,在这种情况下,计算机软件程序从存储设备355由计算机系统300访问。或者,计算机软件可以由计算机320从因特网380直接访问。在任一情况下,用户可以使用键盘310和鼠标315与计算机系统300交互以操作在计算机320上执行的程序化计算机软件。
上述计算机系统300是仅作为适于用作客户端系统的特定类型系统的例子来描述的。
计算机软件图9A、9B、9C和9D给出在Linux操作系统的安装上实现的用于监视进程的设备驱动程序105。如上所述,计算机系统300是在其上可以提供设备驱动程序105的客户端系统的适当计算硬件的例子。
设备驱动程序105采用软件实现,从而针对网络化环境中特定客户端的特定分布式进程在分布式计算应用中测量处理器340的利用。设备驱动程序105在分布式环境中的每个客户端系统中调用。设备驱动程序105的目的是对于正被观察的进程以10毫秒的间隔创建反映处理器340的状态的二进制条目。如果在进行测量的那个时刻该进程正在执行,则该条目为1,并且如果该进程不正在运行,则为0。
内核107没有在其自己上运行的线程。相反,内核107具有一组称作“上半”服务的服务以及一组称作“下半”服务的中断例程。
在任何时刻,处理器340可以处于下列阶段之一。
(a)进程在用户空间或内核空间中运行。当存在对服务的进程请求时,内核106在该进程的上下文下执行。
(b)处理器340正在中断模式下执行。
(c)处理器340置于停止状态,因为没有进程准备运行。
内核代码通过访问全局项“current”即一个指向“struct tasks_struct”的指针,可以知道驱动该代码的当前进程。在Linux操作系统中,该变量声明于头代码<linux/sched.h>所包括的头代码<asm/current.h>中。“current”指针引用当前执行的用户进程(PID)。也就是,current->pid。
为了以有规律间隔探测运行在处理器340上的进程,设备驱动程序105向内核定时器108登记任务队列。内核定时器108精确于处理器340的时钟频率级别。任务函数109以在登记期间所指定的超时调用(该超时总是为处理器340的时钟脉冲时间的倍数值)。
这些对内核定时器108的调用处于在该时刻运行的任何随机进程的上下文中。由内核定时器108指向的任务函数109的责任仅是以循环方式将“current->pid”写入到内核页107。
该内核页107(主要由设备驱动程序105拥有)是由监视应用映射的存储器,因此所收集的数据通过虚拟表映射在监视应用的进程上下文下可用。监视应用可以在其空闲时或者每当有请求来自监视服务器101时访问和处理该数据。
例子1-进程监视探测器图4示出如何发生资源监视探测器103的初始化。当客户端后台程序102从监视服务器101接收到启动资源监视探测器103的请求时,客户端后台程序102将资源监视探测器103装载到存储器中。资源监视探测器103又装载和初始化设备驱动程序105。该设备驱动程序105担任操作系统的内核106与资源监视探测器103之间的接口的角色。
设备驱动程序105在此阶段仅分配内核页107以如后所述将来由任务函数109使用。在完成设备驱动程序105的初始化之后,资源监视探测器103还初始化评估器对象104。该评估器对象104的目的是运行一算法以处理由任务函数109收集的矩阵数据。该矩阵数据是在一段时间内写入在内核页107上的。为了映射该内核页107,评估器对象104调用设备驱动程序105的存储器映射导出函数(memory map exportedfunction)。设备驱动程序105在资源监视探测器103的进程虚拟存储器上下文下创建虚拟页表,并且将该虚拟存储器区域(arena)链接到内核页107。虚拟映射的目的是避免为用户空间和内核空间创建重复数据。下面表2概括地描述图4的步骤。
表2步骤401客户端后台程序102创建并初始化资源监视探测器103。
步骤402资源监视探测器103装载并初始化设备驱动程序105,它担当与操作系统的接口,并且执行低层功能。
步骤403设备驱动程序105向操作系统登记其自身。
步骤404设备驱动程序105请求4k字节大小的内核页107。
步骤405内核106从其物理存储器堆中分配内核页107,并且在缓冲器指针寄存器中将地址返回给设备驱动程序105。
步骤406资源监视探测器103创建并初始化评估器对象104。
和407
步骤408 评估器对象104调用设备驱动程序105的存储器映射导出函数。
步骤409 设备驱动程序105在资源监视探测器103的上下文下为在步骤405获得的物理页创建虚拟页表。虚拟映射的目的是避免用户空间和内核空间中的数据重复。
例子2-探测器进程的启动图5示出如何在客户端系统上调用资源监视探测器103。当客户端后台程序102从监视服务器101接收到发起探测的请求时,客户端后台程序102调用诸如用于监视进程或网络活动的适当资源监视探测器103。资源监视探测器103通过调用适当接口将该消息转发到设备驱动程序105。设备驱动程序105以一超时值创建任务函数109。设备驱动程序105还向任务函数109登记一函数。该函数在每个超时期间调用,并且独立于任何进程上下文而执行。最后,设备驱动程序105向操作系统的内核106登记该定时器任务,即任务函数109。下面表3概括地描述图6的步骤。
表3步骤501客户端后台程序102从监视服务器101接收启动装载在客户端系统上的资源监视探测器103的请求。
步骤502将该请求转发到设备驱动程序105。
步骤503设备驱动程序105以一超时值创建内核定时器108。
步骤504向内核定时器108登记任务函数109。该函数在每个超时内调用,并且独立于任何进程上下文而执行。
步骤505向操作系统的内核106登记内核定时器108。
例子3-运行监视器图6示出内核定时器108的任务函数109形式的探测任务例程如何在客户端系统上执行。操作系统的内核106在每个超时期间接收一中断。该超时由设备驱动程序105在任务登记期间指定。调用与该任务相链接的任务函数109。该任务函数109是轻量级的,并且仅执行非常小的代码部分以采用循环方式将被观察的分布式资源属性记录到内核页107中。该循环记录是指当内核页满时,它将从头开始覆写。下面表4概括地描述图6的步骤。
表4步骤601操作系统的内核106在每个超时期间从内核定时器108接收一中断。该超时由设备驱动程序105在任务函数109的登记期间作为任务函数109的变量项指定。
步骤602如设备驱动程序105在内核任务登记期间所指定调用任务函数109。
步骤603该任务函数109是“轻量级”的,并且仅以循环方式将被观察的资源参数写入到常驻内核存储器即内核页107中。
例子4-分布式应用的状态图7示出客户端后台程序102从监视服务器101接收检查分布式资源状态的请求的例子。适当的资源监视探测器103将该请求转发到其评估器对象104。评估器对象104从内核页107读取矩阵数据。该内核页107在初始化期间映射到探测器103的进程上下文。评估器对象104对该矩阵数据应用简单的算法,以为监视服务器101所请求的特定分布式应用计算客户端系统上的负载。然后,采用预定通信协议将经过处理的数据转发到监视服务器101。下面表5概括地描述图7的步骤。
表5步骤701客户端后台程序102从监视服务器101接收分布式资源状态请求。
步骤702资源监视探测器103将该请求转发到其评估器对象104。
步骤703评估器对象104直接从内核页107读取矩阵数据。该内核页107由任务函数109异步写入,并且相同内核页107在初始化期间映射到资源监视探测器103的虚拟页表。
步骤704评估器对象104对矩阵数据应用简单分析算法以整理数据,然后发送由监视服务器101请求的资源状态。
例子5-停止探测器图8示出客户端后台程序102接收停止客户端系统上的资源监视探测器103的请求的例子。资源监视探测器103调用设备驱动程序105的接口以“清除”其资源。设备驱动程序105释放内核页107。然后,设备驱动程序105销毁任务函数109和任务函数109。从内核106删除内核定时器108的引用。然后,资源探测器代理103删除为评估器对象105创建的虚拟映射。资源监视探测器103然后从存储器中删除设备驱动程序105,最后销毁评估器对象104。下面表6概括地描述图8的步骤。
表6步骤801客户端后台程序102接收停止资源监视探测器103的请求。
步骤802资源监视探测器103然后将“清除”其资源的请求发送到设备驱动程序105。
步骤803设备驱动程序105释放内核页107。
和804步骤805设备驱动程序105然后销毁内核定时器108和任务函数和806 109。
步骤807设备驱动程序105然后删除向内核106登记的定时器任务。
步骤808设备驱动程序105发送从操作系统的内核106中注销其自己的请求。
步骤809资源监视探测器103删除为评估器对象104创建的虚拟映射。
步骤810资源监视探测器103最后销毁评估器对象104。
结束语在此所述的探测器代理与分布式计算领域内的现有应用编程方式不同。采用了基于中断的编程模型来开发用于监视资源的内核探测任务例程。用于监视这些被执行任务例程的责任委托给操作系统的内核。该探测器设计采用了利用操作系统本身平常用来监视系统资源的机制来监视资源的思想。
探测器代理透明于用户和客户端系统。此外,探测器代理也无关于客户端系统上的工作负载,并且对系统上的应用或资源具有微不足道的影响。然而,资源监视驱动程序的设计最好是任务函数仅执行最小所需操作,因为该驱动程序在内核模式下例如每10毫秒自动执行。
关于探测器的准确性,因为任务函数是在中断模式下调用的,所以每次探测都没有包含延迟。操作系统定时器精确到处理器时钟频率级别。
所述探测器代理可以在其中两个或更多个计算机系统由网络连接的任何分布式计算环境中实现,包括连网计算机具有不同类型的环境。对于本领域的技术人员而言是显而易见的,可以对在此所述的技术和配置进行各种变更和修改。
权利要求
1.一种由计算机系统执行以监视计算机系统中的资源的方法,所述方法包括以下步骤向操作系统内核的设备驱动程序请求监视资源;执行内核任务对象以收集与被监视资源相关的数据;以及将所收集的与被监视资源相关的数据存储在内核存储器中。
2.如权利要求1所述的方法,还包括以下步骤创建具有预定超时值的内核任务对象。
3.如权利要求2所述的方法,还包括以下步骤向操作系统内核登记内核任务对象。
4.如权利要求1所述的方法,还包括以下步骤周期性地执行内核任务对象。
5.如权利要求1所述的方法,还包括以下步骤处理存储在内核存储器中的数据。
6.如权利要求1所述的方法,还包括以下步骤在计算机系统上执行后台程序以接收监视资源的请求。
7.如权利要求6所述的方法,其中,客户端后台程序将监视资源的请求引导到监视应用。
8.如权利要求6所述的方法,还包括以下步骤从能够与计算机系统通信的服务器接收监视资源的请求。
9.如权利要求7所述的方法,还包括以下步骤传输所收集的数据。
10.存储在计算机可读介质中并且在计算机操作系统下执行的计算机软件,所述计算机软件包括(I)客户端后台程序,用于接收监视资源的请求;(II)监视应用,由客户端后台程序创建;(III)设备驱动程序,由监视应用初始化,用于与操作系统内核通信;以及(IV)内核任务对象,由设备驱动程序创建,用于收集和存储与被监视资源相关的数据。
11.如权利要求10所述的计算机软件,还包括评估器对象,由监视应用创建,用于处理存储数据。
12.一种用于监视计算机系统中的资源的计算机系统,所述计算机系统包括用于向操作系统内核的设备驱动程序请求监视资源的装置;用于执行内核任务对象以收集与被监视资源相关的数据的装置;以及用于将所收集的与被监视资源相关的数据存储在内核存储器中的装置。
全文摘要
使用设计为集成到操作系统内核中的探测器实现了分布式计算机网络中应用的探测和监视。该探测器巧妙地把周期性探测功能委托给操作系统内核。由于为了其自己的资源分配目的,操作系统已经监视系统资源,因此该功能表示最小的额外计算和网络负载。客户机上的资源探测应用根据服务器请求对矩阵数据运行简单的算法。
文档编号G06F11/30GK1607505SQ200410078629
公开日2005年4月20日 申请日期2004年9月14日 优先权日2003年9月30日
发明者帕萨·曼达尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1