CN110928601A - 一种隔离cpu的方法、装置以及存储介质 - Google Patents
一种隔离cpu的方法、装置以及存储介质 Download PDFInfo
- Publication number
- CN110928601A CN110928601A CN201911228949.6A CN201911228949A CN110928601A CN 110928601 A CN110928601 A CN 110928601A CN 201911228949 A CN201911228949 A CN 201911228949A CN 110928601 A CN110928601 A CN 110928601A
- Authority
- CN
- China
- Prior art keywords
- cpu
- type
- application program
- class
- set directory
- 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.)
- Granted
Links
Images
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种隔离CPU的方法、装置以及存储介质,其中方法包括:确定至少一个第一类CPU和至少一个第二类CPU的编号;通过运行虚拟文件系统并创建第一类CPU集目录和第二类CPU集目录;在第一类CPU集目录下的第一指定文件中写入至少一个第一类CPU的编号、在第二类CPU集目录下的第一指定文件中写入至少一个第二类CPU的编号;将至少一个第一类应用程序的进程号和至少一个第二类应用程序的进程号分别写入第一类CPU集目录下的第二指定文件和第二类CPU集目录下的第二指定文件,使得至少一个第一类应用程序运行在至少一个第一类CPU、至少一个第二类应用程序运行在至少一个第二类CPU。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种隔离中央处理器(CentralProcessing Unit,CPU)的方法、装置以及存储介质。
背景技术
在有多个CPU的嵌入式系统上,嵌入式系统一般在启动时会运行通用引导加载程序(Universal Boot loader,U-Boot),该程序会传递隔离CPU(isolcpus)参数把指定的CPU隔离出来,然后再在每个特定的应用程序中调用系统调用接口去绑定已经隔离的CPU,也即去设置CPU的亲和性,这样就可以使时间敏感的应用程序单独占用某个处理器,提高该应用程序CPU缓存的命中率,从而提高该应用程序的执行速度。
但是上述操作是不可逆的,如果想重新修改隔离的CPU,就必须在修改isolcpus参数后重启嵌入式系统,然后嵌入式系统再在每个特定的应用程序中调用系统调用接口去绑定修改后的隔离的CPU,操作步骤冗余,效率低。并且,每次修改隔离的CPU都需要重启系统生效,这样会对使用者造成不便。另外,每个应用程序也需要重复执行相同的指令,会降低应用程序的执行速度。
可见,现有技术在隔离CPU时存在隔离效率低、用户体验度差的问题。
发明内容
本发明实施例提供一种隔离CPU的方法、装置以及存储介质,用以解决现有技术在隔离CPU时存在隔离效率低、用户体验度差的问题。
第一方面,本发明实施例提供一种隔离CPU的方法,应用于具有至少两个CPU的嵌入式系统中,包括:
确定至少一个第一类CPU的编号和至少一个第二类CPU的编号;其中,所述至少两个CPU包括所述至少一个第一类CPU和所述至少一个第二类CPU;
运行虚拟文件系统,通过所述虚拟文件系统创建第一类CPU集目录和第二类CPU集目录,所述第一类CPU集目录下的CPU用于运行第一类应用程序,所述第二类CPU集目录下的CPU用于运行第二类应用程序;
在所述第一类CPU集目录下的第一指定文件中写入所述至少一个第一类CPU的编号、在所述第二类CPU集目录下的第一指定文件中写入所述至少一个第二类CPU的编号;
将至少一个第一类应用程序的进程号写入所述第一类CPU集目录下的第二指定文件,使得所述至少一个第一类应用程序运行在所述至少一个第一类CPU上;
将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,使所述至少一个第二类应用程序运行在所述至少一个第二类CPU上。
本发明实施例中,通过确定第一类CPU的编号和第二类CPU的编号,再将第一类CPU的编号写入通过虚拟文件系统创建的第一类CPU集目录下的第一指定文件、将第二类CPU的编号写入通过虚拟文件系统创建的第二类CPU集目录下的第一指定文件,最后将第一类的应用程序的进程号写入对应的CPU集目录下的第二指定文件、将第二类的应用程序的进程号写入对应的CPU集目录下的第二指定文件,使得第一类应用程序运行在第一类CPU上、第二类应用程序的进程运行在第二类的CPU上,完成对CPU的隔离,相较于现有技术仅能在嵌入式系统启动时进行CPU的隔离,本方案更能够适应用户的需求,可以在用户有需求时随时进行CPU的隔离,提高了用户的体验。
可选的,确定至少一个第一类CPU的编号和至少一个第二类CPU的编号,包括:从预配置文件中获取所述至少一个第一类CPU的编号、所述至少一个第二类CPU的编号。
这样,用户就可以根据自身需要配置预配置文件,实现对CPU的自定义隔离,提高了用户体验。
可选的,在将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件之后,还包括:确定所述至少一个第二类应用程序中每个第二类应用程序对应的第二类CPU;调用系统调用接口,将所述至少一个第二类应用程序中的每个第二类应用程序绑定到对应的第二类CPU。
通过本实施例方式,通过调用系统调用接口将第二类应用程序绑定到对应的CPU上,与现有技术相比,不需要在每个需要绑定CPU的应用程序中去执行相同的指令,减少了系统的操作。
可选的,确定所述至少一个第二类应用程序中每个第二类应用程序对应的CPU,包括:确定所述至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量;根据确定出的至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量,将所述至少一个第二类CPU分配给所述至少一个第二类应用程序中每个第二类应用程序。
本实施例方式,基于至少一个第二类应用程序所需要的CPU的数量分配给至少一个第二类应用程序对应数量的CPU,保证了第二类应用程序运行性能,提高了用户的体验度。
可选的,所述方法还包括:在检测到任一第二类应用程序重启后未运行在所述任一第二类应用程序对应的第二类CPU上时,将所述任一第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,调用系统调用接口,将所述任一第二类应用程序绑定至所述任一第二类应用程序对应的第二类CPU。
通过本实施例方式,在检测到第二类应用程序重启后未运行在绑定的CPU上时,通过将调用系统调用接口,将重启后未运行在对应CPU的任一第二类应用程序绑定至任一第二类应用程序对应的第二类CPU,保证了重启后的第二类应用程序仍会运行在对应的CPU,提高了系统的可靠性。
可选的,所述方法还包括:从修改后的预配置文件中获取至少一个修改后的第一类CPU的编号、至少一个修改后的第二类CPU的编号;删除所述第一类CPU集目录下的第一类CPU的编号和第二类CPU集目录下的第二类CPU的编号,在所述第一类CPU集目录下的第一指定文件中写入所述至少一个修改后的第一类CPU的编号,在所述第二类CPU集目录下的第一指定文件中写入所述至少一个修改后的第二类CPU的编号。
通过本实施例方式,在需要修改CPU的隔离方式时,用户可以通过修改预配置文件中参数,使得嵌入式系统自动完成CPU隔离方式的修改,即嵌入式系统解析修改的预配置文件后得到需要隔离的CPU的编号,将修改后的需要隔离的CPU的编号写入由虚拟文件系统创建的第二类CPU集目录下的第一指定文件,就可以完成隔离CPU编号的修改,与现有技术相比,嵌入式系统可以不需要重启,简化了系统的操作,同时也提高了效率。
第二方面,本发明实施例还提供一种隔离CPU的装置,包括:
确定模块,用于确定至少一个第一类CPU的编号和至少一个第二类CPU的编号;其中,所述至少两个CPU包括所述至少一个第一类CPU和所述至少一个第二类CPU;
运行模块,用于运行CPUSET虚拟文件系统,通过所述CPUSET虚拟文件系统创建第一类CPU集目录和第二类CPU集目录,所述第一类CPU集目录下的CPU用于运行第一类应用程序,所述第二类CPU集目录下的CPU用于运行第二类应用程序;在所述第一类CPU集目录下的第一指定文件中写入所述至少一个第一类CPU的编号、在所述第二类CPU集目录下的第一指定文件中写入所述至少一个第二类CPU的编号;将至少一个第一类应用程序的进程号写入所述第一类CPU集目录下的第二指定文件,使得所述至少一个第一类应用程序运行在所述至少一个第一类CPU上;将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,使所述至少一个第二类应用程序运行在所述至少一个第二类CPU上。
可选的,所述确定模块在确定至少一个第一类CPU的编号和至少一个第二类CPU的编号时,具体用于:从预配置文件中获取所述至少一个第一类CPU的编号、所述至少一个第二类CPU的编号。
可选的,所述运行模块还用于:在将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件之后,确定所述至少一个第二类应用程序中每个第二类应用程序对应的第二类CPU;调用系统调用接口,将所述至少一个第二类应用程序的中每个第二类应用程序绑定到对应的第二类CPU。
可选的,所述运行模块在确定所述至少一个第二类应用程序中每个第二类应用程序对应的CPU时,具体用于:确定所述至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量;根据确定出的至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量,将所述至少一个第二类CPU分配给所述至少一个第二类应用程序中每个第二类应用程序。
可选的,所述运行模块还用于:在检测到任一第二类应用程序重启后未运行在所述任一第二类应用程序对应的第二类CPU上时,将所述任一第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,调用系统调用接口,将所述任一第二类应用程序绑定至所述任一第二类应用程序对应的第二类CPU。
可选的,所述确定模块还用于:从修改后的预配置文件中获取至少一个修改后的第一类CPU的编号、至少一个修改后的第二类CPU的编号;所述运行模块还用于:删除所述第一类CPU集目录下的第一指定文件的第一类CPU的编号和第二类CPU集目录下的第一指定文件的第二类CPU的编号,在所述第一类CPU集目录下的第一指定文件中写入所述至少一个修改后的第一类CPU的编号,在所述第二类CPU集目录下的第一指定文件中写入所述至少一个修改后的第二类CPU的编号。
第三方面,本发明实施例提供一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器、通信接口;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器用于执行所述存储器中的指令,以在执行所述指令时执行如本发明实施例第一方面或者第二方面中任一种可选的实施方式所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如本发明实施例第一方面或者第二方面中任一种可选的实施方式所述的方法。
以上第二方面至第四方面中各实施方式所带来的有益效果可以参见第一方面中对应的实施方式所带来的有益效果,不再一一赘述。
本发明有益效果如下:
本发明实施例中,通过确定第一类CPU的编号和第二类CPU的编号,再将第一类CPU的编号写入通过虚拟文件系统创建的第一类CPU集目录下的第一指定文件、将第二类CPU的编号写入通过虚拟文件系统创建的第二类CPU集目录下的第一指定文件,最后将第一类的应用程序的进程号写入对应的CPU集目录下的第二指定文件、第二类的应用程序的进程号写入对应的CPU集目录下的第二指定文件,使得第一类应用程序运行在第一类CPU上、第二类应用程序的进程运行在第二类的CPU上,完成对CPU的隔离,相较于现有技术仅能在嵌入式系统启动时进行CPU的隔离,本方案更能够适应用户的需求,可以在用户有需求时随时进行CPU的隔离,提高了用户的体验。
附图说明
图1为本发明实施例中一种隔离CPU的方法的流程示意图;
图2为本发明实施例中第一类CPU集目录和第二类CPU集目录的示例图;
图3为本发明实施例中将应用程序与CPU一一绑定的方法流程示意图;
图4为本发明实施中另一种隔离CPU的方法的流程图;
图5为本发明实施例中一种隔离CPU的装置的结构示意图;
图6为本发明实施例中一种电子设备的结构示意图。
具体实施方式
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)、嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。嵌入式系统操作系统则是嵌入式系统上的操作系统,它仍具有嵌入式的特点。一般嵌入式系统中的操作系统具有一般操作系统的核心功能,负责嵌人式系统的全部软硬件资源的分配、调度工作控制、协调并发活动。主流的嵌入式操作系统有WindowsCE、Palm:OS、Linux、VxWorks/PSOS、嵌入式实时操作系统QNX、LynxOS等,有了嵌人式操作系统,编写应用程序就更加快速、高效、稳定。
嵌入式系统可拥有多个CPU,这样就可以使多个应用程序运行在不同的CPU上,提高应用程序的运行的效率。在具体应用中,可以将嵌入式系统上的多个CPU进行隔离操作,如本申请背景技术中所述的CPU隔离方案,可使运行速率需求快的应用程序运行在被隔离CPU上,提高这类应用程序的运行的效率。
2)、虚拟文件系统,实际上使一个伪文件系统。在本申请实施中,以CPUSET虚拟文件系统为例,CPUSET虚拟文件系统可以挂载在嵌入式系统中某个目录下使用。它的作用可以是在其运行时,限制特定的应用程序进程运行在特定的CPU上。
3)、在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本发明实施例的描述中“多个”,是指两个或两个以上。
本发明实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
本发明实施例提供一种隔离CPU的方法,用以解决现有技术在隔离CPU时存在隔离效率低、用户体验度差的问题。其中,该方法可以应用在具有多个CPU的嵌入式系统上。下文主要以具有5个CPU的嵌人式Linux系统为例。
请参见图1,为本发明实施例中一种隔离CPU的方法的流程示意图,该方法包括:
S101、确定至少一个第一类CPU的编号和至少一个第二类CPU的编号。
具体的,嵌入式系统获取预配置文件并自动解析该文件,获得第一类CPU的编号和第二类CPU的编号。其中,该预配置文件可以由人工编写。
示例性的,人为地将编号为00和04的CPU写入预配置文件后,预先将预配置文件存储在嵌入式系统,或者在嵌入式系统启动后将预配置文件存储在嵌入式系统中。嵌入式系统自动解析预配置文件后,获得第二类CPU编号也即需要被隔离的CPU的编号为00和04,因为嵌入式系统中由5个CPU,所以与此同时,嵌入式系统可以确定出剩下的CPU的编号也即01、02以及03为第一类CPU编号。
需要说明的是,预配置文件可以在嵌入式系统的任何存储位置,例如可以默认在嵌入式系统的/etc目录下,本发明实施例对此不做限制。
可选的,若嵌入式系统获取到的第二类CPU的编号存在比嵌入式系统CPU的数量大的时候,则结束流程,不执行隔离CPU的操作,例如当嵌入式系统解析预配置文件后获得的第二类CPU的编号存在06,但是嵌入式系统中的CPU一共才5个,所以系统不执行隔离CPU的操作,这样可以保证人为输入预配置文件的准确度,使嵌入式系统过滤掉错误的信息,减少系统执行不必要的错误操作,提高了系统的运行速度,同时也提高的用户的体验程度。
S102、运行CPUSET虚拟文件系统,通过CPUSET虚拟文件系统创建第一类CPU集目录和第二类CPU集目录,第一类CPU集目录下的CPU用于运行第一类应用程序,第二类CPU集目录下的CPU用于运行第二类应用程序。
具体的,将CPUSET虚拟文件系统挂载在嵌入式系统的主目录下,通过运行CPUSET虚拟文件系统实现以下操作步骤:在CPUSET虚拟文件系统下的目录下创建两个同级子目录,即第一类CPU集目录和第二类CPU集目录。
S103、在第一类CPU集目录下的第一指定文件中写入至少一个第一类CPU的编号、在第二类CPU集目录下的第一指定文件中写入至少一个第二类CPU的编号。
具体的,在第一类CPU集目录下的第一指定文件中写入在步骤S101获取的第一类CPU的编号,在第二类CPU集目录下的第一指定文件中写入在步骤S101获取到的第二类CPU的编号。其中,第一指定文件为cpuset.cpus文件。
示例性的,参见图2,将第二类CPU的编号00和04写入第二类CPU集目录下的第一指定文件中,将第一类CPU的编号01、02以及03写入第一类CPU集目录下的第一指定文件中。相应的,若第一类应用程序为C、D、F,第二类应用程序为A、B,则第一类应用程序C、D、F运行在编号为01、02、03的第一类CPU上,第二类应用程序A、B运行在编号为00、04的第一类CPU上。
进一步的,在本发明实施例中,在划分了CPU之后,还可以修改预配置文件中的CPU编号,且不需要重启系统。
具体的,用户可以修改预配置文件中的CPU编号,嵌入系统通过读取修改预配置文件可以获得修改后的第一类CPU的编号和修改后的第二类CPU的编号,然后再将第一类CPU集目录下的第一指定文件中的第一类CPU的编号和第二类CPU集目录下的第一指定文件中的第二类CPU的编号删除,接着在第一类CPU集目录下的第一指定文件中写入修改后的第一类CPU的编号,在第二类CPU集目录下的第一指定文件中写入修改后的第二类CPU的编号。
示例性的,修改后的预配置文件中的隔离的CPU的编号为01、02,则嵌入式系统获取到的第一类CPU编号为00、03和04,第二类CPU编号为01、02,然后直接删除第一类CPU集目录下的第一指定文件中原有的编号,将00、03和04写入第一类CPU集目录下的第一指定文件中,删除第二类CPU集目录下的第一指定文件中原有的编号,将01、02写入第二类CPU集目录下的第一指定文件中,因为并没有改变第二类应用程序的进程号,所以,第二类应用程序仍然是运行在第二类CPU上。
S104、将至少一个第一类应用程序的进程号写入第一类CPU集目录下的第二指定文件。
具体的,嵌入式系统将第一类应用程序的进程号写入第一类CPU集目录下的第二指定文件,使得第一类应用程序运行在至少一个第一类CPU上。其中进程号表示应用程序的进程标志,一般为数字,例如应用程序A的进程号为123456。一般说来,应用程序运行时才会有进程号,没有运行的应用程序没有进程号,因此,本发明实施例中被执行绑定CPU操作的应用程序都是处于运行状态的应用程序。其中,第二指定文件为tasks文件。
需要说明的是,第一类CPU中的每个CPU都可以有相同的概率运行第一类应用程序,例如,第一类CPU有01、02、03,第一类应用程序有A、B、C三个,则A、B、C可以同时运行在编号为01的CPU上,也可以分别运行在编号为01、02、03的CPU上。
S105、将至少一个第二类应用程序的进程号写入第二类CPU集目录下的第二指定文件。
具体的,嵌入式系统将第二类应用程序的进程号写入第二类CPU集目录下的第二指定文件,使第二类应用程序运行在至少一个第二类CPU上。
需要说明的是,第二类CPU中的每个CPU都有相同的概率运行第二类应用程序,例如,第二类CPU有00、04,第二类应用程序有A、B两个,A、BC可以同时运行在编号为00的CPU上,也可以分别运行在编号为00、04的CPU上。
在上述的方案中,通过将需要隔离的CPU的编号写入预配置文件中,使嵌入式系统自动解析得到需要隔离的CPU的编号,再将需要隔离的CPU的编号写入通过CPUSET虚拟文件系统创建的第二类CPU集目录,再将第一类和第二类的应用程序的进程号写入对应的CPU集目录下的第二指定文件,可以使得第一类应用程序的进程运行在第一类的CPU上、第二类应用程序的进程运行在第二类的CPU上,完成对CPU的划分与隔离,也达到第二类的应用程序绑定CPU运行的效果,例如时间敏感的应用程序运行在一个或者多个性能好的CPU上的结果,可以使时间敏感的应用程序获得快速的响应,提高应用程序的运行速度,而在修改需要隔离的CPU的编号时,可以直接解析修改的预配置文件后得到需要隔离的CPU的编号,再将修改后的需要隔离的CPU的编号写入由虚拟文件系统创建的第二类CPU集目录下的第一指定文件中,就可以完成隔离CPU编号的修改,与现有技术相比,无论是第一次隔离CPU还是后续修改隔离的CPU,嵌入式系统都可以不需要重启,简化了系统的操作,同时也提高了效率。相较于现有技术,不需要重启系统就能完成CPU的隔离以及隔离CPU的修改,减少了系统的操作,同时保证了第二类应用程序的运行和运行速度,提高用户的体验。
可选的,在执行步骤S105后,本发明实施例还可以将应用程序与CPU一一绑定。
参见图3,为将应用程序与CPU一一绑定的方法流程示意图,该方法包括:
S301、确定至少一个第二类应用程序中每个第二类应用程序对应的第二类CPU。
具体的,获取预配置文件中的第二类应用程序的名字以及每个第二类应用程序对应的CPU的数量,再通过写入预配置文件时的第二类应用程序的顺序,来确定至少一个第二类应用程序中每个第二类应用程序对应的第二类CPU。
示例性的,沿用上述的例子,第二类CPU的编号为00、04,第二类应用程序有A、B两个且A、B对应的CPU的数量都为1,在写入预配置文件时第二类应用程序A、B的顺序是A在前,B在后,则第二类应用程序对应的CPU为00,第二类应用程序B对应的CPU为04。
可选的,当在通过解析预配置文件时,还可以获得每个第二类应用程序对应的CPU的数量时。若出现解析到的第二类应用程序对应的CPU的数量不符合系统CPU的数量时,结束流程。例如,若解析到的第二类应用程序为A、B,应用程序A需要的CPU的数量为2,应用程序B需要的CPU的数量为1,但是系统第二类CPU数量只有2个,所以系统直接结束流程。这样可以保证人为输入预配置文件的准确度,使嵌入式系统过滤掉错误的信息,提高了系统的运行速度,同时也提高了用户的体验程度。
S302、调用系统调用接口,将至少一个第二类应用程序中的每个第二类应用程序绑定到对应的第二类CPU。
具体的,调用系统调用接口为调用系统中的一个函数,通过将第二类的应用程序的进程号和对应的第二类CPU的编号写入该函数,可以实现将第二类的应用程序绑定到对应的第二类CPU上运行。其中,调用接口在不同的操作系统中可以不同,例如:嵌入式系统的操作系统为Linux,则在嵌入式Linux系统中,调用系统调用接口实际上就是调用嵌入式Linux系统中的一个函数。再如:嵌入式系统的操作系统为Windows CE,则在嵌入式WindowsCE系统中,调用系统调用接口实际上就是调用嵌入式Windows CE系统中的一个函数。
在上述的方案中,通过调用系统调用接口将第二类应用程序绑定到对应的CPU上,与现有技术相比,不需要在每个需要绑定CPU的应用程序中去执行相同的命令,在减少了系统的操作的同时,进一步提高了第二类应用程序的响应速度。
可选的,在具体实施时,还可能出现嵌入式系统在重启之后第二类应用程序未运行在绑定的CPU上。针对这种情况下,继续参见图3,本发明实施例还可以进一步包括:
S303、在检测到任一第二类应用程序重启后未运行在任一第二类应用程序对应的第二类CPU上时,将任一第二类应用程序的进程号写入第二类CPU集目录下的第二指定文件,调用系统调用接口,将任一第二类应用程序绑定至任一第二类应用程序对应的第二类CPU。
需要说明的是,在嵌入式系统中,每个进程都是通过父进程创建出来的,子进程会拷贝父进程的几乎所有的属性,当应用程序的进程被创建后会继承父进程的CPU亲和性,也即会运行在父进程能够运行的CPU上。该父进程为嵌入式系统中已存在的进程,与其它进程没有差异,运行在普通的CPU(即第一类CPU)上,而重启的应用程序的进程则相当于是子进程,子进程是通过拷贝父进程得到的,所以当程序运行时,继承了父进程的CPU亲和性。所以,某个第二类应用程序重启之后,第二类应用程序会运行到第一类CPU上,因此嵌入式系统需要针对该应用程序重新进行迁移到第二类CPU集内并绑定到指定的第二类CPU的操作。
在上述的方案中,在检测到第二类应用程序重启后未运行在绑定的CPU上,通过将调用系统调用接口,将任一第二类应用程序绑定至任一第二类应用程序对应的第二类CPU,保证了第二类应用程序运行在对应的CPU的准确性,同时也提高了第二类应用程序运行速度和可靠性。
可选的,若存在任一第二类应用程序一直处于未运行,则在检测到该第二类应用程序运行时,再对该第二类应用程序执行上述步骤S105、S302-S303,以完成对该第二类应用程序的CPU绑定操作。
本发明实施例中的上述各实施方式可以相互结合实现不同的技术效果。
示例性地,参见图4,为本发明实施中另一种隔离CPU的方法的流程图,该方法包括:
S401、解析预配置文件,获取第二类CPU编号。
具体的,嵌入式系统自动解析预配置文件,获得预配置文件中写入的第二类CPU下的第一指定文件中的编号为00和04,进一步可知第一类CPU的编号为01、02和03。其中,判断出嵌入式系统获取到的第二类CPU的编号00和04中,不存在比嵌入式系统CPU的数量大的情况,继续下一步骤,否则认为预配置文件内容不正确,结束流程。
S402、运行CPUSET虚拟文件系统划分CPU。
具体的,运行CPUSET虚拟文件系统,通过CPUSET虚拟文件系统创建第一类CPU集目录和第二类CPU集目录,紧接着将第二类CPU的编号00和04写入第二类CPU集目录下的第一指定文件中,将第一类CPU的编号01、02以及03写入第一类CPU集目录下的第一指定文件中。
S403、将进程号写入CPU集目录下的第二指定文件中。
具体的,将第一类应用程序C、D、F的进程号11、22、33写入第一类CPU集目录下的第二指定文件,将第二类应用程序A、B的进程号44、55写入第二类CPU集目录下的第二指定文件。
S404、调用系统调用接口,将第二类应用程序A、B分别绑定对应的第二类CPU00和04上。
具体的,需要先确定第二类应用程序A、B分别对应的第二类CPU为00和04,具体确定第二类应用程序A、B对应的CPU编号的方法参见步骤S301。
S405、将重启后未运行在该应用程序对应CPU的任一第二类应用程序绑定到对应该应用程序的CPU上。
具体的,在检测到任一第二类应用程序如A、B重启后未运行在应用程序A、B对应的第二类CPU即CPU00或者CPU04上时,调用系统调用接口,将第二类应用程序A、B绑定至CPU00或者CPU04上。
S406、获得修改后待隔离的CPU编号,进行CPU的隔离。
在用户修改了CPU的划分方式时,例如预配置文件被修改,则从修改后的预配置文件中获取修改的待隔离的CPU的编号,例如01、02,则嵌入式系统确定修改的第一类CPU编号为00、03和04,第二类CPU编号为01、02,然后删除第一类CPU集目录中原有的编号,将00、03和04写入第一类CPU集目录,删除第二类CPU集目录中原有的编号,将01、02写入第二类CPU集目录,接着再执行上述步骤S403-S405。
上述方案通过CPUSET虚拟系统进行CPU的划分,再将第一类和第二类的应用程序的进程号写入对应的CPU集目录下的第二指定文件,可以使得第一类应用程序的进程运行在第一类的CPU上、第二类应用程序的进程运行在第二类的CPU上,在调用系统调用接口将第二类应用程序绑定到对应的CPU上,使时间敏感的第二类应用程序能够获得快速的响应,提高应用程序的运行速度,并且若想更改隔离的CPU,只需要修改预配置文件,就可以达到修改隔离CPU的目的,相较于现有技术,不需要重启系统就能完成CPU的隔离以及隔离CPU的修改,减少了系统的操作,保证了第二类应用程序的运行和运行速度,提高用户的体验。
基于同一发明构思,本发明实施例还提供一种隔离CPU的装置500,参见图5,包括:
确定模块501,用于确定至少一个第一类CPU的编号和至少一个第二类CPU的编号;其中,所述至少两个CPU包括所述至少一个第一类CPU和所述至少一个第二类CPU;
运行模块502,用于运行CPUSET虚拟文件系统,通过所述CPUSET虚拟文件系统创建第一类CPU集目录和第二类CPU集目录,所述第一类CPU集目录下的CPU用于运行第一类应用程序,所述第二类CPU集目录下的CPU用于运行第二类应用程序;在所述第一类CPU集目录下的第一指定文件中写入所述至少一个第一类CPU的编号、在所述第二类CPU集目录下的第一指定文件中写入所述至少一个第二类CPU的编号;将至少一个第一类应用程序的进程号写入所述第一类CPU集目录下的第二指定文件,使得所述至少一个第一类应用程序运行在所述至少一个第一类CPU上;将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,使所述至少一个第二类应用程序运行在所述至少一个第二类CPU上。
可选的,所述确定模块501在确定至少一个第一类CPU的编号和至少一个第二类CPU的编号时,具体用于:从预配置文件中获取所述至少一个第一类CPU的编号、所述至少一个第二类CPU的编号。
可选的,所述运行模块502还用于:在将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件之后,确定所述至少一个第二类应用程序中每个第二类应用程序对应的第二类CPU;调用系统调用接口,将所述至少一个第二类应用程序中的每个第二类应用程序绑定到对应的第二类CPU。
可选的,所述运行模块502在确定所述至少一个第二类应用程序中每个第二类应用程序对应的CPU时,具体用于:确定所述至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量;根据确定出的至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量,将所述至少一个第二类CPU分配给所述至少一个第二类应用程序中每个第二类应用程序。
可选的,所述运行模块502还用于:在检测到任一第二类应用程序重启后未运行在所述任一第二类应用程序对应的第二类CPU上时,将所述任一第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,调用系统调用接口,将所述任一第二类应用程序绑定至所述任一第二类应用程序对应的第二类CPU。
可选的,所述确定模块501还用于:从修改后的预配置文件中获取至少一个修改后的第一类CPU的编号、至少一个修改后的第二类CPU的编号;所述运行模块502还用于:删除所述第一类CPU集目录下的第一指定文件的第一类CPU的编号和第二类CPU集目录下的第一指定文件的第二类CPU的编号,在所述第一类CPU集目录下的第一指定文件中写入所述至少一个修改后的第一类CPU的编号,在所述第二类CPU集目录下的第一指定文件中写入所述至少一个修改后的第二类CPU的编号。
装置的各模块执行方法步骤的具体实现方式请参照上述方法实施例中对应方法步骤的具体实施方式,本实施例不再进行详细介绍。
基于同一发明构思,本发明实施例还提供一种电子设备600,参照图6,包括:至少一个处理器601,以及与所述至少一个处理器601通信连接的存储器602、通信接口603;其中,所述存储器602存储有可被所述至少一个处理器601执行的指令,所述至少一个处理器601通过执行所述存储器602存储的指令,以在执行所述指令时使所述装置500执行本发明的实施例所述的隔离CPU方法。
基于同一发明构思,本发明实施例还提供计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行本发明实施例所述的隔离CPU方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种隔离中央处理器CPU的方法,应用于具有至少两个CPU的嵌入式系统中,其特征在于,包括:
确定至少一个第一类CPU的编号和至少一个第二类CPU的编号;其中,所述至少两个CPU包括所述至少一个第一类CPU和所述至少一个第二类CPU;
运行虚拟文件系统,通过所述虚拟文件系统创建第一类CPU集目录和第二类CPU集目录,所述第一类CPU集目录下的CPU用于运行第一类应用程序,所述第二类CPU集目录下的CPU用于运行第二类应用程序;
在所述第一类CPU集目录下的第一指定文件中写入所述至少一个第一类CPU的编号、在所述第二类CPU集目录下的第一指定文件中写入所述至少一个第二类CPU的编号;
将至少一个第一类应用程序的进程号写入所述第一类CPU集目录下的第二指定文件,使得所述至少一个第一类应用程序运行在所述至少一个第一类CPU上;
将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,使所述至少一个第二类应用程序运行在所述至少一个第二类CPU上。
2.如权利要求1所述的方法,其特征在于,确定至少一个第一类CPU的编号和至少一个第二类CPU的编号,包括:
从预配置文件中获取所述至少一个第一类CPU的编号、所述至少一个第二类CPU的编号。
3.如权利要求1所述的方法,其特征在于,在将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件之后,还包括:
确定所述至少一个第二类应用程序中每个第二类应用程序对应的第二类CPU;
调用系统调用接口,将所述至少一个第二类应用程序中的每个第二类应用程序绑定到对应的第二类CPU。
4.如权利要求3所述的方法,其特征在于,确定所述至少一个第二类应用程序中每个第二类应用程序对应的CPU,包括:
确定所述至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量;
根据确定出的至少一个第二类应用程序中每个第二类应用程序所需的第二类CPU的数量,将所述至少一个第二类CPU分配给所述至少一个第二类应用程序中每个第二类应用程序。
5.如权利要求3所述的方法,其特征在于,还包括:
在检测到任一第二类应用程序重启后未运行在所述任一第二类应用程序对应的第二类CPU上时,将所述任一第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件;
调用系统调用接口,将所述任一第二类应用程序绑定至所述任一第二类应用程序对应的第二类CPU。
6.如权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
从修改后的预配置文件中获取至少一个修改后的第一类CPU的编号、至少一个修改后的第二类CPU的编号;
删除所述第一类CPU集目录下的第一类CPU的编号和第二类CPU集目录下的第二类CPU的编号;
在所述第一类CPU集目录下的第一指定文件中写入所述至少一个修改后的第一类CPU的编号,在所述第二类CPU集目录下的第一指定文件中写入所述至少一个修改后的第二类CPU的编号。
7.一种隔离CPU的装置,其特征在于,包括:
确定模块,用于确定至少一个第一类CPU的编号和至少一个第二类CPU的编号;其中,所述至少两个CPU包括所述至少一个第一类CPU和所述至少一个第二类CPU;
运行模块,用于运行虚拟文件系统,通过所述虚拟文件系统创建第一类CPU集目录和第二类CPU集目录,所述第一类CPU集目录下的CPU用于运行第一类应用程序,所述第二类CPU集目录下的CPU用于运行第二类应用程序;在所述第一类CPU集目录下的第一指定文件中写入所述至少一个第一类CPU的编号、在所述第二类CPU集目录下的第一指定文件中写入所述至少一个第二类CPU的编号;将至少一个第一类应用程序的进程号写入所述第一类CPU集目录下的第二指定文件,使得所述至少一个第一类应用程序运行在所述至少一个第一类CPU上;将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件,使所述至少一个第二类应用程序运行在所述至少一个第二类CPU上。
8.如权利要求7所述的装置,其特征在于,所述运行模块还用于:
在将至少一个第二类应用程序的进程号写入所述第二类CPU集目录下的第二指定文件之后,确定所述至少一个第二类应用程序中每个第二类应用程序对应的第二类CPU;
调用系统调用接口,将所述至少一个第二类应用程序中的每个第二类应用程序绑定到对应的第二类CPU。
9.一种电子设备,其特征在于,包括:
至少一个处理器,以及
与所述至少一个处理器通信连接的存储器、通信接口;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器用于执行所述存储器中的指令,以在执行所述指令时,使所述装置执行如权利要求1-6任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911228949.6A CN110928601B (zh) | 2019-12-04 | 2019-12-04 | 一种隔离cpu的方法、装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911228949.6A CN110928601B (zh) | 2019-12-04 | 2019-12-04 | 一种隔离cpu的方法、装置以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928601A true CN110928601A (zh) | 2020-03-27 |
CN110928601B CN110928601B (zh) | 2022-05-20 |
Family
ID=69856772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911228949.6A Active CN110928601B (zh) | 2019-12-04 | 2019-12-04 | 一种隔离cpu的方法、装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928601B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791857A (zh) * | 2021-01-25 | 2022-07-26 | 青岛海信宽带多媒体技术有限公司 | 一种家庭网关多核cpu处理器的控制方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102754079A (zh) * | 2010-02-23 | 2012-10-24 | 富士通株式会社 | 多核处理器系统、控制程序、以及控制方法 |
CN104899077A (zh) * | 2015-06-30 | 2015-09-09 | 北京奇虎科技有限公司 | 基于容器技术的进程信息获取方法及装置 |
CN105138905A (zh) * | 2015-08-25 | 2015-12-09 | 中国科学院信息工程研究所 | Linux应用程序的隔离运行方法 |
US20170249455A1 (en) * | 2016-02-26 | 2017-08-31 | Cylance Inc. | Isolating data for analysis to avoid malicious attacks |
CN108459987A (zh) * | 2017-02-17 | 2018-08-28 | 杭州海康威视数字技术股份有限公司 | 多cpu的数据交互方法和多cpu联网设备 |
-
2019
- 2019-12-04 CN CN201911228949.6A patent/CN110928601B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102754079A (zh) * | 2010-02-23 | 2012-10-24 | 富士通株式会社 | 多核处理器系统、控制程序、以及控制方法 |
CN104899077A (zh) * | 2015-06-30 | 2015-09-09 | 北京奇虎科技有限公司 | 基于容器技术的进程信息获取方法及装置 |
CN105138905A (zh) * | 2015-08-25 | 2015-12-09 | 中国科学院信息工程研究所 | Linux应用程序的隔离运行方法 |
US20170249455A1 (en) * | 2016-02-26 | 2017-08-31 | Cylance Inc. | Isolating data for analysis to avoid malicious attacks |
CN108459987A (zh) * | 2017-02-17 | 2018-08-28 | 杭州海康威视数字技术股份有限公司 | 多cpu的数据交互方法和多cpu联网设备 |
Non-Patent Citations (1)
Title |
---|
凌空A: "CentOS7 CPU隔离配置", 《HTTPS://WWW.CNBLOGS.COM/ALOG9/P/11551441.HTML》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791857A (zh) * | 2021-01-25 | 2022-07-26 | 青岛海信宽带多媒体技术有限公司 | 一种家庭网关多核cpu处理器的控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110928601B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3425502B1 (en) | Task scheduling method and device | |
JP5015665B2 (ja) | カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム | |
CN106371894B (zh) | 一种配置方法、装置和数据处理服务器 | |
US9588787B2 (en) | Runtime virtual process creation for load sharing | |
JP2007115246A (ja) | ソフトウェアによって使用される資源を動的に割り当てるための方法及び装置 | |
CN112835714B (zh) | 云边环境中面向cpu异构集群的容器编排方法、系统及介质 | |
CN106339458B (zh) | 一种基于弹性分布式数据集的Stage划分方法和终端 | |
EP3879875A1 (en) | Resource change method and device, apparatus, and storage medium | |
GB2529740A (en) | Data processing systems | |
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
CN107179982B (zh) | 一种跨进程调试方法和装置 | |
CN110928601B (zh) | 一种隔离cpu的方法、装置以及存储介质 | |
US9552223B2 (en) | Post-return asynchronous code execution | |
US20130117757A1 (en) | Method and apparatus for scheduling application programs | |
US11561843B2 (en) | Automated performance tuning using workload profiling in a distributed computing environment | |
KR101867960B1 (ko) | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 | |
CN109766125B (zh) | 批次间追平冲突的识别方法及装置 | |
JP6720357B2 (ja) | ネットワークアクセス可能なデータボリューム変更 | |
CN115953017A (zh) | 流程变更方法、装置、电子设备及计算机可读存储介质 | |
JP5391152B2 (ja) | サーバシステム、及び、仮想サーバの移行方式を選択する方法 | |
CN113391821A (zh) | 一种非对称多处理器嵌入式操作系统 | |
CN112506818A (zh) | 一种基于软件模拟的usb硬件虚拟化方法 | |
JP5699665B2 (ja) | サーバ装置、処理実行方法およびプログラム | |
JP5840892B2 (ja) | ソフトウェア配信システムおよびソフトウェア配信用プログラム | |
CN112148376A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |