CN102098215B - 一种多应用收包的优先级管理方法 - Google Patents
一种多应用收包的优先级管理方法 Download PDFInfo
- Publication number
- CN102098215B CN102098215B CN201010598519.6A CN201010598519A CN102098215B CN 102098215 B CN102098215 B CN 102098215B CN 201010598519 A CN201010598519 A CN 201010598519A CN 102098215 B CN102098215 B CN 102098215B
- Authority
- CN
- China
- Prior art keywords
- application
- message
- software
- hardware
- pci
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种多应用收包的优先级管理方法。硬件网卡的PCI控制器向主机注册PCI空间,驱动软件申请报文缓冲区,构造驱动信息结构,驱动软件定时计算CPU负载,并记录到驱动信息结构中,接口库把报文缓冲区、PCI空间寄存器、驱动信息数据结构映射到每个应用的进程空间,并配置应用优先级,硬件收到报文后把报文放入缓冲区,通知应用软件收包,应用软件收到报文后根据自己的优先级和当前cpu负载情况,决定是否处理该报文。本发明根据当前CPU负载情况,动态丢弃报文,实现多应用发包的优先级管理。
Description
技术领域
本发明涉及网络数据处理领域,具体涉及一种多应用收包的优先级管理方法。
背景技术
在网络数据分析系统中,往往在一个硬件平台上运行多个应用,也就是说需要多个应用软件从同一个网卡接收报文。然而,在有些系统中,多个应用是有优先级的,当系统CPU计算资源紧张时,低优先级的应用需要主动丢弃一部分报文,把CPU计算资源让给高优先级的应用。
目前经常采用的技术方案为保证系统性能,应用不能在每次收包时都去计算当前的CPU资源占用情况,所以一般处理方法是给不同优先级应用一个预设的报文采样比例,比如,配置某低优先级应用的采样比例是十分之一,则该应用每收到10个包,从中只处理1个包,剩下的9个包丢弃。
在某些网络上,网络流量随时间波动很大,应用的负载和CPU的资源占用也波动很大,应用在固定配置的采样比例下,在高流量的时间段内,处理流量可能很大,造成CPU过载,在低流量的时间段内,处理流量可能很少,造成CPU空闲计算资源的浪费。
发明内容
本发明的目的是提供一种多应用发包的优先级管理方法,实现可充分利用CPU资源的多应用收包的优先级管理。
一种多应用收包的优先级管理方法,采用软硬件结合的系统,包括硬件网卡、驱动软件、接口库软件,步骤如下:
A、硬件网卡的PCI控制器向主机注册PCI空间;
B、驱动软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理地址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和所有应用软件的读指针为初始值0;
C、驱动软件申请一块内存区域作为驱动信息数据结构,其中包含当前CPU负载,驱动使用一个定时器函数,每隔一个时间片计算一下CPU占用情况,写入驱动信息数据结构中;
D、硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报文长度,修改PCI空间的写指针;
E、接口库中的API接口被一个应用调用时,首先把内核空间的缓冲区和硬件的PCI空间映射到该应用的用户空间,然后根据该应用是第几个应用,把PCI空间的第几个软件读指针寄存器作为该应用的读指针寄存器使用;接口库打开设备时,还把驱动信息结构映射出来,从中可以看到当前的CPU负载情况;
F、应用软件在调用接口库打开设备时,根据该应用的优先级,在接口库中预设一个CPU负载情况的阈值;
G、应用软件循环收包,每次收包都要查看接口库中映射出的PCI空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针;如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询;
H、每个应用在使用接口库返回的报文之前,先把驱动信息结构中的当前CPU负载和该应用优先级确定的CPU负载阈值相比较,如果当前CPU负载已经超过了该应用的阈值,则主动丢包。
本发明的一种优选技术方案在于:所述PCI空括包括报文缓冲区地址、长度、硬件从缓冲区读报文的读指针、软件向缓冲区写报文的写指针,根据预设的最大应用软件个数,为每一个应用申请一套寄存器。
本发明不使用固定的采样比,而是根据当前CPU负载情况,动态丢弃报文,避免CPU资源的浪费。
附图说明
图1是本发明的结构图
具体实施方式
本发明是一个软硬件结合的系统,包括硬件网卡、驱动软件、接口库软件。
驱动软件负责分配接收报文使用的缓冲区,需要在内核中申请一整片物理地址连续的内存,作为接收报文的缓冲区。
驱动软件还申请一块内存区域,保存驱动信息数据结构,其中包括当前的cpu负载。并使用定时器函数,每隔一个时间片(比如1秒)计算一下当前cpu的负载情况,写入驱动信息的数据结构中。
硬件网卡负责从网络接收报文,并把报文传输到主机内存的报文缓冲区中,通过写pci空间的寄存器,通知软件有新报文到达。pci空间寄存器主要有:报文缓冲区地址、长度、软件从缓冲区读报文的读指针、硬件向缓冲区写报文的写指针,其中读指针有多个,每个应用有自己的读指针。
接口库软件在每个应用调用接收报文的API接口时,把报文缓冲区和pci空间映射到该应用的用户空间,并设置每个应用的优先级信息,每个应用轮询pci空间中该应用的缓冲区读写指针信息,查看是否有新的报文到达,并根据优先级决定收取还是丢弃报文。
该发明的实现方法和过程如下:
(1)硬件网卡的pci控制器向主机注册pci空间,其中定义接收报文相关的寄存器地址,包括报文缓冲区地址、长度、软件从缓冲区读报文的读指针、硬件向缓冲区写报文的写指针,根据预设的最大应用软件个数,配置多个读指针寄存器。
(2)驱动软件申请报文缓冲区。
驱动软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理地址和长度写入pci空间的对应寄存器,并设置硬件的写指针和所有应用软件的读指针为初始值0。
(3)驱动软件定时计算cpu负载
驱动软件申请一块内存区域作为驱动信息数据结构,其中包含当前cpu负载,驱动使用一个定时器函数,每隔一个时间片计算一下cpu专用情况,写入驱动信息数据结构中。
(4)硬件接收报文。
硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报文长度,修改pci空间的写指针。
(5)接口库映射报文缓冲区和pci空间寄存器,和驱动信息数据结构。
接口库中的API接口被一个应用调用时,首先把内核空间的缓冲区和硬件的PCI空间映射到该应用的用户空间,然后根据该应用是第几个应用,把pci空间的第几个软件读指针寄存器作为该应用的读指针寄存器使用。
接口库打开设备时,还把驱动信息结构映射出来,从中可以看到当前的cpu负载情况。
(6)接口库配置应用优先级
应用软件在调用接口库打开设备时,根据该应用的优先级,在接口库中预设一个cpu负载情况的阈值,比如高优先级设置为80%,表示cpu负载超过80%丢包,低优先级设置为20%,表示cpu负载超过20%丢包。
(7)应用软件接收报文。
应用软件循环收包,每次收包都要查看接口库中映射出的pci空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针。如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询。
每个应用在使用接口库返回的报文之前,先把驱动信息结构中的当前cpu负载和该应用优先级确定的cpu负载阈值相比较,如果当前cpu负载已经超过了该应用的阈值,比如应用优先级的阈值是50%,当前驱动信息中显示的cpu负载是60%,则主动丢包。
Claims (2)
1.一种多应用收包的优先级管理方法,其特征在于:采用软硬件结合的系统,包括硬件网卡、驱动软件、接口库软件,步骤如下:
A、硬件网卡的PCI控制器向主机注册PCI空间;
B、驱动软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理地址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和所有应用软件的读指针为初始值0:
C、驱动软件申请一块内存区域作为驱动信息数据结构,其中包含当前CPU负载,驱动使用一个定时器函数,每隔一个时间片计算一下CPU占用情况,写入驱动信息数据结构中;
D、硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报文长度,修改PCI空间的写指针;
E、接口库中的API接口被一个应用调用时,首先把内核空间的缓冲区和硬件的PCI空间映射到该应用的用户空间,然后根据该应用是第几个应用,把PCI空间的第几个软件读指针寄存器作为该应用的读指针寄存器使用;接口库打开设备时,还把驱动信息结构映射出来,从中可以看到当前的CPU负载情况;
F、应用软件在调用接口库打开设备时,根据该应用的优先级,在接口库中预设一个CPU负载情况的阈值;
G、应用软件循环收包,每次收包都要查看接口库中映射出的PCI空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针;如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询;
H、每个应用在使用接口库返回的报文之前,先把驱动信息结构中的当前CPU负载和该应用优先级确定的CPU负载阈值相比较,如果当前CPU负载已经超过了该应用的阈值,则主动丢包。
2.如权利要求1所述一种多应用收包的优先级管理方法,其特征在于:所述PCI空间包括报文缓冲区地址、长度、硬件从缓冲区读报文的读指针、软件向缓冲区写报文的写指针,根据预设的最大应用软件个数,为每一个应用申请一套寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010598519.6A CN102098215B (zh) | 2010-12-17 | 2010-12-17 | 一种多应用收包的优先级管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010598519.6A CN102098215B (zh) | 2010-12-17 | 2010-12-17 | 一种多应用收包的优先级管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102098215A CN102098215A (zh) | 2011-06-15 |
CN102098215B true CN102098215B (zh) | 2014-03-12 |
Family
ID=44131087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010598519.6A Active CN102098215B (zh) | 2010-12-17 | 2010-12-17 | 一种多应用收包的优先级管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102098215B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404223B (zh) * | 2011-11-28 | 2015-03-25 | 曙光信息产业(北京)有限公司 | 一种多应用收包细粒度优先级控制系统和方法 |
CN102420751A (zh) * | 2011-11-28 | 2012-04-18 | 曙光信息产业(北京)有限公司 | 一种报文采样系统的负载判断系统和方法 |
CN102497430B (zh) * | 2011-12-13 | 2014-12-03 | 曙光信息产业(北京)有限公司 | 一种分流设备实现系统和方法 |
CN105744504A (zh) * | 2016-03-31 | 2016-07-06 | 中国联合网络通信集团有限公司 | 终端与卡应用的通信方法和终端 |
CN116233036B (zh) * | 2023-03-14 | 2023-08-25 | 上海耀芯电子科技有限公司 | 一种dma传输控制方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1725732A (zh) * | 2005-06-08 | 2006-01-25 | 杭州华为三康技术有限公司 | 一种报文限速方法 |
US7206282B1 (en) * | 2001-05-29 | 2007-04-17 | F5 Networks, Inc. | Method and apparatus to balance flow loads in a multipurpose networking device |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7801129B2 (en) * | 2006-04-27 | 2010-09-21 | Alcatel-Lucent Usa Inc. | Method and apparatus for SIP message prioritization |
-
2010
- 2010-12-17 CN CN201010598519.6A patent/CN102098215B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206282B1 (en) * | 2001-05-29 | 2007-04-17 | F5 Networks, Inc. | Method and apparatus to balance flow loads in a multipurpose networking device |
CN1725732A (zh) * | 2005-06-08 | 2006-01-25 | 杭州华为三康技术有限公司 | 一种报文限速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102098215A (zh) | 2011-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2647163B1 (en) | A method and system for improved multi-cell support on a single modem board | |
CN102006241B (zh) | 一种多个应用共享一个缓冲区的报文接收方法 | |
CN111221638B (zh) | 并发任务的调度处理方法、装置、设备和介质 | |
EP2633404B1 (en) | Lock-less buffer management scheme for telecommunication network applications | |
JP5925846B2 (ja) | 待ち時間低減パケット処理を備えたソケット管理 | |
US20200059402A1 (en) | Improving performance of multi-processor computer systems | |
CN102098215B (zh) | 一种多应用收包的优先级管理方法 | |
CN106104485A (zh) | 针对多进程应用的动态资源管理 | |
US20110161965A1 (en) | Job allocation method and apparatus for a multi-core processor | |
US20220066699A1 (en) | Data read/write method and apparatus, and exchange chip and storage medium | |
CN102055671B (zh) | 一种多应用发包的优先级管理方法 | |
CN113127170A (zh) | 用于在联系人中心系统中配对的方法、系统和制品 | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
KR20180089273A (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
US20130227164A1 (en) | Method and system for distributed layer seven traffic shaping and scheduling | |
US11671382B2 (en) | Technologies for coordinating access to data packets in a memory | |
US20110153825A1 (en) | Server resource allocation | |
CN114020529A (zh) | 一种流表数据的备份方法、装置、网络设备和存储介质 | |
CN102170401B (zh) | 一种数据的处理方法和设备 | |
CN108173909A (zh) | 数据同步方法、移动终端及计算机可读存储介质 | |
CN109905486B (zh) | 一种应用程序识别展示方法和装置 | |
WO2017070869A1 (zh) | 一种内存配置方法、装置及系统 | |
CN107911317B (zh) | 一种报文调度方法及装置 | |
CN107273082B (zh) | 图像的显示方法、装置、终端及存储介质 | |
CN110868364A (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 | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221215 Address after: 430040 NO.666, Wuhuan Avenue, linkonggang economic and Technological Development Zone, Wuhan City, Hubei Province (10) Patentee after: Dawning Network Technology Co.,Ltd. Address before: 300384 Xiqing District, Tianjin Huayuan Industrial Zone (outside the ring) 15 1-3, hahihuayu street. Patentee before: DAWNING INFORMATION INDUSTRY Co.,Ltd. |