一种AI平台的存储统计方法、装置及设备与流程

文档序号:28164873发布日期:2021-12-24 21:56阅读:83来源:国知局
一种AI平台的存储统计方法、装置及设备与流程
一种ai平台的存储统计方法、装置及设备
技术领域
1.本技术涉及计算机技术领域,特别涉及一种ai平台的存储统计方法、装置、设备及计算机可读存储介质。


背景技术:

2.随着ai(artificial intelligence,人工智能)训练平台的广泛推广,企业级应用越来越多,用户的业务量逐步增大,对于平台的存储统计性能要求越来越高。现有ai平台中用户磁盘空间的存储统计已经很难满足用户的需求,如何快速、高效、稳定的统计ai平台中所有用户的磁盘空间,使用最小的资源代价快速的进行存储统计,保证其他业务模块的正常运行,是目前急需解决的问题。
3.目前ai训练平台的存储统计模块,采用定时任务的方法,无论底层用户家目录更新与否,按照一定频率触发定时任务后,针对ai平台所有的用户家目录,重新进行存储空间统计。该方案的使用apache

common

io包中的sizeof(apache file工具类中的一个java方法)方法,该方法逐层遍历各个目录,累加各文件大小。当文件数量达到tb级别以上时,该方法的磁盘io开销大,导致服务卡顿、甚至异常。
4.在apache

common

io包的基础上,重写sizeof方法,对每个文件夹新建一个线程,采用多线程的方式,累加个文件大小,虽然可以提高效率,但是当文件数量达到tb级别以上时,cpu和内存资源占用过多,可能直接拖垮整个服务,导致整个服务模块异常。
5.综上,传统方案中存储统计与ai平台核心业务耦合,抢占服务资源导致服务卡顿,稳定性差,传统java方法sizeof存储方法消耗大量cpu、内存资源,定时触发存储统计任务做很多无用功,如何克服上述缺点,是亟待本领域技术人员解决的技术问题。


技术实现要素:

