CN113742171B - 一种容器的gpu进程统计方法和装置 - Google Patents
一种容器的gpu进程统计方法和装置 Download PDFInfo
- Publication number
- CN113742171B CN113742171B CN202110943920.7A CN202110943920A CN113742171B CN 113742171 B CN113742171 B CN 113742171B CN 202110943920 A CN202110943920 A CN 202110943920A CN 113742171 B CN113742171 B CN 113742171B
- Authority
- CN
- China
- Prior art keywords
- function
- gpu
- container
- hijacking
- native
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 381
- 230000008569 process Effects 0.000 title claims abstract description 332
- 230000006870 function Effects 0.000 claims abstract description 282
- 230000004044 response Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3452—Performance evaluation by statistical analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Hardware Design (AREA)
- Probability & Statistics with Applications (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种容器的GPU进程统计方法和装置,方法包括:重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态。本发明能够高效获取容器的GPU进程统计信息,提升容器的易用性。
Description
技术领域
本发明涉及计算机领域,更具体地,特别是指一种容器的GPU进程统计方法和装置。
背景技术
在人工智能大数据时代,随着数据量的不断增大,对算力的需求也越来越高,GPU的超高计算力使其广泛应用于各个行业,但是由于其高昂的价格,实际各个企业在应用中多采用K8s(Kubernetes)等工具来管理平台资源,并通过容器的方式来分配和管理各个用户申请的资源,从而尽可能的隔离各个用户之间的干扰。
然而,在容器内使用nvidia自带的nvidia-smi命令或者nvidia-ml库函数是无法获取和显示容器内GPU任务的统计信息的,用户只能通过在HOST主机端来查看所有GPU运行任务,无法直观的区分哪些任务属于自己的容器。更进一步,当多个用户运行的GPU任务名相同时,用户更加难以区分,且当用户想监控自己GPU任务运行状态时不得不监控整个HOST上的GPU任务,造成大量无效信息的输出,造成***资源的浪费。
虽然有方案指出对nvidia管理库函数进行劫持并利用linux proc目录查找容器内进程,但只对nvidia管理库函数进行劫持,对nvidia驱动自带的可执行命令而言是失效的,导致两者调用不一致;且直接利用proc目录来查找进程信息,造成大量无用的磁盘文件读取和分析。
针对现有技术中难以监控特定容器的GPU进程状态的问题,目前尚无有效的解决方案。
发明内容
有鉴于此,本发明实施例的目的在于提出一种容器的GPU进程统计方法和装置,能够高效获取容器的GPU进程统计信息,提升容器的易用性。
基于上述目的,本发明实施例的第一方面提供了一种容器的GPU进程统计方法,包括执行以下步骤:
重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;
运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;
使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;
使用重定义的动态链接符号函数分别判断多个函数符号是否记载于劫持函数表内,并将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;
将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态。
在一些实施方式中,基于重定义的进程统计函数构建劫持函数表包括:向劫持函数表中写入重定义的进程统计函数的函数符号、劫持函数地址、以及指针类型。
在一些实施方式中,在将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称的同时,还使用未记载于劫持函数表内的多个函数符号各自的原生函数地址来获取GPU进程标识和进程名称。
在一些实施方式中,将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态包括:
使用读取进程表获取每个容器进程标识,利用匹配规则基于每个容器进程标识来搜索并分别对应每个容器进程标识的调度文件;
从每个调度文件中分别读取每个容器进程标识对应的GPU进程标识和进程名称,并响应于从每个调度文件中分别读取的GPU进程标识和进程名称、与根据多个函数符号分别获取的GPU进程标识和进程名称相匹配,而将根据多个函数符号分别获取的GPU进程标识替换为对应的容器进程标识;
输出进程名称、对应的容器进程标识、以及容器的GPU进程状态。
在一些实施方式中,在使用读取进程表获取每个容器进程标识之后,先剔除容器进程标识0或1的进程以及GPU状态显示命令其本身所使用的进程,再利用匹配规则基于其余的容器进程标识来搜索并分别对应每个容器进程标识的调度文件。
本发明实施例的第二方面提供了一种容器的GPU进程统计装置,包括:
处理器;
控制器,存储有处理器可运行的程序代码,处理器在运行程序代码时执行以下步骤:
重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;
运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;
使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;
使用重定义的动态链接符号函数分别判断多个函数符号是否记载于劫持函数表内,并将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;
将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态。
在一些实施方式中,基于重定义的进程统计函数构建劫持函数表包括:向劫持函数表中写入重定义的进程统计函数的函数符号、劫持函数地址、以及指针类型。
在一些实施方式中,在将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称的同时,还使用未记载于劫持函数表内的多个函数符号各自的原生函数地址来获取GPU进程标识和进程名称。
在一些实施方式中,将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态包括:
使用读取进程表获取每个容器进程标识,利用匹配规则基于每个容器进程标识来搜索并分别对应每个容器进程标识的调度文件;
从每个调度文件中分别读取每个容器进程标识对应的GPU进程标识和进程名称,并响应于从每个调度文件中分别读取的GPU进程标识和进程名称、与根据多个函数符号分别获取的GPU进程标识和进程名称相匹配,而将根据多个函数符号分别获取的GPU进程标识替换为对应的容器进程标识;
输出进程名称、对应的容器进程标识、以及容器的GPU进程状态。
在一些实施方式中,在使用读取进程表获取每个容器进程标识之后,先剔除容器进程标识0或1的进程以及GPU状态显示命令其本身所使用的进程,再利用匹配规则基于其余的容器进程标识来搜索并分别对应每个容器进程标识的调度文件。
本发明具有以下有益技术效果:本发明实施例提供的容器的GPU进程统计方法和装置,通过重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;使用重定义的动态链接符号函数分别判断多个函数符号是否记载于劫持函数表内,并将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态的技术方案,能够高效获取容器的GPU进程统计信息,提升容器的易用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的容器的GPU进程统计方法的流程示意图;
图2为本发明提供的容器的GPU进程统计方法的前半部分的详细流程图;
图3为本发明提供的容器的GPU进程统计方法的后半部分的详细流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”、“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种高效获取容器的GPU进程统计信息,提升容器的易用性的容器的GPU进程统计方法的一个实施例。图1示出的是本发明提供的容器的GPU进程统计方法的流程示意图。
所述的容器的GPU进程统计方法,如图1所示,包括执行以下步骤:
步骤S101,重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;
步骤S103,运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;
步骤S105,使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;
步骤S107,使用重定义的动态链接符号函数分别判断多个函数符号是否记载于劫持函数表内,并将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;
步骤S109,将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态。
本发明通过重定义和劫持nvidia驱动自带的管理库函数和nvidia可执行命令,实现容器内获取GPU进程统计信息时调用的重定向,同时使用在主机和容器间进程PID转换的策略完成GPU进程PID的转换。两者结合实现在容器内获取GPU进程的统计信息的一致性和高效性,方便用户在各自的运行环境(容器内)直观查看和监控自己的GPU任务以及整个HOST GPU的运行状态,该方法和策略在一定程度也提升了管理平台的易用性,对于用户十分有用。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
劫持函数表中写入重定义的进程统计函数的函数符号、劫持函数地址、以及指针类型。
在一些实施方式中,在将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称的同时,还使用未记载于劫持函数表内的多个函数符号各自的原生函数地址来获取GPU进程标识和进程名称。
在一些实施方式中,将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态包括:
使用读取进程表获取每个容器进程标识,利用匹配规则基于每个容器进程标识来搜索并分别对应每个容器进程标识的调度文件;
从每个调度文件中分别读取每个容器进程标识对应的GPU进程标识和进程名称,并响应于从每个调度文件中分别读取的GPU进程标识和进程名称、与根据多个函数符号分别获取的GPU进程标识和进程名称相匹配,而将根据多个函数符号分别获取的GPU进程标识替换为对应的容器进程标识;
输出进程名称、对应的容器进程标识、以及容器的GPU进程状态。
在一些实施方式中,在使用读取进程表获取每个容器进程标识之后,先剔除容器进程标识0或1的进程以及GPU状态显示命令其本身所使用的进程,再利用匹配规则基于其余的容器进程标识来搜索并分别对应每个容器进程标识的调度文件。
结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
下面根据具体实施例来进一步阐述本发明的具体实施方式。
首先重定义nvidia-ml动态库中获取GPU进程统计信息的函数。nvidia-ml动态库是nvidia驱动自带的,其实现细节未知,因此调用nvidia-ml动态库函数获取GPU进程统计信息时,先重定向到自定义的函数,并再次调用nvidia-ml动态库的原始函数获取HOST GPU进程的统计信息。
其次重定义dlsym函数,并创建劫持函数映射表。nvidia驱动自带的nvidia-smi可执行命令在获取GPU进程的统计信息时并未采用直接调用nvidia-ml动态库中函数的方式,而是通过dlopen、dlsym、dlclose和nvidia-ml动态库的结合方式,因此只劫持和重定向nvidia-ml动态库中函数对nvidia驱动自带的nvidia-smi命令是无效的,造成两者调用结果的不一致。本发明实施例采取重定义和劫持dlsym函数的方式,使nvidia-smi命令执行时重定向到自定义的函数,同时为了不影响其他操作和最小化调用性能损失,本方法和策略中创建劫持函数表来控制函数的调用,当函数符号位于劫持函数表时,则重定向到自定义的函数,否则返回原始函数的地址,完成调用。本方案和策略中nvidia-smi的具体执行过程如图2所示。
然后将获取的GPU进程PID转换为容器内的进程PID。由于nvidia驱动是基于主机的,因此在容器内无论是直接或者间接利用可执行命令调用nvidia-ml动态库,其得到的GPU进程信息都是基于HOST主机的,对于容器内而言,该GPU进程的PID是无效的,这也正是容器内无法统计和显示GPU进程信息的原因。本方法和策略中,我们提出一种高效的主机和容器间进程PID转换的方法和策略,完成容器内GPU进程PID的正确统计,具体过程如图3所示:在容器内直接调用nvidia-ml动态库或者运行nvidia-smi命令,获取当前容器内运行的GPU进程统计信息,记为table1;定义readpoctab模块,该模块是为了避免直接对linux/proc目录的遍历;通过该模块获取容器内的运行进程,并剔除PID等于0和1的进程,记为table2;遍历table2中的进程,利用匹配规则,搜寻对应PID的/proc/PID/sched文件,获取容器内进程的HOST PID和name,直到遍历结束;判断进程的name,如果name为nvidia-smi则剔除,原因是nvidia-smi是命令本身不做统计;在table1中查找和匹配HOST PID,一致则用table2中的进程PID替换table1中的进程PID,并将结果添加到result集合。
在事先要编译生成动态劫持库并设置preload选项。将重定义或者自定义的函数编译生成动态劫持库,如libnvidia-preload.so;在用户创建开发环境时(容器或者POD,K8s管理资源的最小运行单元),将劫持库libnvidia-preload.so映射到开发环境中,如映射路径为/usr/local/lib/libnvidia-preload.so,并将映射路径添加到开发环境的/etc/ld.so.preload文件中,确保劫持库libnvidia-preload.so的加载位于libnvidia-ml.so和libc.so之前,这样调用时会优先调用劫持函数。最后在容器内创建GPU训练任务,即可利用nvidia驱动自带的管理库或者命令来查看该容器内正在运行的GPU进程统计信息以及整个主机上GPU卡的使用信息。
此外,根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。上述方法步骤以及***单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。
从上述实施例可以看出,本发明实施例提供的容器的GPU进程统计方法,通过重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;使用重定义的动态链接符号函数分别判断多个函数符号是否记载于劫持函数表内,并将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态的技术方案,能够高效获取容器的GPU进程统计信息,提升容器的易用性。
需要特别指出的是,上述容器的GPU进程统计方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于容器的GPU进程统计方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
基于上述目的,本发明实施例的第二个方面,提出了一种高效获取容器的GPU进程统计信息,提升容器的易用性的容器的GPU进程统计装置的一个实施例。装置包括:
处理器;
控制器,存储有处理器可运行的程序代码,处理器在运行程序代码时执行以下步骤:
重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;
运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;
使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;
使用重定义的动态链接符号函数分别判断多个函数符号是否记载于劫持函数表内,并将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;
将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态。
在一些实施方式中,基于重定义的进程统计函数构建劫持函数表包括:向劫持函数表中写入重定义的进程统计函数的函数符号、劫持函数地址、以及指针类型。
在一些实施方式中,在将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称的同时,还使用未记载于劫持函数表内的多个函数符号各自的原生函数地址来获取GPU进程标识和进程名称。
在一些实施方式中,将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态包括:
使用读取进程表获取每个容器进程标识,利用匹配规则基于每个容器进程标识来搜索并分别对应每个容器进程标识的调度文件;
从每个调度文件中分别读取每个容器进程标识对应的GPU进程标识和进程名称,并响应于从每个调度文件中分别读取的GPU进程标识和进程名称、与根据多个函数符号分别获取的GPU进程标识和进程名称相匹配,而将根据多个函数符号分别获取的GPU进程标识替换为对应的容器进程标识;
输出进程名称、对应的容器进程标识、以及容器的GPU进程状态。
在一些实施方式中,在使用读取进程表获取每个容器进程标识之后,先剔除容器进程标识0或1的进程以及GPU状态显示命令其本身所使用的进程,再利用匹配规则基于其余的容器进程标识来搜索并分别对应每个容器进程标识的调度文件。
本发明例公开所述的装置、设备等可为各种电子终端设备,例如手机、个人数字助理(PDA)、平板电脑(PAD)、智能电视等,也可以是大型终端设备,如装置等,因此本发明实施例公开的保护范围不应限定为某种特定类型的装置、设备。本发明实施例公开所述的客户端可以是以电子硬件、计算机软件或两者的组合形式应用于上述任意一种电子终端设备中。
从上述实施例可以看出,本发明实施例提供的容器的GPU进程统计装置,通过重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;运行包括多个原生进程统计函数的函数符号的GPU状态显示命令;使用打开函数调用原生动态库以获得操作句柄,并使用原生动态链接符号函数基于操作句柄和多个函数符号分别获得多个原生函数地址;使用重定义的动态链接符号函数分别判断多个函数符号是否记载于劫持函数表内,并将记载于劫持函数表内的多个函数符号重定向到劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;将GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态的技术方案,能够高效获取容器的GPU进程统计信息,提升容器的易用性。
需要特别指出的是,上述装置的实施例采用了所述容器的GPU进程统计方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述容器的GPU进程统计方法的其他实施例中。当然,由于所述容器的GPU进程统计方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述装置也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
本发明实施例还可以包括相应的计算机设备。计算机设备包括存储器、至少一个处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时执行上述任意一种方法。
其中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述容器的GPU进程统计方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行装置的各种功能应用以及数据处理,即实现上述方法实施例的容器的GPU进程统计方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据装置的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (8)
1.一种容器的GPU进程统计方法,其特征在于,包括执行以下步骤:
重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;
运行包括多个所述原生进程统计函数的函数符号的所述GPU状态显示命令;
使用打开函数调用所述原生动态库以获得操作句柄,并使用所述原生动态链接符号函数基于所述操作句柄和多个所述函数符号分别获得多个原生函数地址;
使用重定义的动态链接符号函数分别判断多个所述函数符号是否记载于所述劫持函数表内,并将记载于所述劫持函数表内的多个所述函数符号重定向到所述劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;
将所述GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态;
其中,将所述GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态包括:使用读取进程表获取每个所述容器进程标识,利用匹配规则基于每个所述容器进程标识来搜索并分别对应每个所述容器进程标识的调度文件;从每个所述调度文件中分别读取每个所述容器进程标识对应的GPU进程标识和进程名称,并响应于从每个所述调度文件中分别读取的所述GPU进程标识和所述进程名称、与根据多个所述函数符号分别获取的所述GPU进程标识和所述进程名称相匹配,而将根据多个所述函数符号分别获取的所述GPU进程标识替换为对应的所述容器进程标识;输出所述进程名称、对应的所述容器进程标识、以及容器的GPU进程状态。
2.根据权利要求1所述的方法,其特征在于,基于重定义的进程统计函数构建劫持函数表包括:向所述劫持函数表中写入所述重定义的进程统计函数的函数符号、劫持函数地址、以及指针类型。
3.根据权利要求1所述的方法,其特征在于,在将记载于所述劫持函数表内的多个所述函数符号重定向到所述劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称的同时,还使用未记载于所述劫持函数表内的多个所述函数符号各自的所述原生函数地址来获取GPU进程标识和进程名称。
4.根据权利要求1所述的方法,其特征在于,在使用读取进程表获取每个所述容器进程标识之后,先剔除所述容器进程标识0或1的进程以及GPU状态显示命令其本身所使用的进程,再利用匹配规则基于其余的所述容器进程标识来搜索并分别对应每个所述容器进程标识的调度文件。
5.一种容器的GPU进程统计装置,其特征在于,包括:
处理器;
控制器,存储有所述处理器可运行的程序代码,所述处理器在运行所述程序代码时执行以下步骤:
重定义原生动态库的原生动态链接符号函数和GPU状态显示命令中的原生进程统计函数,并基于重定义的进程统计函数构建劫持函数表;
运行包括多个所述原生进程统计函数的函数符号的所述GPU状态显示命令;
使用打开函数调用所述原生动态库以获得操作句柄,并使用所述原生动态链接符号函数基于所述操作句柄和多个所述函数符号分别获得多个原生函数地址;
使用重定义的动态链接符号函数分别判断多个所述函数符号是否记载于所述劫持函数表内,并将记载于所述劫持函数表内的多个所述函数符号重定向到所述劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称;
将所述GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态;
其中,将所述GPU进程标识替换为对应的容器进程标识以显示容器的GPU进程状态包括:
使用读取进程表获取每个所述容器进程标识,利用匹配规则基于每个所述容器进程标识来搜索并分别对应每个所述容器进程标识的调度文件;
从每个所述调度文件中分别读取每个所述容器进程标识对应的GPU进程标识和进程名称,并响应于从每个所述调度文件中分别读取的所述GPU进程标识和所述进程名称、与根据多个所述函数符号分别获取的所述GPU进程标识和所述进程名称相匹配,而将根据多个所述函数符号分别获取的所述GPU进程标识替换为对应的所述容器进程标识;
输出所述进程名称、对应的所述容器进程标识、以及容器的GPU进程状态。
6.根据权利要求5所述的装置,其特征在于,基于重定义的进程统计函数构建劫持函数表包括:向所述劫持函数表中写入所述重定义的进程统计函数的函数符号、劫持函数地址、以及指针类型。
7.根据权利要求5所述的装置,其特征在于,在将记载于所述劫持函数表内的多个所述函数符号重定向到所述劫持函数表中对应的劫持函数地址以获取GPU进程标识和进程名称的同时,还使用未记载于所述劫持函数表内的多个所述函数符号各自的所述原生函数地址来获取GPU进程标识和进程名称。
8.根据权利要求5所述的装置,其特征在于,在使用读取进程表获取每个所述容器进程标识之后,先剔除所述容器进程标识0或1的进程以及GPU状态显示命令其本身所使用的进程,再利用匹配规则基于其余的所述容器进程标识来搜索并分别对应每个所述容器进程标识的调度文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943920.7A CN113742171B (zh) | 2021-08-17 | 2021-08-17 | 一种容器的gpu进程统计方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943920.7A CN113742171B (zh) | 2021-08-17 | 2021-08-17 | 一种容器的gpu进程统计方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742171A CN113742171A (zh) | 2021-12-03 |
CN113742171B true CN113742171B (zh) | 2023-07-14 |
Family
ID=78731438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110943920.7A Active CN113742171B (zh) | 2021-08-17 | 2021-08-17 | 一种容器的gpu进程统计方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742171B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776252A (zh) * | 2016-12-08 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 一种评价gpu性能的方法及装置 |
CN110196753A (zh) * | 2019-01-21 | 2019-09-03 | 腾讯科技(北京)有限公司 | 基于容器的图形处理器gpu虚拟化方法、装置和可读介质 |
CN111966460A (zh) * | 2020-08-13 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种优化容器内显示进程信息的方法、***、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200241999A1 (en) * | 2020-03-25 | 2020-07-30 | Intel Corporation | Performance monitoring for short-lived functions |
-
2021
- 2021-08-17 CN CN202110943920.7A patent/CN113742171B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776252A (zh) * | 2016-12-08 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 一种评价gpu性能的方法及装置 |
CN110196753A (zh) * | 2019-01-21 | 2019-09-03 | 腾讯科技(北京)有限公司 | 基于容器的图形处理器gpu虚拟化方法、装置和可读介质 |
CN111966460A (zh) * | 2020-08-13 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种优化容器内显示进程信息的方法、***、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113742171A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109829287A (zh) | Api接口权限访问方法、设备、存储介质及装置 | |
CN108614702B (zh) | 字节码优化方法及装置 | |
CN110928802A (zh) | 基于自动生成用例的测试方法、装置、设备及存储介质 | |
US20200142674A1 (en) | Extracting web api endpoint data from source code | |
CN110928548B (zh) | 一种数据处理方法以及设备 | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN111177113A (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN108512930B (zh) | 一种共享文件的管理方法、装置、服务器和存储介质 | |
CN112099800A (zh) | 代码数据的处理方法、装置和服务器 | |
CN111177121A (zh) | 订单数据反馈方法、装置、计算机设备及存储介质 | |
CN110647564B (zh) | Hive建表方法、电子装置及计算机可读存储介质 | |
CN111885184A (zh) | 高并发场景下热点访问关键字处理方法和装置 | |
CN112882690B (zh) | 一种应用开发方法及装置 | |
CN112579454B (zh) | 一种任务数据的处理方法、装置以及设备 | |
CN113254470A (zh) | 一种数据更改方法、装置、计算机设备及存储介质 | |
CN113742171B (zh) | 一种容器的gpu进程统计方法和装置 | |
CN110647753B (zh) | 内核文件的获取方法、装置、设备及存储介质 | |
CN111858020B (zh) | 用户资源限制方法、装置及计算机存储介质 | |
CN109408532A (zh) | 数据获取方法、装置、计算机设备和存储介质 | |
CN110113384A (zh) | 网络请求处理方法、装置、计算机设备和存储介质 | |
CN111984241B (zh) | 一种在线编码动态生效的方法、装置、设备和介质 | |
CN113111078B (zh) | 资源数据处理方法、装置、计算机设备和存储介质 | |
CN114020278B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN110399160B (zh) | 渠道包打包方法、装置、服务器以及存储介质 | |
CN112346949A (zh) | 基于aop的操作日志记录方法、***及电子设备和介质 |
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 |