CN107066281B - 一种基于dss数据***快速加载大型数据群的方法 - Google Patents

一种基于dss数据***快速加载大型数据群的方法 Download PDF

Info

Publication number
CN107066281B
CN107066281B CN201710352181.8A CN201710352181A CN107066281B CN 107066281 B CN107066281 B CN 107066281B CN 201710352181 A CN201710352181 A CN 201710352181A CN 107066281 B CN107066281 B CN 107066281B
Authority
CN
China
Prior art keywords
data
server
memory
space
function
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
Application number
CN201710352181.8A
Other languages
English (en)
Other versions
CN107066281A (zh
Inventor
杨智勤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Pujie Information Technology Co ltd
Original Assignee
Xiamen Pujie Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Pujie Information Technology Co ltd filed Critical Xiamen Pujie Information Technology Co ltd
Priority to CN201710352181.8A priority Critical patent/CN107066281B/zh
Publication of CN107066281A publication Critical patent/CN107066281A/zh
Application granted granted Critical
Publication of CN107066281B publication Critical patent/CN107066281B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种基于DSS数据***快速加载大型数据群的方法,通过开辟大型虚拟内存并且提交大量物理存储器给服务器使用,充分利用了服务器硬件资源,通过虚拟内存的使用,对大型数据群的加载变成可能,内存开辟效率明显提升;访问数据方便快捷;本发明还通过锁定物理内存最大限度防止服务器进程空间在运行期发生内存页交换,极大降低服务器性能损耗;本发明还通过虚拟内存的使用实现一次性加载大型数据群,避免了现有方案上需要再加载的情况,特别对于需要I/O过程的数据加载情况在服务器上是将造成宕机的举动。

Description

一种基于DSS数据***快速加载大型数据群的方法
技术领域
本发明涉及一种基于DSS数据***快速加载大型数据群的方法。
背景技术
Darwin Streaming Server简称DSS。DSS是Apple公司提供的开源实时流媒体播放服务器程序,整个程序使用纯粹C++编写,在设计上遵循高性能、简单、模块化等程序设计原则,务求做到程序高效,可扩充性好,因此DSS服务器***在跨平台的支持上是相当理想的,它可以运行在Windows NT、Windows 2000及以上的windows内核版本,同时也能良好的运行在*NIX的各种版本上,包括Mac OS X,Linux,FreeBSD,Solaris,同时DSS基于标准的流媒体协议RTSP,RTP/RTCP进行开发,因此在运用上具有极强的广泛性和通用性。
目前基于DSS服务器数据***存在以下缺陷:
一、传统IT业务部署上的“烟囱式”架构导致设备硬件的高配低用,考虑到未来运用***业务发展,以及业务突发的需求,为满足应用程序的性能,容量承载需求,用户往往选择在计算、存储和网络等硬件设备的配置时会留有一定比例的余量,但硬件资源上线后,应用***在一定时间内的负载并不会太高,这就使得较高配置的硬件设备利用率不高。
二、现有DSS服务器数据***在对数据进行存储,交换上以堆为主要手段,在这种情况下如果数据量较小,对数据使用不太频繁的情况下影响不大,然而对于企业商用级服务器而言,往往需要加载大批量数据以及频繁对大型数据群进行操作,如果使用原有的堆操作方式那么每次都要去开辟、释放空间,而且开辟的空间非常庞大,并且在运行过程中会产生大量的内存碎片,使得内存使用上空间和时间效率都非常低下,程序运行一段时间后会变质。
三、现有DSS服务器并没有锁定内存页面,服务器往往具有非常大的内存容量并且独占运用,而实际运行过程中真正的物理内存使用却非常低下,在操作大型数据群的时候频繁产生缺页中断,而缺页中断的产生将非常严重影响服务器的响应速度进而堆积数据接入,最终甚至将导致服务器宕机,而这种问题往往很难排查。
四、大型数据群的I/O,现有基于DSS框架的运用上对于大量数据从数据库中进行读写往往使用小批量,需要时加载的方式,这种方式的使用局限性非常大,而且对于频繁的I/O操作在服务器使用上更是无法接受的消耗。
有鉴于此,本发明人提出一种基于DSS数据***快速加载大型数据群的方法。
发明内容
本发明的一个目的在于提供一种基于DSS数据***快速加载大型数据群的方法,以充分利用服务器物理内存资源、实现大型数据群的快速加载和高效实用,提高DSS框架数据***效率。
为了实现上述目的,本发明的技术方案如下:
一种基于DSS数据***快速加载大型数据群的方法,包括以下步骤:
步骤1、设计专用虚拟内存类QTSSVMArray,该虚拟内存类为模板类,类中包含用于初始化的时候事先预留设定量的空间的构造函数,所述空间并不在物理内存中;
步骤2、将虚拟内存模板类QTSSVMArray作为DSS原数据***中QTSSDictionary的静态成员变量,再根据应用程序的需要设计存储空间中要存放的结构体类型;
步骤3、在QTSSDictionary初始化QTSSVMArray这个静态成员变量,预留10MB地址空间,如果在该阶段DSS服务器预留空间失败,则重启DSS数据服务器;
步骤4、在QTSSDictionary中新增函数SetBigValue以及qtssAttrDataTypeBigData标志,函数SetBigValue用于设置存储大型数据结构,qtssAttrDataTypeBigData标志则用于设置***数据类型中新增大型结构数据类型,在所述函数SetBigValue被第一次调用时将实际提交物理存储器,根据需要提交1MB实际物理内存给之前预留的地址空间;所述SetBigValue函数中使用指针来进行数据存储,在函数中对qtssAttrDataTypeBigData标志中的fAllocatedLen长度设置为指针数组的长度,fAttributeData.Ptr为指针数组的地址,fAttributeData.Len为指针sizeof的值;
步骤5、服务器启动过程将通过数据库插件加载数据库中的庞大数据群进入服务器进程内存空间,在数据库插件中设计对于每一行数据调用一次SetBigValue函数,将每行数据存放进虚拟内存中的每一个结构体中,此时SetBigValue函数将根据开辟出来的指针数组中的数组下标对应一块实际物理内存结构,及指针数组中的每根指针分别对应提交给虚拟内存物理空间中的一块内存区进行数据存放。
步骤6、在DSS数据***的GetValuePtr函数中增加对新增的qtssAttrDataTypeBigData属性值获取的条件,其中对于新增虚拟内存物理空间的地址获取方式和使用堆空间的获取方式相同;
步骤7、在服务器使用过程中对提交的物理内存进行锁定。
步骤8、新增QTSS_SetBigValue接口,以提供给服务器外部插件使用;
步骤9、在QTSSVMArray类中虚构函数,以使虚拟内存生命周期的最后进行释放。
所述步骤1还包括:设置MEM_TOP_DOWN标志于虚拟函数VirtualAlloc,使操作***从高位内存地址开始预留空间。
所述步骤2中,可根据实际需要将存储空间存放的结构类型设计成每个结构体大小为1024Bytes的结构体类型,且设计结构体类型为目标***分页文件大小的倍数,这个值在X86,X64上为4KB,在IA64上为8KB。
采用上述方案后,本发明与现有技术相比有益效果在于:
(1)通过开辟大型虚拟内存并且提交大量物理存储器给服务器使用,充分利用了服务器硬件资源,而现有方法在服务器资源使用上大量闲置。
(2)通过虚拟内存的使用,可以充分使用虚拟内存特点:
1)对大型数据群的加载变成可能;
2)内存开辟一次完成,相比于现有***需要每次开辟,效率明显提升;
3)通过虚拟内存空间连续的特点,访问数据方便快捷,现有方案堆开辟方式在物理内存空间中地址不连续,链表式访问低效并且容易造成大量内存碎片。
(3)通过锁定物理内存最大限度防止服务器进程空间在运行期发生内存页交换,极大降低服务器性能损耗,现有方法在大型数据群使用过程中将频繁***作***内存管理器进行页面换入换出调度,极大影响服务器性能;
(4)通过虚拟内存的使用实现一次性加载大型数据群,避免了现有方案上需要再加载的情况,特别对于需要I/O过程的数据加载情况在服务器上是将造成宕机的举动。
以下结合附图和具体实施方式对本发明做进一步说明。
附图说明
图1:本发明DSS的高效数据***设计方法流程图。
具体实施方式
如图1所示,本发明揭示的一种基于DSS数据***快速加载大型数据群的方法,包括以下步骤:
步骤1、设计专用虚拟内存类QTSSVMArray,该虚拟内存类为模板类,类中包含用于初始化的时候事先预留设定量的空间的构造函数,空间并不在物理内存中;设置MEM_TOP_DOWN标志于虚拟函数VirtualAlloc,使操作***从高位内存地址开始预留空间;
步骤2、将虚拟内存模板类QTSSVMArray作为DSS原数据***中QTSSDictionary的静态成员变量,再根据应用程序的需要设计存储空间中要存放的结构体类型;可根据实际需要将存储空间存放的结构类型设计成每个结构体大小为1024Bytes的结构体类型,且设计结构体类型为目标***分页文件大小的倍数,这个值在X86,X64上为4KB,在IA64上为8KB;
步骤3、在QTSSDictionary初始化QTSSVMArray这个静态成员变量,预留10MB地址空间,如果在该阶段DSS服务器预留空间失败,则重启DSS数据服务器;
步骤4、在QTSSDictionary中新增函数SetBigValue以及qtssAttrDataTypeBigData标志,函数SetBigValue用于设置存储大型数据结构,qtssAttrDataTypeBigData标志则用于设置***数据类型中新增大型结构数据类型,在所述函数SetBigValue被第一次调用时将实际提交物理存储器,在本文中根据需要提交1MB实际物理内存给之前预留的地址空间;所述SetBigValue函数中使用指针来进行数据存储,在函数中对qtssAttrDataTypeBigData标志中的fAllocatedLen长度设置为指针数组的长度,fAttributeData.Ptr为指针数组的地址,fAttributeData.Len为指针sizeof的值;
步骤5、服务器启动过程将通过数据库插件加载数据库中的庞大数据群进入服务器进程内存空间,在数据库插件中设计对于每一行数据调用一次SetBigValue函数,将每行数据存放进虚拟内存中的每一个结构体中,此时SetBigValue函数将根据开辟出来的指针数组中的数组下标对应一块实际物理内存结构,及指针数组中的每根指针分别对应提交给虚拟内存物理空间中的一块内存区进行数据存放;此步骤中要根据实际程序读取的数据库中的数据大小以及规模情况进行分配。
步骤6、在DSS数据***的GetValuePtr函数中增加对新增的qtssAttrDataTypeBigData属性值获取的条件,其中对于新增虚拟内存物理空间的地址获取方式和使用堆空间的获取方式地方相同;
步骤7、在服务器使用过程中对提交的物理内存进行锁定,以防止其发生分页交换的情况。
步骤8、新增QTSS_SetBigValue接口,以提供给服务器外部插件使用;
步骤9、在QTSSVMArray类中虚构函数,以使虚拟内存生命周期的最后进行释放。
以上仅为本发明的具体实施例,并非对本发明的保护范围的限定。凡依本案的设计思路所做的等同变化,均落入本案的保护范围。

