CN113282450A - 基于VxWorks系统的进程CPU负荷监控方法和系统 - Google Patents
基于VxWorks系统的进程CPU负荷监控方法和系统 Download PDFInfo
- Publication number
- CN113282450A CN113282450A CN202110518811.0A CN202110518811A CN113282450A CN 113282450 A CN113282450 A CN 113282450A CN 202110518811 A CN202110518811 A CN 202110518811A CN 113282450 A CN113282450 A CN 113282450A
- Authority
- CN
- China
- Prior art keywords
- task
- time
- cpu load
- running time
- callback 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000008569 process Effects 0.000 title claims abstract description 45
- 238000012544 monitoring process Methods 0.000 title claims abstract description 25
- 239000011800 void material Substances 0.000 claims description 7
- 230000001186 cumulative effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007429 general method Methods 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/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Abstract
本发明提供了一种基于VxWorks系统的进程CPU负荷监控方法和系统,包括:步骤1:在进程切换时,记录任务的切入时间和换出时间;步骤2:根据任务的切入时间和换出时间,计算任务的单次运行时间和累计运行时间,其中:单次运行时间=换出时间‑切入时间,累计运行时间=∑单次运行时间;步骤3:计算进程CPU负荷,进程CPU负荷=预设时长内任务的累计运行时间/预设时长。本发明无需硬件时钟,通过纯软件的方法,实现了VxWorks系统下的CPU负荷监控,以及实现每个任务的CPU负荷的监控,提供了在Linux环境下的统计CPU负荷的功能。
Description
技术领域
本发明涉及数据监控技术领域,具体地,涉及一种基于VxWorks系统的进程CPU负荷监控方法和系统。
背景技术
在多进程/线程系统中,监控进程/线程的CPU利用率在系统日常运行和故障分析时是非常有帮助的,有助于定位进程/线程异常,使用Linux系统下的top工具,可以查看某个进程的CPU利用率,这对系统调试提供了极大的帮助。
但在VxWorks系统,虽然有spylib库,可以基于spylib库实现spy功能来查看各进程的CPU负载,但spy需要系统硬件支持第二时钟,很多系统设计时没有考虑导致spy功能无法使用。
专利文献CN112540886A(申请号:CN202011349233.4)公开了一种CPU负荷值检测方法和装置,包括:当用户空间完成初始化过程后,用户空间的时钟中断线程timer_usr每隔预设时间段采集用户空间的空闲线程idle_usr的运行次数瞬时值;根据预设的所述idle_usr的运行次数的基准值、所采集的所述idle_usr的运行次数瞬时值计算CPU负荷值。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于VxWorks系统的进程CPU负荷监控方法和系统。
根据本发明提供的基于VxWorks系统的进程CPU负荷监控方法,包括:
步骤1:在进程切换时,记录任务的切入时间和换出时间;
步骤2:根据任务的切入时间和换出时间,计算任务的单次运行时间和累计运行时间,其中:单次运行时间=换出时间-切入时间,累计运行时间=∑单次运行时间;
步骤3:计算进程CPU负荷,进程CPU负荷=预设时长内任务的累计运行时间/预设时长。
优选的,创建任务切换回调函数switchHook,调用VxWorks系统APItaskSwitchHookAdd注册回调函数,用以获取每个任务的运行时间;
所述回调函数switchHook为:
void switchHook(WIND_TCB*pOldTcb,WIND_TCB*pNewTcb)
其中:pOldTcb为换出的原任务控制块,pNewTcb为切入的目标任务控制块,在回调函数中记录每个任务的切入时间和换出时间,获得每个任务每次运行的时长,每个任务在预设时间段内累计的时间值对比时间段的时长,得出每个任务占用的CPU负荷。
优选的,创建优先级最低的系统空闲任务,在系统没有工作时运行空闲任务,使得系统CPU负荷为100%。
优选的,创建周期为1秒的定时器并连接回调函数,根据回调函数中获得的每个任务的运行时间计算任务在1秒钟内的CPU负荷。
优选的,创建定时器在每个定时周期内根据任务的累积运行时间计算每个任务的CPU负荷。
根据本发明提供的基于VxWorks系统的进程CPU负荷监控系统,包括:
模块M1:在进程切换时,记录任务的切入时间和换出时间;
模块M2:根据任务的切入时间和换出时间,计算任务的单次运行时间和累计运行时间,其中:单次运行时间=换出时间-切入时间,累计运行时间=∑单次运行时间;
模块M3:计算进程CPU负荷,进程CPU负荷=预设时长内任务的累计运行时间/预设时长。
优选的,创建任务切换回调函数switchHook,调用VxWorks系统APItaskSwitchHookAdd注册回调函数,用以获取每个任务的运行时间;
所述回调函数switchHook为:
void switchHook(WIND_TCB*pOldTcb,WIND_TCB*pNewTcb)
其中:pOldTcb为换出的原任务控制块,pNewTcb为切入的目标任务控制块,在回调函数中记录每个任务的切入时间和换出时间,获得每个任务每次运行的时长,每个任务在预设时间段内累计的时间值对比时间段的时长,得出每个任务占用的CPU负荷。
优选的,创建优先级最低的系统空闲任务,在系统没有工作时运行空闲任务,使得系统CPU负荷为100%。
优选的,创建周期为1秒的定时器并连接回调函数,根据回调函数中获得的每个任务的运行时间计算任务在1秒钟内的CPU负荷。
优选的,创建定时器在每个定时周期内根据任务的累积运行时间计算每个任务的CPU负荷。
与现有技术相比,本发明具有如下的有益效果:
(1)和VxWorks系统提供的spylib方式进行CPU负荷计算相比,本发明无需硬件时钟,而spylib方式需要系统有第二时钟并挂载时钟中断;
(2)本方法通过纯软件的方法,可以实现VxWorks系统下的CPU负荷监控,以及实现每个任务的CPU负荷的监控,提供了在Linux环境下的统计CPU负荷的功能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为计算CPU负荷的函数结构框图;
图2为计算CPU占用率的算法运行框图;
图3为CPU负荷计算结果示例图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1:
根据本发明提供的基于VxWorks系统的进程CPU负荷监控方法,包括:步骤1:在进程切换时,记录任务的切入时间和换出时间;步骤2:根据任务的切入时间和换出时间,计算任务的单次运行时间和累计运行时间,其中:单次运行时间=换出时间-切入时间,累计运行时间=∑单次运行时间;步骤3:计算进程CPU负荷,进程CPU负荷=预设时长内任务的累计运行时间/预设时长。
创建任务切换回调函数switchHook,调用VxWorks系统API taskSwitchHookAdd注册回调函数,用以获取每个任务的运行时间;所述回调函数switchHook为:voidswitchHook(WIND_TCB*pOldTcb,WIND_TCB*pNewTcb),其中:pOldTcb为换出的原任务控制块,pNewTcb为切入的目标任务控制块,在回调函数中记录每个任务的切入时间和换出时间,获得每个任务每次运行的时长,每个任务在预设时间段内累计的时间值对比时间段的时长,得出每个任务占用的CPU负荷。创建优先级最低的系统空闲任务,在系统没有工作时运行空闲任务,使得系统CPU负荷为100%。创建周期为1秒的定时器并连接回调函数,根据回调函数中获得的每个任务的运行时间计算任务在1秒钟内的CPU负荷。创建定时器在每个定时周期内根据任务的累积运行时间计算每个任务的CPU负荷。
根据本发明提供的基于VxWorks系统的进程CPU负荷监控系统,包括:模块M1:在进程切换时,记录任务的切入时间和换出时间;模块M2:根据任务的切入时间和换出时间,计算任务的单次运行时间和累计运行时间,其中:单次运行时间=换出时间-切入时间,累计运行时间=∑单次运行时间;模块M3:计算进程CPU负荷,进程CPU负荷=预设时长内任务的累计运行时间/预设时长。
创建任务切换回调函数switchHook,调用VxWorks系统API taskSwitchHookAdd注册回调函数,用以获取每个任务的运行时间;所述回调函数switchHook为:voidswitchHook(WIND_TCB*pOldTcb,WIND_TCB*pNewTcb),其中:pOldTcb为换出的原任务控制块,pNewTcb为切入的目标任务控制块,在回调函数中记录每个任务的切入时间和换出时间,获得每个任务每次运行的时长,每个任务在预设时间段内累计的时间值对比时间段的时长,得出每个任务占用的CPU负荷。创建优先级最低的系统空闲任务,在系统没有工作时运行空闲任务,使得系统CPU负荷为100%。创建周期为1秒的定时器并连接回调函数,根据回调函数中获得的每个任务的运行时间计算任务在1秒钟内的CPU负荷。创建定时器在每个定时周期内根据任务的累积运行时间计算每个任务的CPU负荷。
实施例2:
实施例2为实施例1的优选例。
VxWorks操作系统的task优先级在0-255之间,0为最高,255为最低,为了获得总的系统负荷,一般做法是创建一个空闲task,这个task的优先级比所有的工作task要低,即优先级设为255,空闲task只是用来在系统空闲时消耗CPU,这样根据空闲task在一定时间内占用的时间比例可以计算出系统其他工作task的CPU负荷大小。
VxWorks操作系统提供了taskSwitchHookAdd函数注册了一个回调函数,此回调函数在每次进程切换时被调用。
STATUS taskSwitchHookAdd(FUNPTR switchHook)
此回调函数原型定义为:
void switchHook(WIND_TCB*pOldTcb,WIND_TCB*pNewTcb)
pOldTcb为换出的原任务控制块,pNewTcb为切入的目标任务控制块,在此回调函数中,记录每个task的切入时间以及换出时间,即可获得每个task每次运行的时长,每个task在一定时间段内累计的时间值对比时间段的时长即可得出每个task占用的CPU负荷,函数结构框图如图1所示。
根据上面计算出的任务累计时间,系统创建一个定时器在每个定时周期内根据任务的每个周期内的累积运行时间计算每个任务的CPU占用率,整个算法的运行框图如图2所示。
根据此方案的VxWorks系统下的CPU负荷计算结果示例如图3所示。
上传大文件,使系统处于重负荷,再查看CPU负荷。可以看到相应的FTP任务的CPU负荷,网络传输任务的CPU负荷有了极大的变化,反应了系统负荷的变化。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于VxWorks系统的进程CPU负荷监控方法,其特征在于,包括:
步骤1:在进程切换时,记录任务的切入时间和换出时间;
步骤2:根据任务的切入时间和换出时间,计算任务的单次运行时间和累计运行时间,其中:单次运行时间=换出时间-切入时间,累计运行时间=∑单次运行时间;
步骤3:计算进程CPU负荷,进程CPU负荷=预设时长内任务的累计运行时间/预设时长。
2.根据权利要求1所述的基于VxWorks系统的进程CPU负荷监控方法,其特征在于,创建任务切换回调函数switchHook,调用VxWorks系统API taskSwitchHookAdd注册回调函数,用以获取每个任务的运行时间;
所述回调函数switchHook为:
void switchHook(WIND_TCB*pOldTcb,WIND_TCB*pNewTcb)
其中:pOldTcb为换出的原任务控制块,pNewTcb为切入的目标任务控制块,在回调函数中记录每个任务的切入时间和换出时间,获得每个任务每次运行的时长,每个任务在预设时间段内累计的时间值对比时间段的时长,得出每个任务占用的CPU负荷。
3.根据权利要求1所述的基于VxWorks系统的进程CPU负荷监控方法,其特征在于,创建优先级最低的系统空闲任务,在系统没有工作时运行空闲任务,使得系统CPU负荷为100%。
4.根据权利要求1所述的基于VxWorks系统的进程CPU负荷监控方法,其特征在于,创建周期为1秒的定时器并连接回调函数,根据回调函数中获得的每个任务的运行时间计算任务在1秒钟内的CPU负荷。
5.根据权利要求1所述的基于VxWorks系统的进程CPU负荷监控方法,其特征在于,创建定时器在每个定时周期内根据任务的累积运行时间计算每个任务的CPU负荷。
6.一种基于VxWorks系统的进程CPU负荷监控系统,其特征在于,包括:
模块M1:在进程切换时,记录任务的切入时间和换出时间;
模块M2:根据任务的切入时间和换出时间,计算任务的单次运行时间和累计运行时间,其中:单次运行时间=换出时间-切入时间,累计运行时间=∑单次运行时间;
模块M3:计算进程CPU负荷,进程CPU负荷=预设时长内任务的累计运行时间/预设时长。
7.根据权利要求6所述的基于VxWorks系统的进程CPU负荷监控系统,其特征在于,创建任务切换回调函数switchHook,调用VxWorks系统API taskSwitchHookAdd注册回调函数,用以获取每个任务的运行时间;
所述回调函数switchHook为:
void switchHook(WIND_TCB*pOldTcb,WIND_TCB*pNewTcb)
其中:pOldTcb为换出的原任务控制块,pNewTcb为切入的目标任务控制块,在回调函数中记录每个任务的切入时间和换出时间,获得每个任务每次运行的时长,每个任务在预设时间段内累计的时间值对比时间段的时长,得出每个任务占用的CPU负荷。
8.根据权利要求6所述的基于VxWorks系统的进程CPU负荷监控系统,其特征在于,创建优先级最低的系统空闲任务,在系统没有工作时运行空闲任务,使得系统CPU负荷为100%。
9.根据权利要求6所述的基于VxWorks系统的进程CPU负荷监控系统,其特征在于,创建周期为1秒的定时器并连接回调函数,根据回调函数中获得的每个任务的运行时间计算任务在1秒钟内的CPU负荷。
10.根据权利要求6所述的基于VxWorks系统的进程CPU负荷监控系统,其特征在于,创建定时器在每个定时周期内根据任务的累积运行时间计算每个任务的CPU负荷。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110518811.0A CN113282450A (zh) | 2021-05-12 | 2021-05-12 | 基于VxWorks系统的进程CPU负荷监控方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110518811.0A CN113282450A (zh) | 2021-05-12 | 2021-05-12 | 基于VxWorks系统的进程CPU负荷监控方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113282450A true CN113282450A (zh) | 2021-08-20 |
Family
ID=77278976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110518811.0A Pending CN113282450A (zh) | 2021-05-12 | 2021-05-12 | 基于VxWorks系统的进程CPU负荷监控方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282450A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145125A (zh) * | 2006-09-11 | 2008-03-19 | 中兴通讯股份有限公司 | 一种测量多任务操作系统任务cpu占用率的方法 |
WO2016101740A1 (zh) * | 2014-12-23 | 2016-06-30 | 邦彦技术股份有限公司 | 一种用于vxWorks的CPU占用率检测方法和系统 |
CN106897203A (zh) * | 2017-03-29 | 2017-06-27 | 北京经纬恒润科技有限公司 | 一种cpu负载率计算方法及装置 |
-
2021
- 2021-05-12 CN CN202110518811.0A patent/CN113282450A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145125A (zh) * | 2006-09-11 | 2008-03-19 | 中兴通讯股份有限公司 | 一种测量多任务操作系统任务cpu占用率的方法 |
WO2016101740A1 (zh) * | 2014-12-23 | 2016-06-30 | 邦彦技术股份有限公司 | 一种用于vxWorks的CPU占用率检测方法和系统 |
CN106897203A (zh) * | 2017-03-29 | 2017-06-27 | 北京经纬恒润科技有限公司 | 一种cpu负载率计算方法及装置 |
Non-Patent Citations (1)
Title |
---|
闫茂德等: "嵌入式实时操作系统内核的设计与实现", 《长安大学学报(自然科学版)》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7340574B2 (en) | Method and apparatus for synchronizing an industrial controller with a redundant controller | |
Burns et al. | A probabilistic framework for schedulability analysis | |
US9703669B2 (en) | Apparatus and method for distributed instruction trace in a processor system | |
CN110635962B (zh) | 用于分布式系统的异常分析方法及装置 | |
US9588811B2 (en) | Method and apparatus for analysis of thread latency | |
EP3523720B1 (en) | Task scheduling | |
US7185322B2 (en) | Method and apparatus for parallel action processing | |
WO2012004954A1 (ja) | トレースシステム | |
JP2007323631A (ja) | Cpu暴走判定回路 | |
Bobrek et al. | Modeling shared resource contention using a hybrid simulation/analytical approach | |
CN114281508A (zh) | 一种数据批流融合离线计算方法 | |
CN113282450A (zh) | 基于VxWorks系统的进程CPU负荷监控方法和系统 | |
CN1755614A (zh) | 定时器的实现方法 | |
CN111552172A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN114779913B (zh) | 一种自适应调整工作频率的复位方法和芯片 | |
Ronsse et al. | Rolt/sup MP/-replay of Lamport timestamps for message passing systems | |
CN112415930A (zh) | 接口列表、实例程序智能生成方法及自动化集成智能系统 | |
CN113485748B (zh) | 卫星条件指令系统及其执行方法 | |
CN116700135B (zh) | 可编程逻辑控制器任务调度方式的测试方法及装置 | |
JP5390464B2 (ja) | シミュレーション装置、シミュレーション装置の制御方法およびプログラム | |
JPH1078892A (ja) | ソフトウエア制御システムの処理能力評価方式 | |
JP2006178663A (ja) | 情報処理装置、情報処理方法、検証装置、検証方法 | |
Lagraa et al. | Automatic congestion detection in mpsoc programs using data mining on simulation traces | |
JP2007122158A (ja) | シミュレーション方法および装置 | |
CN1567217A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210820 |
|
RJ01 | Rejection of invention patent application after publication |