一种网络IO密集型任务的调度方法及装置与流程

文档序号:11949776阅读:739来源:国知局
一种网络IO密集型任务的调度方法及装置与流程

本发明涉及操作系统性能优化技术领域,更具体地说,涉及一种网络IO密集型任务的调度方法及装置。



背景技术:

NUMA(Non Uniform Memory Access Architecture,非统一内存访问架构)架构是目前中大型操作系统中所广泛采用的一种解决方案,主要是针对多处理器的操作系统。

在NUMA架构中包含有多个节点,每个节点包含一定数量的CPU;而对于操作系统上层应用而言,IO(输入输出)任务运行在哪一个节点上要服从系统的统一调度策略。但是发明人发现,现有技术中上述的统一调度策略往往需要在不同节点之间进行任务的迁移,如现有机器1和机器2,机器1中包含有3个结点,但是仅有一个节点与网卡设备连接;当机器1的IO任务需要与机器2实现网络通信时(即该IO任务为网络IO任务),处理该IO任务的节点需要通过网卡设备实现与机器2的网络通信,因此,只有与网卡设备连接的节点可以直接通过网卡设备实现与机器2的网络通信,而其他两个节点则需要将IO任务转移至与网卡设备连接的节点,以通过该节点连接的网卡设备实现与机器2的网络通信。而在不同节点之间进行任务的迁移会造成系统性能损失,以及增加系统的整体运行压力。

综上所述,现有技术中实现对于网络IO任务的调度的技术方案存在系统性能损失较严重,且系统整体运行压力较大的问题。



技术实现要素:

本发明的目的是提供一种网络IO密集型任务的调度方法及装置,以解决现有技术中实现对于网络IO任务的调度的技术方案存在的系统性能损失较严重,且系统整体运行压力较大的问题。

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

一种网络IO密集型任务的调度方法,包括:

查找当前操作系统中IO使用率高于预设值的任务,并从中筛选出需利用网络连接实现的网络IO密集型任务;

将所述网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上。

优选的,还包括:

将与所述网络IO密集型任务对应的数据迁移至与网卡设备连接的节点包含的内存上。

优选的,将所述网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上,包括:

将与网卡设备连接的节点包含的CPU设置为与所述网络IO密集型任务亲和的CPU。

优选的,确定与网卡设备连接的节点,包括:

查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备,确定出所述网卡设备以及与所述网卡设备连接的节点。

优选的,查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备,包括:

利用lscpi命令查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备。

一种网络IO密集型任务的调度装置,包括:

任务筛选模块,用于查找当前操作系统中IO使用率高于预设值的任务,并从中筛选出需利用网络连接实现的网络IO密集型任务;

任务分配模块,用于将所述网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上。

优选的,还包括:

数据迁移模块,用于将与所述网络IO密集型任务对应的数据迁移至与网卡设备连接的节点包含的内存上。

优选的,任务分配模块包括:

任务分配单元,用于将与网卡设备连接的节点包含的CPU设置为与所述网络IO密集型任务亲和的CPU。

优选的,还包括:

节点确定模块,用于查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备,确定出所述网卡设备以及与所述网卡设备连接的节点。

优选的,节点确定模块包括:

节点确定单元,用于利用lscpi命令查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备。

本发明提供的一种网络IO密集型任务的调度方法及装置,其中,该方法包括:查找当前操作系统中IO使用率高于预设值的任务,并从中筛选出需利用网络连接实现的网络IO密集型任务;将所述网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上。通过本申请公开的上述技术方案,首先确定出当前操作系统中存在的网络IO密集型任务,进而将该任务分配至与网卡设备连接的节点包含的CPU上,由该CPU实现对该任务的处理。其中,网络IO密集型任务为IO使用率高于预设值且需通过网卡设备实现网络连接的任务,因此,将这类任务分配至与网卡设备连接的节点包含的CPU上,避免了其被分配至不与网卡设备连接的节点上,从而还需要通过与网卡设备连接的节点实现任务的处理,也就避免了任务在不同节点之间的迁移,从而降低了系统性能损失,减少了系统的整体运行压力。

附图说明

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

图1为本发明实施例提供的一种网络IO密集型任务的调度方法的流程图;

图2为本发明实施例提供的一种网络IO密集型任务的调度装置的结构示意图。

具体实施方式

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

请参阅图1,其示出了本发明实施例提供的一种网络IO密集型任务的调度方法的流程图,可以包括以下步骤:

S11:查找当前操作系统中IO使用率高于预设值的任务,并从中筛选出需利用网络连接实现的网络IO密集型任务。

需要说明的是,本发明实施例中涉及的操作系统可以为Linux操作系统,预设值可以根据实际需要进行确定,对当前操作系统中的所有任务的IO使用情况进行统计,其中,IO使用率高于预设值的任务为IO使用率较高的任务,即为IO密集型任务,而需利用网络连接实现的IO密集型任务即为网络IO密集型任务。

