1.本技术涉及自动驾驶技术领域,尤其涉及一种车辆自动驾驶系统的数据压缩存储方法及装置。
背景技术:
2.车辆的自动驾驶系统配备了包括摄像头,激光雷达在内的大量传感器。在自动驾驶系统的运行过程中,这些传感器需要实时采集处理海量数据,以帮助自动驾驶系统感知自身所处的实时环境,从而做出正常的决策。同时,这些大量的数据,包括系统运行时所产生的日志,我们需要进行存留,用于后续的数据训练或者系统分析。
3.受车上存储空间的限制,我们需要定时将这些数据从车上平台进行拷贝与转移。由于数据的数量十分庞大,为了提升传输与拷贝的效率,并节约空间,需要将这些数据先进行压缩。而车辆自动驾驶系统的cpu计算资源有限,有效利用cpu及总线带宽进行数据压缩存储至关重要。
4.目前较为常见的压缩方式是利用cpu计算,采用较为常见的gzip,7z,zstd等压缩格式。cpu采用传统的读写方式,如采用pread和pwrite接口进行磁盘的读写,计算压缩完成后,再将压缩完毕后的文件写入磁盘。采用上述方法进行数据的压缩和存储cpu进行压缩的方式会占用大量的cpu资源,且速度较慢。
技术实现要素:
5.本技术实施例提供一种车辆自动驾驶系统的数据压缩存储方法及装置,能提高车辆自动驾驶数据的压缩及存储速度。
6.为解决上述问题,本发明实施例提供一种车辆自动驾驶系统的数据压缩存储方法,包括:
7.在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读请求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;
8.通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;
9.将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
10.进一步的,所述环形队列包括:提交队列和完成队列;
11.所述将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据,具体包括:
12.经linux内核运行空间和用户程序运行空间,以无锁的方式同时对所述环形队列的队列事项进行处理,在对所述环形队列的队列事项进行处理时,将对磁盘的读请求提交至所述提交队列,以使linux内核从所述提交队列中获取所述读请求并根据所述从磁盘中读取待压缩数据,继而在完成所述待压缩数据的读取后,将读取完成状态信息反馈至所述
完成队列。
13.进一步的,在从磁盘中读取待压缩数据后,还包括:将所述待压缩数据写入内存中,以使所述qat芯片通过dma技术从所述内存中读取所述待压缩数据。
14.进一步的,在获得所述已压缩数据后,还包括:将所述已压缩数据通过dma技术写入所述内存中,继而在将所述已压缩数据存储至所述磁盘之前,通过dma技术从所述内存中读取所述已压缩数据。
15.进一步的,所述通过所述qat芯片对所述待压缩数据进行压缩,具体包括:
16.根据待压缩数据的数据量,确定压缩时大内存页的配置参数;根据所确定的大内存页的配置参数对所述待压缩数据进行压缩。
17.进一步的,还包括:获取车辆硬件配置信息,根据所述车辆硬件配置信息判断车辆是否支持io_uring技术,以及是否搭载qat芯片;
18.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且未搭载qat芯片,则通过pread接口从所述磁盘中读取待压缩数据并通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwrite接口将已压缩数据存储至所述磁盘中;
19.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且搭载qat芯片,则通过pread接口从所述磁盘中读取待压缩数据并通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwrite接口将已压缩数据存储至所述磁盘中;
20.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且未搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中;
21.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
22.在上述方法项实施例的基础上,本发明对应提供了装置项实施例;
23.本发明一实施例提供了一种车辆自动驾驶系统的数据压缩存储装置,包括:数据读取模块、数据压缩模块以及数据存储模块;
24.数据读取模块、数据压缩模块以及数据存储模块;
25.所述数据读取模块,用于在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读请求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;
26.所述数据压缩模块,用于通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;
27.所述数据存储模块,用于将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
28.进一步的,还包括内存处理模块;所述内存处理模块,用于在从磁盘中读取待压缩数据后,将将所述待压缩数据写入内存中,以使所述qat芯片通过dma技术从所述内存中读取所述待压缩数据。
29.进一步的,所述内存处理模块,所述内存处理模块,还用于在获得所述已压缩数据后,将所述已压缩数据通过dma技术写入所述内存中,继而在将所述已压缩数据存储至所述磁盘之前,通过dma技术从所述内存中读取所述已压缩数据。
30.进一步的,还包括数据处理模块;所述数据处理模块,获取车辆硬件配置信息,根据所述车辆硬件配置信息判断车辆是否支持io_uring技术,以及是否搭载qat芯片;
31.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且未搭载qat芯片,则通过preadv接口从所述磁盘中读取待压缩数据并通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwritev接口将已压缩数据存储至所述磁盘中;
32.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且搭载qat芯片,则通过preadv接口从所述磁盘中读取待压缩数据并通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwritev接口将已压缩数据存储至所述磁盘中;
33.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且未搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中;
34.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
35.实施本发明实施例,具有如下有益效果:
36.本发明实施例提供了一种车辆自动驾驶系统的数据压缩存储方法及装置,所述方法,基于io_uring技术在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,然后基于所构建的环形队列读取磁盘中的待压缩数据;io_uring技术是一种linux系统的异步磁盘读写技术,能够有效降低读写的系统开销,并提升速度。紧接着在根据车辆硬件配置信息确定车辆搭载有qat芯片时,采用qat芯片进行数据压缩,最后将将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。qat芯片是英特尔的一种芯片,能基于qat技术实现密集计算的并行优化功能,提升计算速度。与现有技术相比,本发明通过io_uring
技术进行数据读写,降低了系统开销此外,通过专用的qat芯片代替cpu进行数据的压缩,有效节省了压缩过程中的cpu开销,并且由于qat芯片的并行计算能力,显著提升了数据压缩的速度。
附图说明
37.图1是本发明一实施例提供的一种车辆自动驾驶系统的数据压缩存储方法的流程示意图;
38.图2是本发明一实施例提供的一种车辆自动驾驶系统的数据压缩存储装置的结构示意图。
具体实施方式
39.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
40.如图1所示,本发明一实施例公开了一种车辆自动驾驶系统的数据压缩存储方法,至少包括如下步骤:
41.步骤s101:在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读请求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据。
42.步骤s102:通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据。
43.步骤s103:将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
44.对于步骤s101、在一个优选的实施例中,所述环形队列包括:提交队列和完成队列;所述将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据,具体包括:
45.经linux内核运行空间和用户程序运行空间,以无锁的方式同时对所述环形队列的队列事项进行处理,在对所述环形队列的队列事项进行处理时,将对磁盘的读请求提交至所述提交队列,以使linux内核从所述提交队列中获取所述读请求并根据所述从磁盘中读取待压缩数据,继而在完成所述待压缩数据的读取后,将读取完成状态信息反馈至所述完成队列。
46.io_uring是linux5.10后开始支持的一种更快速的io方式。它在系统kernel与user space之间通过mmap形成共享的环形队列。环形队列分为提交队列与完成队列,分别负责io请求的提交与完成结果的接受。由于队列成环形,kernel与user space能够分别保有一个指针指向自身工作的位置。这种机制保证了kernel与user space能够无锁的同时对于队列中的事项进行处理,大大提升了用户与kernel进行沟通的效率。用户提交io请求到提交队列,kernel从队列中获取需要进行的io任务,完成后再放入完成队列,用户最后从队列中获取执行的结果。同时,相较于传统的io方式,用户需要system call在kernel与user space之间进行切换,并将io数据在kernel与user space之间进行拷贝。io_uring通过共享
的内存,达到了绕过system call,并且无需拷贝(zero copy)的效果。用户可以通过共享的队列直接与kernel进行通信,从而大大减小了整个过程中的开销。通过io_uring所支持的磁盘读写功能,对从磁盘中读取待压缩数据,并将后续压缩后的已压缩数据写入磁盘中,从而加速对于读取和写入的过程。
47.在一个优选的实施例中,在从磁盘中读取待压缩数据后,还包括:将所述待压缩数据写入内存中,以使所述qat芯片通过dma技术从所述内存中读取所述待压缩数据。
48.对于步骤s102、在一个优选的实施例中,所述通过所述qat芯片对所述待压缩数据进行压缩,具体包括:根据待压缩数据的数据量,确定压缩时大内存页(hugepage)的配置参数;根据所确定的大内存页的配置参数对所述待压缩数据进行压缩。
49.在一个优选的实施例中,在获取所述已压缩数据后,还包括:将所述已压缩数据通过dma技术写入所述内存中,继而在将所述已压缩数据存储至所述磁盘之前,通过dma技术从所述内存中读取所述已压缩数据。
50.示意性的,上述大内存页的配置参数包括:大内存页的大小(即hugepage size),qat芯片通过dma技术从所述内存中读取所述待压缩数据,然后根据待压缩数据的数据量,确定压缩时的hugepage size,使hugepage size大于或等于待压缩数据的数据量的10%,然后根据所确定的大内存页的大小对所述待压缩数据进行压缩,在压缩后通过dma技术才已压缩数据写入内存中。qat芯片通过dma技术直接与内存进行交互,避免了数据的拷贝,提高了速度。同时,通过qat专用芯片进行压缩,利用芯片并行计算的能力,能极大地提升压缩过程的速度,并减少cpu的计算负载。
51.对于步骤s103、具体的,从内存中读取出所存储的已压缩数据然后再次基于io_uring技术,将对磁盘的写请求提交至环形队列,从而使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
52.在一个优选的实施例中,还包括:获取车辆硬件配置信息,根据所述车辆硬件配置信息判断车辆是否支持io_uring技术,以及是否搭载qat芯片;
53.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且未搭载qat芯片,则通过pread接口从所述磁盘中读取待压缩数据并通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwrite接口将已压缩数据存储至所述磁盘中;
54.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且搭载qat芯片,则通过pread接口从所述磁盘中读取待压缩数据并通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwrite接口将已压缩数据存储至所述磁盘中;
55.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且未搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中;
56.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘
的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
57.具体的,读取车辆自动驾驶系统所搭载的硬件的配置信息,获得上述车辆硬件配置信息;优选的车辆硬件配置信息,包括:linux内核版本以及qat芯片的配置信息(用于标识车辆是否搭载有qat芯片);如果读取的linux内核版本大于5.10版本,则此时判定车辆支持io_uring技术,然后通过上述io_uring技术读取磁盘中的待压缩数据,如果通过qat芯片配置信息,判定车辆搭载有qat芯片,则通过所述qat芯片对所述待压缩数据进行压缩,并将压缩后的数据存入内存中。
58.示意性的,若读取的linux内核版本不大于5.10版本,则判定车辆不支持io_uring技术,此时采用传统的方式读取磁盘中的待压缩数据,如采用preadv接口从所述磁盘中读取待压缩数据;如果通过qat芯片配置信息,判定车辆没有搭载qat芯片,则通过cpu采用较为常见的gzip,7z,zstd等压算法进行压缩。从而使得本发明所公开的车辆自动驾驶系统的数据压缩存储方法能够兼容不同配置的车辆。
59.在上述方法项实施例的基础上,本发明对应提供了装置项实施例;
60.如图2所示,本发明一实施例提供了一种车辆自动驾驶系统的数据压缩存储装置,包括:数据读取模块、数据压缩模块以及数据存储模块;
61.所述数据读取模块,用于在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读请求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;
62.所述数据压缩模块,用于通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;
63.所述数据存储模块,用于将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
64.在一个优选的实施例中,还包括内存处理模块;所述内存处理模块,用于在从磁盘中读取待压缩数据后,将将所述待压缩数据写入内存中,以使所述qat芯片通过dma技术从所述内存中读取所述待压缩数据。
65.在一个优选的实施例中,所述内存处理模块,还用于在获得所述已压缩数据后,将所述已压缩数据通过dma技术写入所述内存中,继而在将所述已压缩数据存储至所述磁盘之前,通过dma技术从所述内存中读取所述已压缩数据。
66.在一个优选的实施例中,还包括数据处理模块;所述数据处理模块,获取车辆硬件配置信息,根据所述车辆硬件配置信息判断车辆是否支持io_uring技术,以及是否搭载qat芯片;
67.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且未搭载qat芯片,则通过preadv接口从所述磁盘中读取待压缩数据并通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwritev接口将已压缩数据存储至所述磁盘中;
68.若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且搭载qat芯
片,则通过preadv接口从所述磁盘中读取待压缩数据并通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwritev接口将已压缩数据存储至所述磁盘中;
69.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且未搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中;
70.若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
71.需要说明的是上述装置项实施例是与本发明方法项实施例对应的,其能实现本发明任意一项装置项实施例所提供的车辆自动驾驶系统的数据压缩存储方法。此外以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。所述示意图仅仅是车辆自动驾驶系统的数据压缩存储装置的示例,并不构成对车辆自动驾驶系统的数据压缩存储装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
72.以上所述是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本技术的保护范围。
技术特征:
1.一种车辆自动驾驶系统的数据压缩存储方法,其特征在于,包括:在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读请求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。2.如权利要求1所述的车辆自动驾驶系统的数据压缩存储方法,其特征在于,所述环形队列包括:提交队列和完成队列;所述将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据,具体包括:经linux内核运行空间和用户程序运行空间,以无锁的方式同时对所述环形队列的队列事项进行处理,在对所述环形队列的队列事项进行处理时,将对磁盘的读请求提交至所述提交队列,以使linux内核从所述提交队列中获取所述读请求并根据所述从磁盘中读取待压缩数据,继而在完成所述待压缩数据的读取后,将读取完成状态信息反馈至所述完成队列。3.如权利要求1所述的车辆自动驾驶系统的数据压缩存储方法,其特征在于,在从磁盘中读取待压缩数据后,还包括:将所述待压缩数据写入内存中,以使所述qat芯片通过dma技术从所述内存中读取所述待压缩数据。4.如权利要求3所述的车辆自动驾驶系统的数据压缩存储方法,其特征在于,在获得所述已压缩数据后,还包括:将所述已压缩数据通过dma技术写入所述内存中,继而在将所述已压缩数据存储至所述磁盘之前,通过dma技术从所述内存中读取所述已压缩数据。5.如权利要求3所述的车辆自动驾驶系统的数据压缩存储方法,其特征在于,所述通过所述qat芯片对所述待压缩数据进行压缩,具体包括:根据待压缩数据的数据量,确定压缩时大内存页的配置参数;根据所确定的大内存页的配置参数对所述待压缩数据进行压缩。6.如权利要求1-5任意一项所述的车辆自动驾驶系统的数据压缩存储方法,其特征在于,还包括:获取车辆硬件配置信息,根据所述车辆硬件配置信息判断车辆是否支持io_uring技术,以及是否搭载qat芯片;若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且未搭载qat芯片,则通过pread接口从所述磁盘中读取待压缩数据并通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwrite接口将已压缩数据存储至所述磁盘中;若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且搭载qat芯片,则通过pread接口从所述磁盘中读取待压缩数据并通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwrite接口将已压缩数据存储至所述磁盘中;若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且未搭载qat芯片,则
在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中;若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。7.一种车辆自动驾驶系统的数据压缩存储装置,其特征在于,包括:数据读取模块、数据压缩模块以及数据存储模块;所述数据读取模块,用于在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读请求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;所述数据压缩模块,用于通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;所述数据存储模块,用于将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。8.如权利要求7所述的车辆自动驾驶系统的数据压缩存储装置,其特征在于,还包括内存处理模块;所述内存处理模块,用于在从磁盘中读取待压缩数据后,将将所述待压缩数据写入内存中,以使所述qat芯片通过dma技术从所述内存中读取所述待压缩数据。9.如权利要求7所述的车辆自动驾驶系统的数据压缩存储装置,其特征在于,所述内存处理模块,还用于在获得所述已压缩数据后,将所述已压缩数据通过dma技术写入所述内存中,继而在将所述已压缩数据存储至所述磁盘之前,通过dma技术从所述内存中读取所述已压缩数据。10.如权利要求7-9任意一项所述的车辆自动驾驶系统的数据压缩存储装置,其特征在于,还包括数据处理模块;所述数据处理模块,获取车辆硬件配置信息,根据所述车辆硬件配置信息判断车辆是否支持io_uring技术,以及是否搭载qat芯片;若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且未搭载qat芯片,则通过preadv接口从所述磁盘中读取待压缩数据并通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwritev接口将已压缩数据存储至所述磁盘中;若根据所述车辆硬件配置信息判定所述车辆不支持io_uring技术且搭载qat芯片,则通过preadv接口从所述磁盘中读取待压缩数据并通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将所述已压缩数据通过pwritev接口将已压缩数据存储至所述磁盘中;若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且未搭载qat芯片,则
在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过cpu对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中;若根据所述车辆硬件配置信息判定所述车辆支持io_uring技术且搭载qat芯片,则在linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读求提交至所述环形队列,以使linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过qat芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。
技术总结
本申请公开了一种车辆自动驾驶系统的数据压缩存储方法及装置,所述方法包括:在Linux内核运行空间与用户程序运行空间之间构建一共享内存的环形队列,将对磁盘的读请求提交至所述环形队列,以使Linux内核从所述环形队列中获取所述读请求并根据所述从磁盘中读取待压缩数据;通过QAT芯片对所述待压缩数据进行压缩,获得已压缩数据;将对磁盘的写请求提交至环形队列,以使Linux内核从所述环形队列获取所述写请求并根据所述写请求将所述已压缩数据存储至所述磁盘中。通过实施本发明实施例能提高车辆自动驾驶数据的压缩及存储速度。能提高车辆自动驾驶数据的压缩及存储速度。能提高车辆自动驾驶数据的压缩及存储速度。
技术研发人员:张驰 荣耀 李云华 王可 韩旭
受保护的技术使用者:广州文远知行科技有限公司
技术研发日:2021.11.05
技术公布日:2022/3/7