CN102541773A - 数据访问的实现方法和装置 - Google Patents
数据访问的实现方法和装置 Download PDFInfo
- Publication number
- CN102541773A CN102541773A CN2011104557985A CN201110455798A CN102541773A CN 102541773 A CN102541773 A CN 102541773A CN 2011104557985 A CN2011104557985 A CN 2011104557985A CN 201110455798 A CN201110455798 A CN 201110455798A CN 102541773 A CN102541773 A CN 102541773A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer zone
- data access
- access unit
- pointer
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据访问的实现方法和装置,该方法包括:将需要访问的数据存储在缓冲区中;由多个数据访问单元对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。本发明通过对多个数据访问单元设置指针,能够实现多个数据访问单元对缓冲区的并行访问,避免进行数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。
Description
技术领域
本发明涉及通信领域,并且特别地,涉及一种数据访问的实现方法和装置。
背景技术
通常情况下,在一台主机上需要运行多个网络流量处理应用,每个应用都要处理这台主机接收到的所有数据包。
目前,对于这种需要多应用处理所有数据包的情况,主要是对这些数据包进行拷贝,并且,对于每个应用,均需要进行拷贝一份数据,之后再由各个应用来处理这些数据。也就是说,主机上每多支持一个应用,就要多拷贝一份数据,因此会明显增加系统的负担和数据处理的时间,并且会占用系统的存储空间,降低系统的性能,而当应用的数量比较多时,上述问题会更加严重。
针对相关技术中数据访问导致系统负担大、数据访问时间长、并且会大量降低系统性能的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中数据访问导致系统负担大、数据访问时间长、并且会降低系统性能的问题,本发明提出一种数据访问的实现方法和装置,能够避免数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种数据访问的实现方法。
该方法包括:将需要访问的数据存储在缓冲区中;由多个数据访问单元对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。
其中,缓冲区包括多个数据队列,在将需要访问的数据存储在缓冲区中时,以不重复的方式将所有需要访问的数据存储至多个数据队列。
并且,由多个数据访问单元对缓冲区中的数据进行访问包括:对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
该方法可进一步包括:在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
并且,对于每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据。
根据本发明的另一方面,提供了一种数据访问的实现装置。
该装置包括:缓冲区,用于存储需要访问的数据;多个数据访问单元,用于对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,且该数据访问单元每次访问之后更新相应的指针所指向的位置。
其中,缓冲区被划分有多个数据队列,所有需要访问的数据以不重复的方式存储在多个数据队列中。
并且,对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元用于在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
此外,该装置可进一步包括:删除模块,用于在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
该装置可进一步包括:判断模块,用于对每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据,并在判断所有数据访问单元均访问了缓冲区中存储的所有数据的情况下,通知清除模块删除缓冲区中保存的数据。
本发明通过对多个数据访问单元设置指针,能够实现多个数据访问单元对缓冲区的并行访问,避免进行数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。
附图说明
图1是根据本发明实施例的数据访问的实现方法的流程图;
图2是根据本发明实施例的数据访问的实现方法的原理示意图;
图3是根据本发明实施例的数据访问的实现装置的框图。
具体实施方式
针对对应用访问数据的场景,本发明能够在多个应用间共享所有数据报文,从而很好的支持这种多个应用同时处理的场景,避免了数据拷贝带来的弊端。
根据本发明的实施例,提供了一种数据访问的实现方法。
如图1所示,根据本发明实施例的数据访问的实现方法包括:
步骤S101,将需要访问的数据存储在缓冲区中;
步骤S103,由多个数据访问单元对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。
其中,缓冲区可以包括多个数据队列,在将需要访问的数据存储在缓冲区中时,以不重复的方式将所有需要访问的数据存储至多个数据队列。
并且,由多个数据访问单元对缓冲区中的数据进行访问时,对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
该方法可以进一步包括:在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
其中,对于每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据。由于每个数据访问单元的指针位置更新都按照一定的策略进行,因此,根据一个数据访问单元指针的位置能够判断出该数据访问单元是否已经完成了对所有数据的访问。
本发明提出的方案可以应用于多种场景,例如,可以针对万兆网卡多发送队列的特点,为每个CPU核分配了一个网卡硬件描述符队列,并且分配相应的软件描述符队列,配置万兆网卡自动将报文发送到相应队列上去,数据访问单元此时可以是需要对所有数据进行访问的应用;
每个队列采用循环队列的数据结构,优选地,所采用的算法为无锁(lock-free)算法,避免了加锁对性能的影响;
在每个软件描述符队列上,为每个应用程序分配各自自己的指针,各个应用程序通过自己的数据指针从共享缓冲区中取数据,并且更新指针位置;
在驱动内部,在每个队列中,驱动在释放每一个报文缓冲区时也将检查各个应用指针的位置,确保只有当所有在线应用都访问过这个数据之后才可以将整个缓冲区释放掉。
如图2所示,Inte1万兆网卡中的缓冲区划分为四个队列,作为应用A和应用B的共享内存,四个队列中均配置有应用A的指针,从而使得应用A可以同时对四个队列中的数据进行访问;类似地,四个队列中均配置有应用B的指针,从而使得应用B可以同时对四个队列中的数据进行访问。
因此,在万兆网卡的零拷贝场景下,通过使用本发明,能够使得万兆网卡的零拷贝缓冲区支持多个应用的访问。
以上虽然列举了本发明应用的具体场景,但是并不用于限定本发明,所有需要由多个主体对全部数据进行访问的场合均可以采用本发明的方案进行数据的访问,从而简化访问的流程,避免访问降低系统的性能。
另外,在数据处理单元访问数据后,还可以由各个数据访问单元或其他模块对访问的数据进行处理,对于如何处理数据需要根据具体的情况而定,本文对此不进行描述。
根据本发明的实施例,提供了一种数据访问的实现装置。
如图3所示,根据本发明实施例的数据访问的实现装置包括:
缓冲区31,用于存储需要访问的数据;
多个数据访问单元(出于清楚的目的,图3中仅示出了一个数据访问单元进行说明,在实际应用中,根据系统所支持的应用数量,可以配置多个数据访问单元)32,用于对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,且该数据访问单元每次访问之后更新相应的指针所指向的位置。
其中,缓冲区被划分有多个数据队列,所有需要访问的数据以不重复的方式存储在多个数据队列中。
并且,对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元用于在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
此外,该装置可以进一步包括:
删除模块(未示出),连接至缓冲区31,用于在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
该装置还可以进一步包括:
判断模块(32),连接至缓冲区31和删除模块,用于对每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据,并在判断所有数据访问单元均访问了缓冲区中存储的所有数据的情况下,通知清除模块删除缓冲区中保存的数据。
综上所述,借助于本发明的上述技术方案,通过对多个数据访问单元设置指针,能够实现多个数据访问单元对缓冲区的并行访问,避免进行数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。例如,万兆网卡在零拷贝的基础上以多指针技术实现了对多个应用的支持,从而可以使每个应用都能获得所有网卡捕获的数据,并且在访问过程中没有数据的复制,因此完全没有性能损耗。并且,通过多队列的并行访问,能够进一步提高访问的效率,使数据的访问更加合理地执行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据访问的实现方法,其特征在于,包括:
将需要访问的数据存储在缓冲区中;
由多个数据访问单元对所述缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。
2.根据权利要求1所述的实现方法,其特征在于,所述缓冲区包括多个数据队列,在将需要访问的数据存储在缓冲区中时,以不重复的方式将所有需要访问的数据存储至所述多个数据队列。
3.根据权利要求2所述的实现方法,其特征在于,由多个数据访问单元对所述缓冲区中的数据进行访问包括:
对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
4.根据权利要求1所述的实现方法,其特征在于,进一步包括:
在所述缓冲区中的所有需要访问的数据均被所述多个数据访问单元访问之后,删除所述缓冲区中保存的所述数据。
5.根据权利要求4所述的方法,其特征在于,对于每个数据访问单元,根据该数据访问单元所对应指针在所述缓冲区中所指向的位置,判断该数据访问单元是否访问了所述缓冲区中所有的数据。
6.一种数据访问的实现装置,其特征在于,包括:
缓冲区,用于存储需要访问的数据;
多个数据访问单元,用于对所述缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在所述缓冲区中所指向的数据进行访问,且该数据访问单元每次访问之后更新相应的指针所指向的位置。
7.根据权利要求6所述的实现装置,其特征在于,所述缓冲区被划分有多个数据队列,所有需要访问的数据以不重复的方式存储在所述多个数据队列中。
8.根据权利要求7所述的实现方法,其特征在于,
对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元用于在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
9.根据权利要求6所述的实现装置,其特征在于,进一步包括:
删除模块,用于在所述缓冲区中的所有需要访问的数据均被所述多个数据访问单元访问之后,删除所述缓冲区中保存的所述数据。
10.根据权利要求9所述的实现装置,其特征在于,进一步包括:
判断模块,用于对每个数据访问单元,根据该数据访问单元所对应指针在所述缓冲区中所指向的位置,判断该数据访问单元是否访问了所述缓冲区中所有的数据,并在判断所有数据访问单元均访问了所述缓冲区中存储的所有数据的情况下,通知所述清除模块删除所述缓冲区中保存的所述数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104557985A CN102541773A (zh) | 2011-12-31 | 2011-12-31 | 数据访问的实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104557985A CN102541773A (zh) | 2011-12-31 | 2011-12-31 | 数据访问的实现方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102541773A true CN102541773A (zh) | 2012-07-04 |
Family
ID=46348706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104557985A Pending CN102541773A (zh) | 2011-12-31 | 2011-12-31 | 数据访问的实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541773A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445838A (zh) * | 2016-09-09 | 2017-02-22 | 南京南瑞继保电气有限公司 | 一种基于共享指针池的报文零拷贝处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1504892A (zh) * | 2002-12-05 | 2004-06-16 | 华为技术有限公司 | 一种任务间通信的实现方法 |
CN1749979A (zh) * | 2004-08-18 | 2006-03-22 | 威盛电子股份有限公司 | 动画专家群层与伺服层之间的软件通讯 |
CN102006241A (zh) * | 2010-12-17 | 2011-04-06 | 天津曙光计算机产业有限公司 | 一种多个应用共享一个缓冲区的报文接收方法 |
-
2011
- 2011-12-31 CN CN2011104557985A patent/CN102541773A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1504892A (zh) * | 2002-12-05 | 2004-06-16 | 华为技术有限公司 | 一种任务间通信的实现方法 |
CN1749979A (zh) * | 2004-08-18 | 2006-03-22 | 威盛电子股份有限公司 | 动画专家群层与伺服层之间的软件通讯 |
CN102006241A (zh) * | 2010-12-17 | 2011-04-06 | 天津曙光计算机产业有限公司 | 一种多个应用共享一个缓冲区的报文接收方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445838A (zh) * | 2016-09-09 | 2017-02-22 | 南京南瑞继保电气有限公司 | 一种基于共享指针池的报文零拷贝处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103019962B (zh) | 数据缓存处理方法、装置以及系统 | |
CN103532823B (zh) | 物联网消息处理方法、装置及系统 | |
US8775755B2 (en) | Peer-to-peer transcendent memory | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
CN102063406B (zh) | 用于多核处理器的网络共享Cache及其目录控制方法 | |
CN107613529B (zh) | 消息处理方法以及基站 | |
US9529640B2 (en) | Work request processor | |
CN107179878A (zh) | 基于应用优化的数据存储的方法和装置 | |
CN106537858B (zh) | 一种队列管理的方法和装置 | |
US9152564B2 (en) | Early cache eviction in a multi-flow network processor architecture | |
CN103595653A (zh) | 一种缓存分配方法、装置及设备 | |
JP2013037718A (ja) | メモリページ管理 | |
CN106960054A (zh) | 数据文件的存取方法及装置 | |
CN101336419A (zh) | 存储器访问控制装置及存储器访问控制方法 | |
US8380962B2 (en) | Systems and methods for efficient sequential logging on caching-enabled storage devices | |
CN107632781A (zh) | 一种分布式存储多副本快速校验一致性的方法及存储架构 | |
CN102541773A (zh) | 数据访问的实现方法和装置 | |
JPH11143779A (ja) | 仮想記憶装置におけるページング処理システム | |
JP6224684B2 (ja) | ストアマージ装置、情報処理装置、およびストア制御方法、並びにコンピュータ・プログラム | |
US9811403B1 (en) | Method, apparatus and system for performing matching operations in a computing system | |
CN103377085B (zh) | 指令管理方法及装置、指令管理系统、运算核心 | |
CN112835716B (zh) | 一种5g通信虚拟化网元的cpu缓存分配方法和终端 | |
CN103377033B (zh) | 运算核心及其指令管理方法 | |
CN106331036B (zh) | 一种服务器控制方法及装置 | |
CN114371810B (zh) | Hdfs的数据存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120704 |