Claims (3)

1.一种基于DSS数据***快速加载大型数据群的方法,其特征在于,包括以下步骤:
步骤1、设计专用虚拟内存类QTSSVMArray,该虚拟内存类为模板类,类中包含用于初始化的时候事先预留设定量的空间的构造函数,所述空间并不在物理内存中;
步骤2、将虚拟内存模板类QTSSVMArray作为DSS原数据***中QTSSDictionary的静态成员变量,再根据应用程序的需要设计存储空间中要存放的结构体类型;
步骤3、在QTSSDictionary初始化QTSSVMArray这个静态成员变量,预留10MB地址空间,如果在该阶段DSS服务器预留空间失败,则重启DSS数据服务器;
步骤4、在QTSSDictionary中新增函数SetBigValue以及qtssAttrDataTypeBigData标志,函数SetBigValue用于设置存储大型数据结构,qtssAttrDataTypeBigData标志则用于设置***数据类型中新增大型结构数据类型,在所述函数SetBigValue被第一次调用时将实际提交物理存储器,根据需要提交1MB实际物理内存给之前预留的地址空间;所述SetBigValue函数中使用指针来进行数据存储,在函数中对qtssAttrDataTypeBigData标志中的fAllocatedLen长度设置为指针数组的长度,fAttributeData.Ptr为指针数组的地址,fAttributeData.Len为指针sizeof的值;
步骤5、服务器启动过程将通过数据库插件加载数据库中的庞大数据群进入服务器进程内存空间,在数据库插件中设计对于每一行数据调用一次SetBigValue函数,将每行数据存放进虚拟内存中的每一个结构体中,此时SetBigValue函数将根据开辟出来的指针数组中的数组下标对应一块实际物理内存结构,及指针数组中的每根指针分别对应提交给虚拟内存物理空间中的一块内存区进行数据存放;
步骤6、在DSS数据***的GetValuePtr函数中增加对新增的qtssAttrDataTypeBigData属性值获取的条件,其中新增虚拟内存物理空间的地址获取方式和使用堆空间的获取方式相同;
步骤7、在服务器使用过程中对提交的物理内存进行锁定;
步骤8、新增QTSS_SetBigValue接口,以提供给服务器外部插件使用;
步骤9、在QTSSVMArray类中虚构函数,以使虚拟内存生命周期的最后进行释放。
2.如权利要求1所述的一种基于DSS数据***快速加载大型数据群的方法,其特征在于:所述步骤1还包括:设置MEM_TOP_DOWN标志于虚拟函数VirtualAlloc,使操作***从高位内存地址开始预留空间。
3.如权利要求1所述的一种基于DSS数据***快速加载大型数据群的方法,其特征在于:所述步骤2中,可根据实际需要将存储空间存放的结构类型设计成每个结构体大小为1024Bytes的结构体类型,且设计结构体类型为目标***分页文件大小的倍数。
CN201710352181.8A 2017-05-18 2017-05-18 一种基于dss数据***快速加载大型数据群的方法 Active CN107066281B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710352181.8A CN107066281B (zh) 2017-05-18 2017-05-18 一种基于dss数据***快速加载大型数据群的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710352181.8A CN107066281B (zh) 2017-05-18 2017-05-18 一种基于dss数据***快速加载大型数据群的方法

