CN103984528A - 基于飞腾处理器平台的多线程并发数据压缩方法 - Google Patents
基于飞腾处理器平台的多线程并发数据压缩方法 Download PDFInfo
- Publication number
- CN103984528A CN103984528A CN201410205022.1A CN201410205022A CN103984528A CN 103984528 A CN103984528 A CN 103984528A CN 201410205022 A CN201410205022 A CN 201410205022A CN 103984528 A CN103984528 A CN 103984528A
- Authority
- CN
- China
- Prior art keywords
- compression
- data
- thread
- result
- queue
- 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
Landscapes
- Retry When Errors Occur (AREA)
Abstract
本发明公开了一种基于飞腾处理器平台的多线程并发数据压缩方法,其实施步骤如下:获取压缩参数,初始化压缩队列和写队列,开启写线程;根据压缩参数确定每一份分割压缩数据信息并存入压缩队列;根据确定的压缩线程的数量创建压缩线程,每一个压缩线程根据收到分割压缩数据信息读取对应的分割压缩数据进行压缩元操作,并将所述压缩结果数据放入写队列;写线程不停读取写队列,将压缩结果数据写入结果缓冲区进行拼接,同时释放写队列中已写入结果缓冲区的压缩结果数据,最终在结果缓冲区得到压缩完成的数据结果。本发明能够充分利用飞腾处理器多核多线的特点,具有数据压缩并发性好、数据压缩速度快、数据压缩效率高、兼容性好的优点。
Description
技术领域
本发明涉及计算机系统的数据并发压缩技术领域,具体涉及一种基于飞腾处理器平台的多线程并发数据压缩方法。
背景技术
随着计算机技术和信息科技的发展,数据成为了各行各业尤其重要并且保持飞速增长的资源。数据调查公司IDC报告显示,2011年的全球数据总量已达到1.8ZB(万亿GB),预计到2020年全球电子设备存储的数据将暴增至40ZB。数据量的不断增大给数据的存储和传输速度带来了巨大挑战,尤其大规模数据的压缩速度问题占用了大量cpu时间。为了满足各种用户的存储与传输需求,数据压缩技术显得尤为重要,大量应用于网络传输中。数据压缩技术将一个文件或信息压缩成自身大小的一半甚至更小的空间,以优化数据存储空间及数据传输效率。
传统的数据压缩优化技术大多基于x86体系结构;而飞腾处理器平台的飞腾处理器基于sparc体系结构,与x86体系结构无法兼容。飞腾处理器平台下,大多数的应用程序调用的都是zlib压缩库,针对调用zlib压缩库时数据一般都处于单线调用,所以压缩速度慢、效率低的问题,而且同x86体系结构相比,飞腾处理器的单核处理能力较低,而传统的压缩程序都是针对单线程的,这就导飞腾平台上针对大文件压缩速度缓慢;但另一方面,飞腾处理器的多核并行处理能力突出,将压缩程序并行化,能充分利用多核处理器优势,减少压缩时间。
综上所述,目前飞腾处理器平台的数据压缩方法无法充分发挥飞腾处理器平台及数据压缩的多线程并发压缩能力。因此,研究高并发、高性能的的数据压缩方法是本领域技术人员极为关注的技术问题。现有研究中没有公开文献涉及在飞腾处理器平台上使用多线程并发压缩来提高压缩速度的方法。
发明内容
本发明要解决的技术问题是提供一种能够充分利用飞腾处理器多核多线的特点,数据压缩并发性好、数据压缩速度快、数据压缩效率高、兼容性好的基于飞腾处理器平台的多线程并发数据压缩方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于飞腾处理器平台的多线程并发数据压缩方法,其实施步骤如下:
1)获取上层应用调用多线程并发数据压缩时传入的压缩参数,所述压缩参数包括待压缩数据所在的缓冲区起始地址和待压缩数据的长度;初始化用于存储各个压缩线程的分割压缩数据信息的压缩队列、用于存储各个压缩线程的压缩结果数据的写队列,同时开启一个用于将写队列的压缩结果数据进行拼接的写线程;
2)根据所述压缩参数中待压缩数据所在的缓冲区起始地址和待压缩数据的长度确定压缩线程的数量、每一个分割压缩数据的缓冲区起始地址和压缩数据大小,将每一个分割压缩数据的缓冲区起始地址和压缩数据大小作为分割压缩数据信息存入压缩队列;
3)根据确定的压缩线程的数量创建压缩线程,分别为各个压缩线程分配压缩队列中存储的分割压缩数据信息,每一个压缩线程在收到分割压缩数据信息后,根据分割压缩数据信息从缓冲区读取对应的分割压缩数据,然后对分割压缩数据进行压缩元操作在缓冲区得到一份压缩结果数据,并将所述压缩结果数据放入写队列;同时,通过所述写线程不停读取所述写队列,将所述写队列中的压缩结果数据写入结果缓冲区进行拼接,同时释放写队列中已写入结果缓冲区的压缩结果数据;在写线程完成拼接后,最终得到压缩的数据结果并将执行结果返回给上层应用。
进一步地,所述步骤3)中对分割压缩数据进行压缩元操作具体是指调用zlib压缩库对分割压缩数据进行压缩操作。
本发明基于飞腾处理器平台的多线程并发数据压缩方法具有下述技术效果:
1、本发明在上层应用程序调用压缩库中的函数接口来压缩数据时,根据缓冲区中的数据大小来判断开启的压缩进程数,自适应地创建多个子线程来进行压缩工作,且通过压缩队列存储各个压缩线程的分割压缩数据信息、通过写队列存储各个压缩线程的压缩结果数据,在压缩完成之后,开启一个写线程将各个线程得到的压缩结果合并起来,各个压缩线程之间相互独立,能够被调度在飞腾处理器的各个处理器核心中进行并行高速的压缩处理,改变了压缩在单一进程中运行的事实,提高了数据压缩的速度,从而能够充分利用飞腾处理器多核多线的特点,具有数据压缩并发性好、数据压缩速度快、数据压缩效率高的优点。
2. 本发明步骤3)中对分割压缩数据进行压缩元操作进一步是指调用zlib压缩库对分割压缩数据进行压缩操作,因此采用的是库函数的方法为应用程序提供接口,而且接口与单线压缩调用兼容,用户不用修改现有代码即可使用多线程压缩,具有兼容性好的优点。
附图说明
图1为本发明实施例的方法流程示意图。
图2为本发明实施例中压缩线程的工作流程示意图。
图3为本发明实施例中写线程的工作流程示意图。
具体实施方式
如图1所示,本实施例基于飞腾处理器平台的多线程并发数据压缩方法的实施步骤如下:
1)获取上层应用调用多线程并发数据压缩时传入的压缩参数,压缩参数包括待压缩数据所在的缓冲区起始地址和待压缩数据的长度;初始化用于存储各个压缩线程的分割压缩数据信息的压缩队列、用于存储各个压缩线程的压缩结果数据的写队列,同时开启一个用于将写队列的压缩结果数据进行拼接的写线程;
2)根据压缩参数中待压缩数据所在的缓冲区起始地址和待压缩数据的长度确定压缩线程的数量、每一个分割压缩数据的缓冲区起始地址和压缩数据大小,将每一个分割压缩数据的缓冲区起始地址和压缩数据大小作为分割压缩数据信息存入压缩队列;
3)根据确定的压缩线程的数量创建压缩线程,分别为各个压缩线程分配压缩队列中存储的分割压缩数据信息,每一个压缩线程在收到分割压缩数据信息后,根据分割压缩数据信息从缓冲区读取对应的分割压缩数据,然后对分割压缩数据进行压缩元操作在缓冲区得到一份压缩结果数据,并将压缩结果数据放入写队列;同时,通过写线程不停读取写队列,将写队列中的压缩结果数据写入结果缓冲区进行拼接,同时释放写队列中已写入结果缓冲区的压缩结果数据;在写线程完成拼接后,最终得到压缩的数据结果并将执行结果返回给上层应用。
本实施例中,步骤3)中对分割压缩数据进行压缩元操作具体是指调用zlib压缩库对分割压缩数据进行压缩操作,由于本实施例采用的是库函数的方法为应用程序提供接口,而且接口与单线压缩调用兼容,用户不用修改现有代码即可使用多线程压缩。本实施例中具体是调用zlib压缩库中的deflate压缩算法对分割压缩数据进行压缩操作,此外也可以根据需要调用zlib压缩库中的其它压缩算法,其原理与本实施例相同,在此不再赘述。
本实施例的主进程作为压缩线程和写线程的管理者,主进程负责为各个压缩线程分配压缩队列中存储的分割压缩数据信息,如果当前的压缩线程总数未达到最大值,则开启一个压缩线程,如果当前的压缩线程总数已经达到最大值,则压缩队列中的压缩工作等待,直到有压缩线程完成压缩工作后空闲。每个压缩线程将压缩后的结果放到写队列中去,写线程从写队列中获取写工作;所有压缩工作进行完后,主进程等待写线程将写队列中的所有数据写完,最后得到压缩后的数据结果。
如图2所示,本实施例中压缩线程的工作流程如下:(1A)在压缩队列中寻找压缩工作(job),收到压缩工作后,跳转执行下一步;(2A)对数据进行初始化,即,根据分割压缩数据信息从缓冲区读取对应的分割压缩数据;(3A)调用zlib压缩库中的deflate压缩算法对初始化的数据进行压缩元操作,在缓冲区得到一个压缩后的压缩结果数据;(4A)将压缩后的数据添加到写队列,等待写进程将其写到结果缓冲区。
如图3所示,本实施例中写线程的工作流程如下:(1B)在写队列中寻找写工作,直到收到写工作跳转执行下一步;(2B)将压缩后的压缩结果数据写到结果缓冲区;(3B)释放之前废弃的资源(即已经写入结果缓冲区的压缩结果数据),判断是否已经完成全部的压缩结果数据的写工作,如果还有写工作,则继续回到(1B),否则代表写线程已经完成拼接后,此时结果缓冲区中即为压缩的数据结果。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (2)
1.一种基于飞腾处理器平台的多线程并发数据压缩方法,其特征在于实施步骤如下:
1)获取上层应用调用多线程并发数据压缩时传入的压缩参数,所述压缩参数包括待压缩数据所在的缓冲区起始地址和待压缩数据的长度;初始化用于存储各个压缩线程的分割压缩数据信息的压缩队列、用于存储各个压缩线程的压缩结果数据的写队列,同时开启一个用于将写队列的压缩结果数据进行拼接的写线程;
2)根据所述压缩参数中待压缩数据所在的缓冲区起始地址和待压缩数据的长度确定压缩线程的数量、每一个分割压缩数据的缓冲区起始地址和压缩数据大小,将每一个分割压缩数据的缓冲区起始地址和压缩数据大小作为分割压缩数据信息存入压缩队列;
3)根据确定的压缩线程的数量创建压缩线程,分别为各个压缩线程分配压缩队列中存储的分割压缩数据信息,每一个压缩线程在收到分割压缩数据信息后,根据分割压缩数据信息从缓冲区读取对应的分割压缩数据,然后对分割压缩数据进行压缩元操作在缓冲区得到一份压缩结果数据,并将所述压缩结果数据放入写队列;同时,通过所述写线程不停读取所述写队列,将所述写队列中的压缩结果数据写入结果缓冲区进行拼接,同时释放写队列中已写入结果缓冲区的压缩结果数据;在写线程完成拼接后,最终得到压缩的数据结果并将执行结果返回给上层应用。
2.根据权利要求1所述的基于飞腾处理器平台的多线程并发数据压缩方法,其特征在于:所述步骤3)中对分割压缩数据进行压缩元操作具体是指调用zlib压缩库对分割压缩数据进行压缩操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410205022.1A CN103984528A (zh) | 2014-05-15 | 2014-05-15 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410205022.1A CN103984528A (zh) | 2014-05-15 | 2014-05-15 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103984528A true CN103984528A (zh) | 2014-08-13 |
Family
ID=51276522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410205022.1A Pending CN103984528A (zh) | 2014-05-15 | 2014-05-15 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103984528A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503732A (zh) * | 2014-12-30 | 2015-04-08 | 中国人民解放军装备学院 | 一种面向飞腾处理器的一维8点idct并行方法 |
CN105653203A (zh) * | 2015-12-23 | 2016-06-08 | 北京奇虎科技有限公司 | 数据指令处理方法、装置及系统 |
CN107124615A (zh) * | 2017-05-15 | 2017-09-01 | 郑州云海信息技术有限公司 | 一种WebP有损压缩的方法及装置 |
CN111309269A (zh) * | 2020-02-28 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种压缩数据落盘的方法、系统、设备及可读存储介质 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN114245173A (zh) * | 2021-12-17 | 2022-03-25 | 中国平安财产保险股份有限公司 | 一种图像压缩方法、装置、终端设备和存储介质 |
CN114385569A (zh) * | 2021-12-30 | 2022-04-22 | 上海米哈游璃月科技有限公司 | 文件压缩方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717394A (en) * | 1993-02-10 | 1998-02-10 | Ricoh Company Ltd. | Method and apparatus for encoding and decoding data |
WO2008153194A1 (en) * | 2007-06-15 | 2008-12-18 | Canon Kabushiki Kaisha | Calculation processing apparatus and method |
CN102724500A (zh) * | 2012-06-05 | 2012-10-10 | 沙基昌 | 一种视频数据的压缩/解压缩方法及系统 |
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
CN103559020A (zh) * | 2013-11-07 | 2014-02-05 | 中国科学院软件研究所 | 一种dna读序数据fastq文件并行压缩和解压缩方法 |
CN103581673A (zh) * | 2012-08-07 | 2014-02-12 | 上海算芯微电子有限公司 | 视频数据的压缩/解压缩方法及系统 |
-
2014
- 2014-05-15 CN CN201410205022.1A patent/CN103984528A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717394A (en) * | 1993-02-10 | 1998-02-10 | Ricoh Company Ltd. | Method and apparatus for encoding and decoding data |
WO2008153194A1 (en) * | 2007-06-15 | 2008-12-18 | Canon Kabushiki Kaisha | Calculation processing apparatus and method |
CN102724500A (zh) * | 2012-06-05 | 2012-10-10 | 沙基昌 | 一种视频数据的压缩/解压缩方法及系统 |
CN103581673A (zh) * | 2012-08-07 | 2014-02-12 | 上海算芯微电子有限公司 | 视频数据的压缩/解压缩方法及系统 |
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
CN103559020A (zh) * | 2013-11-07 | 2014-02-05 | 中国科学院软件研究所 | 一种dna读序数据fastq文件并行压缩和解压缩方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503732A (zh) * | 2014-12-30 | 2015-04-08 | 中国人民解放军装备学院 | 一种面向飞腾处理器的一维8点idct并行方法 |
CN105653203A (zh) * | 2015-12-23 | 2016-06-08 | 北京奇虎科技有限公司 | 数据指令处理方法、装置及系统 |
CN105653203B (zh) * | 2015-12-23 | 2019-06-07 | 北京奇虎科技有限公司 | 数据指令处理方法、装置及系统 |
CN107124615A (zh) * | 2017-05-15 | 2017-09-01 | 郑州云海信息技术有限公司 | 一种WebP有损压缩的方法及装置 |
CN112070652A (zh) * | 2019-06-10 | 2020-12-11 | 上海赜睿信息科技有限公司 | 数据压缩、解压方法、可读存储介质和电子设备 |
CN111309269A (zh) * | 2020-02-28 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种压缩数据落盘的方法、系统、设备及可读存储介质 |
CN111309269B (zh) * | 2020-02-28 | 2021-12-17 | 苏州浪潮智能科技有限公司 | 一种压缩数据落盘的方法、系统、设备及可读存储介质 |
US12026371B2 (en) | 2020-02-28 | 2024-07-02 | Inspur Suzhou Intelligent Technology Co., Ltd. | Method, system, and device for writing compressed data to disk, and readable storage medium |
CN114245173A (zh) * | 2021-12-17 | 2022-03-25 | 中国平安财产保险股份有限公司 | 一种图像压缩方法、装置、终端设备和存储介质 |
CN114245173B (zh) * | 2021-12-17 | 2023-04-25 | 中国平安财产保险股份有限公司 | 一种图像压缩方法、装置、终端设备和存储介质 |
CN114385569A (zh) * | 2021-12-30 | 2022-04-22 | 上海米哈游璃月科技有限公司 | 文件压缩方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103984528A (zh) | 基于飞腾处理器平台的多线程并发数据压缩方法 | |
Zhang et al. | Riffle: Optimized shuffle service for large-scale data analytics | |
US9075629B2 (en) | Multi-phase resume from hibernate | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
US9712646B2 (en) | Automated client/server operation partitioning | |
US10007605B2 (en) | Hardware-based array compression | |
US8868576B1 (en) | Storing files in a parallel computing system based on user-specified parser function | |
CN111324427B (zh) | 一种基于dsp的任务调度方法及装置 | |
CN107526645A (zh) | 一种通信优化方法及系统 | |
CN102902763B (zh) | 关联、检索信息处理数据和处理信息任务的方法及装置 | |
US9841989B2 (en) | Parallel data processing system, computer, and parallel data processing method | |
Adams et al. | Respecting the block interface–computational storage using virtual objects | |
CN106407231A (zh) | 一种数据多线程导出方法及系统 | |
CN105049524B (zh) | 一种基于hdfs的大规模数据集装载的方法 | |
CN113010542A (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN103365926A (zh) | 在文件系统中用于保存快照的方法和装置 | |
US9111009B2 (en) | Self-parsing XML documents to improve XML processing | |
US8356300B2 (en) | Multi-threaded processes for opening and saving documents | |
CN109947702A (zh) | 索引构建方法及装置、电子设备 | |
CN109245772A (zh) | 一种压缩i/o数据的方法、系统、装置及可读存储介质 | |
US9619153B2 (en) | Increase memory scalability using table-specific memory cleanup | |
Hongyan et al. | Research and implementation of database high performance sorting algorithm with big data | |
CN103593148A (zh) | 一种cdf侧离线话单数据快速存取的方法及装置 | |
WO2015058628A1 (zh) | 文件的访问方法及装置 | |
WO2019119336A1 (zh) | 一种通用数据gz格式的多线程压缩与解压方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140813 |