6.本技术的目的是提供一种ai平台的存储统计方法、装置、设备及计算机可读存储介质,用以解决传统存储统计方案抢占ai平台核心业务的资源,影响服务性能的问题。其具体方案如下:
7.第一方面,本技术提供了一种ai平台的存储统计方法,基于独立于平台业务模块的存储统计微服务实现,包括:
8.利用文件监听器监听所述平台业务模块的用户家目录,在监听到文件变化时,下发存储统计任务;
9.在接收到所述存储统计任务时,调用liunx内核函数进行存储统计,得到存储统计结果。
10.可选的,所述调用liunx内核函数进行存储统计,得到存储统计结果,包括:
11.调用liunx内核函数按照预设buffer大小读取文件流,得到存储统计结果。
12.可选的,所述调用liunx内核函数按照预设buffer大小读取文件流,得到存储统计结果之前,还包括:
13.根据目标条件设置预设buffer大小,其中所述目标条件包括用户家目录的文件数量。
14.可选的,所述调用liunx内核函数进行存储统计,得到存储统计结果,包括:
15.采用c语言调用linux内核函数readdir进行存储统计,得到存储统计结果。
16.可选的,在所述调用liunx内核函数进行存储统计,得到存储统计结果之后,还包括:
17.将所述存储统计结果以消息的方式发送至所述平台业务模块。
18.可选的,在所述将所述存储统计结果以消息的方式发送至所述平台业务模块之后,还包括:
19.根据所述存储统计结果,更新存储监控页面上用户家目录的存储空间大小。
20.可选的,在所述利用文件监听器监听所述平台业务模块的用户家目录之前,还包括:
21.根据先验条件,配置所述存储统计微服务的cpu和内存资源。
22.第二方面,本技术提供了一种ai平台的存储统计装置,基于独立于平台业务模块的存储统计微服务实现,包括:
23.监听模块,用于利用文件监听器监听所述平台业务模块的用户家目录,在监听到文件变化时,下发存储统计任务;
24.存储统计模块,用于在接收到所述存储统计任务时,调用liunx内核函数进行存储统计,得到存储统计结果。
25.第三方面,本技术提供了一种ai平台的存储统计设备,包括:
26.存储器:用于存储计算机程序;
27.处理器:用于执行所述计算机程序,以实现如上所述的ai平台的存储统计方法。
28.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的ai平台的存储统计方法。
29.本技术所提供的一种ai平台的存储统计方法,基于独立于平台业务模块的存储统计微服务实现,包括:利用文件监听器监听平台业务模块的用户家目录,在监听到文件变化时,下发存储统计任务;在接收到存储统计任务时,调用liunx内核函数进行存储统计,得到存储统计结果。可见,该方法将存储统计与ai平台核心业务解耦,解决资源抢占问题,此外,该方法采用文件监听器的方式主动监听用户家目录文件变化,只有监听到文件变化时才触发一次存储统计任务,避免定时触发存储统计任务做无用功,最后,该方法调用linux内核函数进行存储统计,以减少用户态和内核态的切换,减少cpu和内存占用率,提高存储统计的效率。
30.此外,本技术还提供了一种ai平台的存储统计装置、设备及计算机可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
31.为了更清楚的说明本技术实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申
请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1为本技术所提供的ai平台的存储统计方法实施例一的流程图;
33.图2为本技术所提供的ai平台的存储统计方法实施例二的存储统计服务内部实现示意图;
34.图3为本技术所提供的ai平台的存储统计方法实施例二的ai平台存储统计方案流程图;
35.图4为本技术所提供的ai平台的存储统计装置实施例的示意图;
36.图5为本技术所提供的ai平台的存储统计设备实施例的示意图。
具体实施方式
37.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.针对传统方案中存储统计与核心业务耦合,抢占服务资源导致服务卡顿、稳定性差的问题,以及传统java方法sizeof存储方法消耗cpu、内存资源大,而且定时触发存储统计任务做很多无用功等问题,本技术提供了一种ai平台的存储统计方法、装置、设备及计算机可读存储介质,提高整个ai平台的性能、存储统计效率及稳定性。
39.下面对本技术提供的ai平台的存储统计方法实施例一进行介绍,参见图1,实施例一基于独立于平台业务模块的存储统计微服务实现,包括:
40.s11、利用文件监听器监听平台业务模块的用户家目录,在监听到文件变化时,下发存储统计任务;
41.s12、在接收到存储统计任务时,调用liunx内核函数进行存储统计,得到存储统计结果。
42.本实施例将存储统计作为一个新的微服务与ai平台业务模块解耦,启动存储统计微服务后,实施过程主要包括两部分,分别为文件监听和存储统计。
43.具体的,使用文件监听器(listener)的方式,监听各用户家目录的文件变化,不必定时下发任务,只需在文件监听器监听到文件变化时,下发一次存储统计任务即可。存储统计的实现方式为:调用liunx内核函数进行存储统计,得到存储统计结果。具体的,c语言编写代码,调用linux内核函数readdir()进行存储统计。
44.在此基础之上,可配置每次读取文件的buffer(缓冲区),解决了传统的java实现中sizeof方法创建大量文件对象,导致占用大量内存资源或内存溢出的问题。具体的,调用liunx内核函数按照预设buffer大小读取文件流,得到存储统计结果。得到存储统计结果之后,可以进一步发送通知消息(notify)给ai平台的业务模块,更新存储监控页面上各个用户家目录的存储空间大小。
45.本实施例所提供的ai平台的存储统计方法,基于独立于平台业务模块的存储统计微服务实现,具备以下优点:
46.1、存储统计与核心业务微服务解耦,解决资源抢占问题,用户可按先验条件配置
资源占比。
47.2、不再定时被动接受存储统计任务的下发,采用文件监听器的方式主动监听各个用户家目录文件变化,只有监听到文件变化时,才触发一次存储统计任务。
48.3、存储统计方案支持动态配置buffer,用户可灵活根据文件数量等先验知识动态配置buffer值,通过c语言编码调用linux内核函数读取文件流的方式,解决了传统模式下java程序sizeof统计大小创建大量文件对象,消耗cpu和内存资源的问题。
49.下面开始详细介绍本技术提供的ai平台的存储统计方法实施例二。
50.本实施例将存储统计与平台业务模块iresource解耦,用户可以按照先验条件对存储统计服务微服务的cpu和内存资源进行配置。参见图2和图3,实施例二基于独立于平台业务模块的存储统计微服务实现,包括:
51.s21、根据先验条件,配置所述存储统计微服务的cpu和内存资源;
52.s22、根据目标条件设置预设buffer大小,其中所述目标条件包括用户家目录的文件数量;
53.s23、启动存储统计微服务,利用文件监听器监听所述平台业务模块的用户家目录,在监听到文件变化时,下发存储统计任务;
54.s24、在接收到所述存储统计任务时,采用c语言调用linux内核函数readdir按照预设buffer大小读取文件流,得到存储统计结果;
55.s25、将所述存储统计结果以消息的方式发送至所述平台业务模块;
56.s26、根据所述存储统计结果,更新存储监控页面上用户家目录的存储空间大小。
57.可见,本实施例提供的的ai平台的存储统计方法,至少具备以下优点:
58.1、将存储统计与ai平台业务模块解耦,独立成一个微服务,根据先验条件合理分配存储统计微服务和ai平台业务模块的cpu和内存资源,解决了原存储统计模式下cpu和内存占比过高导致服务异常的问题,防止存储统计抢占业务模块资源导致ai平台无法正常使用。
59.2、使用文件监听器对各个用户家目录下的文件进行监听,监听到文件变化时,触发一次存储统计任务,替代传统的定时下发统计任务的模式,避免了文件无变动情况下许多无用的存储统计。具体的,按照用户配置的buffer值调用linux内核函数,读取文件流,统计大小。减少了定时任务下发任务时,大量用户家目录无变化,但是却重复进行存储统计的无用工作。
60.3、对存储统计方法进行改进,传统的sizeof方法,需要创建大量的文件对象,不可避免的需要大量内存进行对象的创建、回收,甚至可能导致内存溢出导致服务异常的情况。本实施例直接使用linux内核函数读取文件流,并可配置每次读取文件的buffer。采用c语言调用linux内核函数readdir(),统计完成后,将存储大小以消息的方式通知给ai平台的业务模块。同时,这种存储统计的方式还支持动态配置buffer的方式(默认为32k),用户可以根据目前家目录下文件个数等先验条件,增加buffer的值,以减少用户态和内核态的切换,减少cpu和内存占用率,提高存储统计的效率。最终,业务模块将存储值更新,并展示在存储监控页面。
61.下面对本技术实施例提供的ai平台的存储统计装置进行介绍,下文描述的ai平台的存储统计装置与上文描述的ai平台的存储统计方法可相互对应参照。
62.如图4所示,本实施例的ai平台的存储统计装置,基于独立于平台业务模块的存储统计微服务实现,包括:
63.监听模块41,用于利用文件监听器监听所述平台业务模块的用户家目录,在监听到文件变化时,下发存储统计任务;
64.存储统计模块42,用于在接收到所述存储统计任务时,调用liunx内核函数进行存储统计,得到存储统计结果。
65.本实施例的ai平台的存储统计装置用于实现前述的ai平台的存储统计方法,因此该装置中的具体实施方式可见前文中的ai平台的存储统计方法的实施例部分,在此不再展开介绍。
66.此外,本技术还提供了一种ai平台的存储统计设备,如图5所示,包括:
67.存储器100:用于存储计算机程序;
68.处理器200:用于执行所述计算机程序,以实现如上文所述的ai平台的存储统计方法。
69.最后,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的ai平台的存储统计方法。
70.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
71.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
72.以上对本技术所提供的方案进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1