Publications (2)

Publication Number Publication Date
CN107066281A CN107066281A (zh) 2017-08-18
CN107066281B true CN107066281B (zh) 2020-08-11

Family

ID=59611099

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710352181.8A Active CN107066281B (zh) 2017-05-18 2017-05-18 一种基于dss数据***快速加载大型数据群的方法

Country Status (1)

Country Link
CN (1) CN107066281B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107959672B (zh) * 2017-11-09 2020-09-01 厦门普杰信息科技有限公司 一种基于达尔文流媒体服务器的中转组播方法
CN108063918B (zh) * 2017-12-14 2020-02-21 厦门普杰信息科技有限公司 一种gb28181媒体流汇聚转发的方法
CN108958926B (zh) * 2018-05-25 2021-09-07 厦门普杰信息科技有限公司 一种基于达尔文流媒体服务器的虚拟内存池设计方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150257A (zh) * 2013-02-28 2013-06-12 天脉聚源(北京)传媒科技有限公司 一种内存管理方法和装置
CN103853665A (zh) * 2012-12-03 2014-06-11 华为技术有限公司 存储空间分配方法及设备
US9430400B2 (en) * 2013-03-14 2016-08-30 Nvidia Corporation Migration directives in a unified virtual memory system architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853665A (zh) * 2012-12-03 2014-06-11 华为技术有限公司 存储空间分配方法及设备
CN103150257A (zh) * 2013-02-28 2013-06-12 天脉聚源(北京)传媒科技有限公司 一种内存管理方法和装置
US9430400B2 (en) * 2013-03-14 2016-08-30 Nvidia Corporation Migration directives in a unified virtual memory system architecture

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于高清视频的达尔文流媒体服务器研究和性能改良;曹光利;《重庆邮电大学硕士学位论文》;20131230;全文 *