具体来说,可以通过操作系统提供的IO监测命令实现所有任务IO使用情况的监测,进而确定出IO密集型任务,而这些任务主要包括通过对磁盘进行操作实现的任务及需利用网络连接实现的任务,其中,需利用网络连接实现的任务即需要与其他设备之间进行网络通信的任务;然后利用lsof系统工具对所有IO密集型任务进行分类和筛选,查找出其中需利用网络连接实现的任务,即为网络IO密集型任务,并将这些任务进行记录,以在该任务出现时,均对其进行步骤S12的处理。

S12:将网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上。

将上述网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上,具体可以是平均分配至该结点的各个CPU上,也可以根据实际需要确定其他分配原则,从而由于网卡设备连接的节点包含的CPU实现对网络IO密集型任务的处理。

通过本申请公开的上述技术方案,首先确定出当前操作系统中存在的网络IO密集型任务,进而将该任务分配至与网卡设备连接的节点包含的CPU上,由该CPU实现对该任务的处理。其中,网络IO密集型任务为IO使用率高于预设值且需通过网卡设备实现网络连接的任务,因此,将这类任务分配至与网卡设备连接的节点包含的CPU上,避免了其被分配至不与网卡设备连接的节点上,从而还需要通过与网卡设备连接的节点实现任务的处理,也就避免了任务在不同节点之间的迁移,从而降低了系统性能损失,减少了系统的整体运行压力。

本发明实施例提供的一种网络IO密集型任务的调度方法,还可以包括:

将与网络IO密集型任务对应的数据迁移至与网卡设备连接的节点包含的内存上。

需要说明的是,将网络IO密集型任务对应的数据迁移至与网卡设备连接的节点包含的内存上,由此,在处理网络IO密集型任务并且需要获取对应数据时可以直接利用迁移过来的数据,无需再由其他节点获取对应数据,由此,进一步减少了系统性能损耗。

另外,将网络IO密集型任务分配至与网卡设备连接的节点并将与网络IO密集型任务对应的数据迁移至与网卡设备连接的节点后,还可以对网络IO密集型任务及其对应的数据,即其使用的内存进行绑定,从而需要使用对应数据时在物理上缩短了数据传输距离,减少了网络IO密集型任务和对应数据在不同节点之间的迁移,减少了系统性能损耗,提升了系统性能。

本发明实施例提供的一种网络IO密集型任务的调度方法,将网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上,可以包括:

将与网卡设备连接的节点包含的CPU设置为与网络IO密集型任务亲和的CPU。

将与网卡设备连接的节点包含的CPU设置为与网络IO密集型任务亲和的CPU后,网络IO密集型任务会自动被分配至与其亲和的CPU上实现;简单地说,CPU的亲和性就是任务要在某个给定的CPU上尽量长时间地运行而不被迁移到其他CPU上的倾向性。因此,利用CPU的亲和性,使用调度器使网络IO密集型任务尽可能的在同一个节点上运行,由此,有效减少了跨节点的数据传输。具体来说,可以利用taskset命令设定这些任务的CPU亲和性,以使这些任务能够运行在网卡设备所连接的节点的CPU上。

本发明实施例提供的一种网络IO密集型任务的调度方法,确定与网卡设备连接的节点,可以包括:

查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备,确定出网卡设备以及与网卡设备连接的节点。

需要说明的是,监测当前操作系统对应的物理设备分布情况,进而确定出PCI总线及连接至PCI总线的硬件设备,确定出硬件设备中包含的网卡设备及与网卡设备连接的节点,具体可以是确定出节点在操作系统中的编号,以方便对节点进行定位。

具体来说,查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备,可以包括:

利用lscpi命令查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备。

当然,还可以根据实际需要及当前操作系统的不同进行其他设置,均在本发明的保护范围之内。

与上述实施例相对应,本发明实施例还提供了一种网络IO密集型任务的调度装置,如图2所示,包括:

任务筛选模块11,用于查找当前操作系统中IO使用率高于预设值的任务,并从中筛选出需利用网络连接实现的网络IO密集型任务;

任务分配模块12,用于将网络IO密集型任务分配至与网卡设备连接的节点包含的CPU上。

本发明实施例提供的一种网络IO密集型任务的调度装置,还可以包括:

数据迁移模块,用于将与网络IO密集型任务对应的数据迁移至与网卡设备连接的节点包含的内存上。

本发明实施例提供的一种网络IO密集型任务的调度装置,任务分配模块可以包括:

任务分配单元,用于将与网卡设备连接的节点包含的CPU设置为与网络IO密集型任务亲和的CPU。

本发明实施例提供的一种网络IO密集型任务的调度装置,还可以包括:

节点确定模块,用于查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备,确定出网卡设备以及与网卡设备连接的节点。

本发明实施例提供的一种网络IO密集型任务的调度装置,节点确定模块可以包括:

节点确定单元,用于利用lscpi命令查看当前操作系统中的PCI总线以及连接至该PCI总线的硬件设备。

本发明实施例提供的一种网络IO密集型任务的调度装置中相关部分的说明请参见本发明实施例提供的一种网络IO密集型任务的调度方法中对应部分的详细说明,在此不再赘述。

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

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