Also Published As

Publication number Publication date
CN107066281A (zh) 2017-08-18

Similar Documents

Publication Publication Date Title
US8135904B2 (en) Method and apparatus for facilitating fast wake-up of a non-volatile memory system
CN106156278B (zh) 一种数据库数据读写方法和装置
CN107066281B (zh) 一种基于dss数据***快速加载大型数据群的方法
CN110750372B (zh) 基于共享内存的日志***及日志管理方法
CN103019955B (zh) 基于pcram主存应用的内存管理方法
CN103150257A (zh) 一种内存管理方法和装置
WO2011048268A1 (en) Saving snapshot of a knowledge base without blocking
CN103810429A (zh) 基于桌面云虚拟化技术的电脑病毒查杀方法
WO2021169496A1 (zh) 数据读取方法、装置、设备及存储介质
CN114416425A (zh) 进程拷贝方法以及装置
CN103927215A (zh) 基于内存盘与SSD硬盘的kvm虚拟机调度的优化方法及***
CN102209016B (zh) 一种数据处理方法、装置和数据处理***
CN108932112B (zh) 一种固态颗粒的数据读写方法、装置、设备及介质
CN105468400A (zh) 一种基于linux用户态调用定时器的方法及***
US20110264903A1 (en) Electronic device and method for loading configuration files using the same
CN103020077A (zh) 一种电力***实时数据库内存管理方法
CN101799832A (zh) 巨量数据一次性快速写入数据库的方法
CN109507991A (zh) 一种双轴伺服控制平台调试***及方法
CN105183854A (zh) 一种数据库卸载数据的调度方法
CN113986775B (zh) 一种risc-v cpu验证中页表项生成方法、***及装置
CN105162684A (zh) 群组通信***以及方法
US8886675B2 (en) Method and system for managing data clusters
CN115221076A (zh) 基于持久性cpu高速缓存的高性能键值存储方法及***
CN109947365B (zh) 一种分布式存储数据校验方法及装置
CN106970826A (zh) 一种基于大页的缺页异常解决方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 4 / F, 281 Lianqian West Road, Siming District, Xiamen City, Fujian Province 361007

Patentee after: Xiamen Municipal Smart City Technology Co.,Ltd.

Address before: Siming District of Xiamen City, Fujian province 361000 lianqianxi No. 281 4 floor

Patentee before: XIAMEN PUJIE INFORMATION TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 361000 13th floor, municipal building, No. 2777, Yunding Middle Road, Huli District, Xiamen City, Fujian Province

Patentee after: Xiamen Municipal Smart City Technology Co.,Ltd.

Address before: 361007 4th floor, 281 Lianqian West Road, Siming District, Xiamen City, Fujian Province

Patentee before: Xiamen Municipal Smart City Technology Co.,Ltd.