CN103154893A - 多核处理器系统、监视控制方法以及监视控制程序 - Google Patents

多核处理器系统、监视控制方法以及监视控制程序 Download PDF

Info

Publication number
CN103154893A
CN103154893A CN201080069414XA CN201080069414A CN103154893A CN 103154893 A CN103154893 A CN 103154893A CN 201080069414X A CN201080069414X A CN 201080069414XA CN 201080069414 A CN201080069414 A CN 201080069414A CN 103154893 A CN103154893 A CN 103154893A
Authority
CN
China
Prior art keywords
thread
cpu
core
situation
monitor
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
Application number
CN201080069414XA
Other languages
English (en)
Other versions
CN103154893B (zh
Inventor
铃木贵久
山下浩一郎
山内宏真
栗原康志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN103154893A publication Critical patent/CN103154893A/zh
Application granted granted Critical
Publication of CN103154893B publication Critical patent/CN103154893B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及多核处理器系统、监视控制方法以及监视控制程序。在特定的CPU保存状态信息期间,其他的CPU持续处理,实现无停止动作。CPU(#0)利用检测部(301)来检测进程(210)执行的情况。检测后,CPU(#0)利用生成部(302)来生成对表示进程(210)的执行状态和进程(210)内成为各监视对象线程的线程(212)的执行状态的状态信息(215)进行保存的监视线程(211)。由此,在CPU(#0)正在保存状态信息(215)的期间,CPU(#1)能够执行与进程(210)没有依赖关系的进程(220),能够实现无停止动作。

Description

多核处理器系统、监视控制方法以及监视控制程序
技术领域
本发明涉及控制针对装置的监视的多核处理器系统、监视控制方法以及监视控制程序。
背景技术
从以往,作为提高计算机系统的可靠性的技术之一,公开有检查点-再启动(checkpoint-restart)这样的技术(例如,参照下述非专利文献1。)。该技术是定期地对各个应用程序或系统整体的状态信息进行备份,在故障产生时回滚到备份系统的状态的时刻重新开始执行的方法。这里所谓的状态信息是指包含存储器的内容、处理器内的寄存器信息的信息。
非专利文献1的技术是以在大型设备的领域中计算需要数日的高度模拟(simulation)处理中产生了故障的情况下,即使不从头开始重新执行处理也能够解决问题的方式而设计出的技术。因此同时运转的应用程序是一个,通过检查点-再启动使各个应用程序高可靠化。在近些年,在嵌入系统中,也进行像汽车的控制那样的希望得到高度可靠性的处理,这样的系统为了避免故障产生时不能长时间控制的状态,通过非专利文献1的技术能够在故障产生后立即复原处理。
在将非专利文献1的技术应用到嵌入系统中的情况下,在嵌入系统中多个应用程序联合动作,所以按照对联合的全部应用程序进行检查点-再启动的方式来进行设定,所以降低开发效率。另外,嵌入系统与大型机相比CPU数量、存储量少,所以在将非专利文献1的技术应用到嵌入系统的情况下,通过OS等对嵌入系统整体进行检查点-再启动。
另外,作为安装多个CPU的多核处理器系统中故障产生时的技术,例如,公开有在将线程的执行信息储存到存储器,在某个CPU中产生了故障的情况下,以其他的CPU来代替处理的技术(例如,参照下述专利文献1。)。另外,作为其它的技术,公开有利用监视装置来集中监视正在执行的各处理的状态的技术(例如,参照下述专利文献2。)。
若使用非专利文献1的技术和专利文献2的技术应用到多核处理器系统的故障产生时的复原处理中,则成为特定的CPU进行保存多核处理器系统整体的状态信息的处理的技术(以下,称为“现有技术1”。)。通过应用现有技术1,多核处理器系统能够在故障产生时使用保存的状态信息来复原状态。
专利文献
专利文献1:日本特开2006-139621号公报
专利文献2:日本特开2008-310632号公报
非专利文献
非专利文献1:“A Survey of Checkpoint/RestartImplementations”[online],2010年8月24日检索,网络<URL:https://ftg.lbl.gov/CheckpointRestart/Pubs/checkpointSurvey-020724b.pdf>
然而,在上述的现有技术中,在现有技术1所涉及的技术中,存在如下问题,在保存状态信息时,为了不变更状态而必须停止处理,停止的结果就是不能进行任何处理,所以浪费CPU的处理能力。
具体而言,若嵌入系统是安装一个CPU的单核处理器,则同时只能进行一个处理,所以在状态信息的保存过程中不能够执行应用程序,所以在CPU的处理能力中不存在空闲。但是,若嵌入系统是多核心处理器,则在一个CPU进行状态信息的保存的期间,其他的CPU不能持续执行应用程序从而不能够进行任何处理,所以存在浪费处理能力的问题。
发明内容
本发明为了消除上述现有技术的问题点,其目的在于提供在特定的核保存状态信息期间,其他的核能够持续进行处理的多核处理器系统、监视控制方法以及监视控制程序。
为了解决上述的课题并实现目的,公开的多核处理器系统当检测出进程在多个核中被执行这一情况时,生成对表示进程的执行状态和进程内的各监视对象线程的执行状态的状态信息进行保存的特定线程。
根据本多核处理器系统、监视控制方法以及监视控制程序,起到在特定的核保存状态信息期间,其他的核能够持续处理,能够提高处理能力,并实现无停止动作这样的效果。
附图说明
图1是表示实施方式所涉及的多核处理器系统100的硬件的框图。
图2是表示本实施方式的各CPU和进程的执行状态的概要的说明图。
图3是表示多核处理器系统100的功能的框图。
图4是表示正常时监视线程保存状态信息的定时的说明图。
图5是表示故障产生时多核处理器系统100的动作的说明图。
图6是表示故障产生时可持续的进程的概要的说明图。
图7是表示监视线程211保存状态信息215的概要的说明图。
图8是表示监视线程211复原使用了状态信息215的状态的概要的说明图。
图9是表示OS内部的功能的说明图。
图10是表示进程用区域的存储内容的生成例的说明图。
图11是表示由OS进行的事件处理的流程图(其1)。
图12是表示由OS进行的事件处理的流程图(其2)。
图13是表示监视线程的动作的流程图(其1)。
图14是表示监视线程的动作的流程图(其2)。
具体实施方式
以下参照附图,对本发明所涉及的多核处理器系统、监视控制方法以及监视控制程序的优选实施方式进行详细说明。
(多核处理器系统100的硬件)
图1是表示实施方式所涉及的多核处理器系统100的硬件的框图。在图1中,多核处理器系统100包含安装多个CPU的CPUs101、ROM(Read‐Only Memory:只读存储器)102、和RAM(Random AccessMemory:随机存储器)103。另外,多核处理器系统100包含闪存ROM104、闪存ROM控制器105、和闪存ROM106。另外,多核处理器系统100作为与用户、其他设备的输入输出装置包含显示器107、I/F(Interface:接口)108、和键盘109。另外,各部分别通过总线110连接。
这里,CPUs101管理多核处理器系统100整体的控制。CPUs101是指并列连接了单核处理器而成的全部CPU。CPUs101包含CPU#0~CPU#3。另外,CPUs101也可以包含至少2个以上的CPU。CPU#0~CPU#3分别具有专用的高速缓冲存储器。另外,所谓的多核处理器系统,是包含安装了多个核的处理器的计算机系统。若安装了多个核,则可以是安装了多个核而成的单一处理器,也可以是并列有单核处理器的处理器组。此外,在本实施方式中,列举并列有作为单核处理器的CPU的方式为例进行说明。
ROM102存储有启动程序等程序。RAM103作为CPUs101的工作区域被使用。闪存ROM104存储有OS(Operating System:操作系统)等系统软件、应用程序软件等。例如,在更新OS的情况下,多核处理器系统100通过I/F108接收新的OS,并将储存在闪存ROM104中的旧的OS更新为接收到的新的OS。
闪存ROM控制器105根据CPUs101的控制来控制数据对闪存ROM106的读/写。闪存ROM106存储以在闪存ROM控制器105的控制下写入的数据。作为数据的具体例是使用多核处理器系统100的用户通过I/F108获取的图像数据、视频数据等。闪存ROM106例如能够采用存储卡、SD卡等。
显示器107除了显示光标、图标或者工具箱以外,还显示文件、图像、功能信息等数据。该显示器107例如能够采用TFT液晶显示器等。
I/F108通过通信线路与LAN(Local Area Network:局域网)、WAN(Wide Area Network:广域网)、因特网等网络111连接,经由该网络111与其他的装置连接。并且,I/F108管理网络111和内部的接口,控制来自外部装置的数据的输入输出。在I/F108中例如能够采用调制解调器、LAN适配器等。
键盘109具备用于输入数字、各种指示等的键,进行数据的输入。另外,键盘109也可以是触摸面板式的输入垫、数字键盘等。
图2是表示本实施方式中的各CPU和进程的执行状态的概要的说明图。图2所示的多核处理器系统100执行进程210、进程220、进程230这3个进程。进程210~进程230将特定的服务提供给用户。例如,进程210是提供Web服务的Web浏览器进程,进程220是再生流动态图像的同态图像再生进程。
进程210~进程230为了将特定的服务提供给用户,按照成为程序执行单位的各个线程划分功能,提供一个服务。例如,Web浏览器进程具有以下3个线程。第一个线程是根据HTTP(Hyper Text TransferProtocol:超级文本传输协议)协议收发数据的线程。接着,第二个线程是解析接收到的HTML(Hyper Text Markup Language:超文本标记语言)数据的线程。最后,第三个线程是使用解析后的结果来显示HTML数据的线程。
在线程的状态中,有执行状态、可执行状态和等待状态,以下,将执行状态和可执行状态组合称为“运转状态”。OS具有基于分时、或者优先级顺序这样的OS的调度策略,将处于运转状态的线程分配给CPU的选择线程的功能,将线程分配给CPU并加以执行。已执行的线程是执行状态的线程,未分配给CPU的线程是可执行状态的线程。
另外,等待状态的线程是由于I/O的响应等待、或者执行作为OS的待机命令的sleep(休眠)指令等因某些理由而暂时不能执行的状态的线程。在等待状态的线程中,将不能执行的状态被消除从而从等待状态迁移到运转状态的情况称为“起动”。
另外,所谓的进程,是OS中的管理单位,多个线程能属于一个进程。属于同一进程的线程能够共享存储器等OS所管理的计算机资源。另一方面,属于不同进程的线程彼此不能共享资源,例如不能参照不同进程的存储器的内容。像这样,计算机资源按照每个进程是独立的,能够按照每个进程来保存状态信息。
另外,进程210~进程230具有作为本实施方式的特征的监视线程。具体而言,进程210包含监视线程211、和线程212~线程214。进程220包含监视线程221、和线程222、线程223。进程230包含监视线程231、和线程232~线程235。另外,作为CPU#0~CPU#3中的进程210~进程230的线程的分配,CPU#0被分配监视线程211、线程222、线程232。而且CPU#0利用OS#0的功能,根据被分配的线程的优先级来执行监视线程211、线程222、线程232。
同样,CPU#1被分配线程212、监视线程221、线程233。CPU#2被分配线程213、线程234、线程235。CPU#3被分配线程214、线程223、监视线程231。这样,多核处理器系统100中,分配有监视线程的CPU不分配同一进程内的其他线程。
此外,监视线程是在进程生成时由生成进程的CPU生成。监视线程定期被执行,将自身所属的进程内的监视线程以外的线程作为监视对象线程,将监视对象线程的状态信息保存到RAM103中。此外,监视对象线程可以是自身所属的进程内的监视线程以外的所有线程,也可以是一部分线程。以下,在仅记述为线程的情况下,该线程是监视对象线程。
例如,监视线程211在进程210用区域内生成状态信息215并保存到RAM103。同样,监视线程221在进程220用区域内生成状态信息224并保存到RAM103。同样,在图2中未图示,但监视线程231也在进程230用区域内生成状态信息并保存到RAM103。
具体而言,状态信息为线程的执行状态,是包含了从初始数据发生了变更的数据和数据的地址的数据。另外,线程执行中的CPU的寄存器的值也包含于状态信息。并且,作为进程的执行状态,进程整体的状态变更了的情况也包含于状态信息。
作为变更进程整体的状态的情况,例如,在进程的优先级、进程所确保的存储量等发生变更了的情况下,包含于状态信息。监视线程211将状态信息215保存到RAM103,由此来保存进程210的状态和线程212~线程214的状态。同样,监视线程221将状态信息224保存到RAM103,由此来保存进程220的状态、和线程222、线程223的状态。
(多核处理器系统100的功能)
接下来,对多核处理器系统100的功能进行说明。图3是表示多核处理器系统100的功能的框图。在图3中,对与监视线程有关的功能进行说明。多核处理器系统100包含检测部301、生成部302、设定部303、通知部304、保存部305、复原部306、保存部307、和复原部308。成为该控制部的功能(检测部301~复原部308),通过CPU#0~CPU#3中任意的CPU执行存储在存储装置中的程序,来实现该功能。所谓的存储装置具体而言,例如是图1所示的ROM102、RAM103、闪存ROM104、闪存ROM106等。
另外,在图3中,检测部301~复原部306作为CPU#0的功能被图示,但也可以是CPU#1~CPU#3的功能。例如,在CPU#1所执行的进程中产生了进程220的启动请求的情况下,CPU#1生成进程220,并作为CPU#1的功能执行检测部301。另外,保存部305和复原部306是包含于监视线程211中的功能,在以CPU#0以外的其他的CPU执行监视线程的情况下,也可以是其他CPU的功能。例如,保存部307和复原部308是包含于由CPU#1执行的监视线程221的功能。
检测部301具有检测进程在多个核中被执行的情况的功能。作为执行进程的情况,例如检测部301也可以检测进程被生成并被执行的情况。或者,在所生成的进程被执行并且在由用户等接受到请求状态信息的保存开始之后再次开始执行的情况下,也可以检测为进程被执行的情况。具体而言,检测部301检测出执行进程210。此外,被检测出这样的信息被存储在检测部301所作用的CPU的寄存器、高速缓冲存储器、RAM103等存储区域。
生成部302具有如下功能:在由检测部301检测出进程被执行的情况下,生成对表示进程的执行状态和进程内的各监视对象线程的执行状态的状态信息进行保存的特定线程。所谓的特定线程是监视线程。例如,在检测出进程210被执行的情况下,生成部302生成对表示进程210的执行状态和成为监视对象线程的线程212~线程214的执行状态的状态信息215进行保存的监视线程211。此外,监视线程被生成这样的信息被存储在生成部302发挥作用的CPU的寄存器、高速缓冲存储器、RAM103等存储区域。
设定部303具有将执行由生成部302生成的特定线程的核设定为与执行监视对象线程的核不同的核的功能。例如,设定部303将执行监视线程211的CPU设定为与执行线程212~线程214的CPU#1~CPU#3不同的CPU#0。
另外,在生成监视线程的时刻由所有的CPU执行监视对象线程的情况下,设定部303也可以移行(migration)几个监视对象线程,准备未执行监视对象线程的CPU。此外,执行监视线程的CPU的信息被存储在设定部303发挥作用的CPU,或者执行监视线程的CPU的寄存器、高速缓冲存储器、RAM103等存储区域。
通知部304具有如下功能:从检测出重新启动已完成的核的核向从多个核中除了重新启动已完成的核的其他核,通知使进程以及各监视对象线程朝向保存状态信息的时刻的状态复原的复原请求。另外,在多个核中任意的核已完成重新启动的情况下执行通知部304。此外,检测出重新启动已完成的核的核可以是完成了重新启动的核自身,也可以是完成了重新启动的核以外的核。
例如,在CPU#1中完成了重新启动的情况下,通知部304向除去CPU#1以外的CPU#0、CPU#2、CPU#3通知使进程210以及线程212~线程214朝向信息215被保存状态的时刻的状态复原的复原请求。此外,在接受到复原请求的CPU#0、CPU#2、CPU#3中,进行复原的是执行监视线程的CPU#0。
另外,通知部304也可以从检测出在重新启动已完成的核中产生了成为进行重新启动的原因的故障的核,向多个核中至少除了产生了故障的核以外的其他核,通知各监视对象线程的停止请求。例如,通知部304从检测出在CPU#1产生了故障的CPU#0,至少向CPU#0、CPU#2、CPU#3,通知线程212~线程214的停止请求。
另外,通知部304也可以将某个CPU重新启动已完成的情况通知给CPUs101中重新启动已完成的CPU以外的其他CPU。以其他的CPU执行的监视线程在接受到重新启动完成的通知的情况下也可以复原进程以及监视对象线程的状态。同样,通知部304也可以将某个CPU产生了故障的情况通知给CPUs101中至少产生了故障的CPU以外的其他CPU。以其他CPU执行的监视线程在接受到故障产生的通知的情况下也可以进行监视对象线程的停止。
保存部305、保存部307具有保存表示进程的执行状态和进程内的各监视对象线程的执行状态的状态信息的功能。例如,保存部305保存表示进程210的执行状态和成为监视对象线程的线程212~线程214的执行状态的状态信息215。此外,保存部305、保存部307在使监视线程定期起动的情况下发挥作用。
复原部306、复原部308具有在由通知部304通知了复原请求的情况下,将进程以及各监视对象线程复原到状态信息被保存的时刻的状态的功能。例如,复原部306将进程210和成为监视对象线程的线程212~线程214复原到状态信息215被保存的状态。另外,复原部306、复原部308也可以在由通知部304通知了停止请求以及复原请求的情况进行复原。
图4是表示正常时监视线程保存状态信息的定时的说明图。从时刻t0到时刻t1,CPU#0执行线程222,CPU#1执行线程212和线程233,CPU#2执行线程213,CPU#3执行线程223和线程214。在时刻t1的时刻,若CPU#0执行监视线程211,则利用监视线程211的功能,CPU#0使以CPU#2正在执行的线程213和以CPU#3正在执行的线程214停止。在线程213和线程214停止后,利用监视线程211的功能,CPU#0获取从时刻t0到时刻t1执行的进程210内的线程212~线程214所写入的数据的差值,并进行保存。
另外,从时刻t1到时刻t2,CPU#0执行监视线程211,CPU#1执行线程233,CPU#2执行线程234,CPU#3执行线程223。在时刻t2的时刻,若CPU#3执行监视线程231,则利用监视线程231的功能,CPU#3使以CPU#1正在执行的线程233和以CPU#2正在执行的线程234停止。在线程233和线程234停止后,利用监视线程231的功能,CPU#3获取从时刻t0到时刻t2执行的进程230内的线程233、线程234所写入的数据的差值,并进行保存。
另外,从时刻t2到时刻t3,CPU#0执行线程222,CPU#1执行线程212,CPU#2执行线程213,CPU#3执行监视线程231。在时刻t3的时刻,若CPU#1执行监视线程221,则利用监视线程221的功能,CPU#1使以CPU#0正在执行的线程222停止。在线程222停止后,利用监视线程221的功能,CPU#1获取从时刻t0到时刻t3执行的进程220内的线程222、线程223所写入的数据的差值,并进行保存。
另外,从时刻t3到时刻t4,CPU#0执行线程232和线程222,CPU#1执行监视线程221、线程212和线程233。并且,CPU#2执行线程213和线程235,CPU#3执行线程214和线程223。在时刻t4的时刻,若CPU#0执行监视线程211,则利用监视线程211的功能,CPU#0使以CPU#3正在执行的线程214停止。在线程214停止后,利用监视线程211的功能,CPU#0获取从时刻t2到时刻t4执行的进程210内的线程212~线程214所写入的数据的差值,并进行保存。
同样,在时刻t5的时刻,利用监视线程231的功能CPU#3获取从时刻t3到时刻t5执行的进程230内的线程232、线程233、线程235所写入的数据的差值,并进行保存。另外,在时刻t6的时刻,利用监视线程221的功能CPU#1获取从时刻t3到时刻t5执行的进程220内的线程222、线程223所写入的数据的差值,并进行保存。
这样,即使监视线程正在保存,其他的进程内的线程也能够执行,所以能够有效地利用CPU的处理能力。另外,监视线程被OS自动地插入,所以也可以不改变各进程的程序。
图5是表示故障产生时的多核处理器系统100的动作的说明图。在图5所示的多核处理器系统100中,假定在图4的时刻t1在CPU#1中产生了故障的情况。若在时刻t1在CPU#1中产生故障,则CPU#0通过接受到故障产生的通知的监视线程211,使线程213、线程214停止。并且,CPU#3通过监视线程231,使线程232~线程235停止。此外,对于故障产生时的线程停止的概要,在图6中后述。
从时刻t1到CPU#1重新启动完成的时刻t2,CPU#0执行线程222,CPU#3执行线程223。CPU#2由于不存在能够执行的线程,所以暂停。在时刻t2,若CPU#1的重新启动完成,则利用以重新启动完成模式起动的监视线程211、监视线程231进行进程210、进程230的复原。具体而言,监视线程211进行线程212~线程214的复原,监视线程231进行线程232~线程235的复原。
另外,产生了故障的CPU#1参照其他的OS的管理信息,根据正在运转着的进程、和分配到其他的OS的监视线程的一览表,判断出在进程220中不存在监视线程,并生成监视线程221。另外,在时刻t3,若CPU#0检测出与监视线程211的复原处理相比线程222的优先级高,则使监视线程211退避,执行线程222。像这样,若线程的优先级高则也可以中断进复原处理。
若在时刻t4进程230的复原完成,则线程232~线程235成为能够执行。CPU#0~CPU#3在线程232~线程235和其他的能够执行的线程中,基于优先级等来执行线程。具体而言,CPU#0从时刻t3开始接着执行线程222,CPU#1执行线程233,CPU#2执行线程234,CPU#3执行线程223。
接下来,若在时刻t5进程210的复原完成,则线程212~线程214成为能够执行。CPU#0~CPU#3在线程212~线程214和其他的能够执行的线程中,基于优先级等来执行线程。具体而言,CPU#0执行线程232,CPU#2从时刻t4开始接着执行线程234,CPU#3从时刻t4开始接着执行线程223。
另外,在图5中,执行监视线程211的CPU#0进行进程210的复原处理,执行监视线程231的CPU#3进行进程230的复原处理。这样,若多核处理器系统100使分配有监视线程的CPU分散,则能使故障产生时的复原处理不集中到一个CPU中,而是分散到各CPU。
图6是表示在故障产生时可持续的进程的概要的说明图。在图6中,假定在CPU#1中产生了故障的情况。若在CPU#1中产生故障,则进程内的监视线程停止其他的线程。接着,在CPU#1重新启动完成后,监视线程进行复原处理。具体而言,CPU#0通过监视线程211使线程213、线程214停止。并且,CPU#3通过监视线程231,使线程232、线程234、线程235停止。进程220的线程222和线程223也可以不进行复原处理,而是可持续的。
像这样,一部分进程能够不进行复原动作而持续动作。所谓的一部分进程是在产生了故障的CPU中分配有监视线程的进程。例如,作为与图6所示的例子不同的例子,在CPU#0中产生了故障的情况,进程210的线程212~线程214可持续动作。
图7是表示监视线程211保存状态信息215的概要的说明图。在ROM102中,储存有OS#0访问的管理信息初始值701、进程210用加载模块。在进程210用加载模块的内部,储存有进程210的初始数据702。此外,管理信息初始值701和进程210用加载模块也可以储存在RAM103、闪存ROM104等中。
接下来,在RAM103中,确保进程210用区域,在进程210用区域的内部,储存有OS管理信息703、数据704、状态信息215。OS管理信息703储存有OS#1所管理的进程的管理信息、线程的管理信息。数据704储存有线程212~线程214所访问的数据。此外,管理信息初始值701~数据704在图10中详细叙述。
利用监视线程211的功能CPU#0参照管理信息初始值701、初始数据702、OS管理信息703、和数据704,输出状态信息215,并储存到RAM103。具体而言,CPU#0对初始数据702和数据704进行比较,在数据704从初始数据702发生了变更的情况下,向状态信息215输出。同样,CPU#0对管理信息初始值701和OS管理信息703进行比较,在OS管理信息703从管理信息初始值701发生了变更的情况下,向状态信息215输出。
图8是表示监视线程211使用了状态信息215的状态的复原的概要的说明图。假定在除了CPU#0以外的CPU#1~CPU#3中任意的CPU中产生故障,产生故障的CPU的重新启动已完成的情况。此时,利用监视线程211的功能CPU#0参照管理信息初始值701、初始数据702和状态信息215,更新OS管理信息703和数据704。
具体而言,CPU#0根据初始数据702和状态信息215,将线程212~线程214所访问的数据704回滚(rollback)到状态信息215被保存的时刻的状态。同样,CPU#0根据管理信息初始值701和状态信息215将进程210的状态回滚到状态信息215被保存的时刻的状态。
此外,在图7和图8中说明的进程的管理信息以及线程的管理信息的获取、复原中,也存在请求特别权限的情况。在这样的情况下,多核处理器系统100在监视线程被生成时,将特别权限赋予至监视线程。
图9是表示OS内部的功能的说明图。在图9中,以OS#0为例进行说明。OS#0以外的OS#1~OS#3也具有相同的功能。在图3中,对与监视线程有关的功能进行了说明,但在图9中,对与进程和线程整体有关的功能进行说明。OS#0包含进程生成部901、进程管理部902、监视线程功能部903、主线程生成部904、线程生成部905、线程管理部906、和调度部907。另外,监视线程功能部903包含检测部301、生成部302、管理部908、设定部303,并且,管理部908包含通知部304。
另外,在RAM103中,确保有OS#0用区域、和进程210~进程230用的区域。在图9中,在进程210~进程230用的区域中,以进程210用区域为代表而显示。OS#0用区域储存有进程一览表909、线程一览表910、监视线程一览表911。如图7所示,进程210用区域储存有OS管理信息703、数据704、和状态信息215。并且,OS管理信息703储存有进程管理信息912、和线程管理信息913。
进程生成部901具有接受来自用户、进程的请求,生成新进程的功能。例如,在OS#0是Linux(注册商标)的情况下,进程生成部901根据来自init进程的请求生成进程。此外,生成的进程储存到进程一览表909。另外,进程生成部901在RAM103上确保生成的进程用的数据区域。
进程管理部902具有管理由进程生成部901生成的进程的功能。具体而言,进程管理部902将进程的优先级、进程所确保的内存大小、对生成的进程的自变量等信息储存为进程管理信息912。
监视线程功能部903是针对监视线程的功能组。具体而言,监视线程功能部903利用检测部301检测出进程被生成这一情况,并生成监视线程。接下来,监视线程功能部903利用设定部303设定监视线程的分配目的地CPU,利用通知部304向监视线程通知指示。
主线程生成部904具有在由进程生成部901生成进程的情况下,从程序代码的开始位置生成主线程的功能。存在于程序代码的开始位置的是例如main()函数的前端。或者,若是Windows(注册商标),则是Win Main()函数的前端。主线程生成部904以根据上述的函数开始主线程的执行的方式进行设定。
线程生成部905具有生成线程的功能。例如,线程生成部905在由主线程发行新的线程的生成请求的情况下,生成线程。此外,以监视线程功能部903的生成部302、主线程生成部904、线程生成部905生成的线程被储存到线程一览表910。
线程管理部906具有管理生成的线程的功能。例如,线程管理部906判断生成的线程属于哪个进程,并将生成的线程储存为相应的进程用数据区域内的线程管理信息913。具体地,作为管理的信息,线程管理部906将线程是运转状态还是等待状态这样的值、线程的优先级、线程所确保的内存大小、对生成的线程的自变量等信息,储存为线程管理信息913。
调度部907具有将设定了分配目的地CPU的线程组,基于优先级、分时等分配给CPU的功能。具体而言,调度部907基于优先级、分时等将设定为分配给CPU#0的监视线程211、线程222、线程232依次分配给CPU。
管理部908具有管理监视线程的功能。具体而言,管理部908将由生成部302生成的监视线程储存到监视线程一览表911。并且,管理部908对储存到监视线程一览表911中的监视线程,由通知部304通知状态信息的复原的指示。
进程一览表909、线程一览表910、监视线程一览表911分别是储存进程、线程、监视线程的一览表。具体而言,储存有针对进程、线程、监视线程的指针。
进程管理信息912是进程的优先级、进程所确保的内存大小、对生成的进程的自变量等信息。这些信息也可能会在进程执行的中途发生变更。例如,假定进程210是提供Web服务的Web浏览器进程,由使用者等进行多个Web页的阅览请求,而在预先确保的内存容量中不能阅览多个Web页的情况。此时,多核处理器系统100扩展进程210的内存容量。在内存容量的扩展成功的情况下,多核处理器系统100将扩展的内存大小写入进程管理信息912。
线程管理信息913是线程是运转状态还是等待状态这样的值、线程的优先级、线程确保的内存大小、对生成的线程的自变量等信息。这些信息与进程管理信息912相同,可能在执行时会发生变更。例如,在变更了线程的优先级、确保的内存大小的情况下,多核处理器系统100将变更后的值写入线程管理信息913。
图10是表示进程用区域的存储内容的生成例的说明图。在图10中,表示生成进程210用区域的情况。进程210用加载模块是通过执行而生成进程的执行文件。在进程210用加载模块中,在图7所示的初始数据702以外,储存有进程信息1001、程序代码1002。
在进程信息1001中,包含内存大小、区域配置信息、程序开始位置等。在程序代码1002中,储存将程序源码转换为机器语言的代码。例如,若进程210用加载模块是ELF(Executable and Linkable Format:可执行文件和链接格式)格式,则进程信息1001储存在ELF标题等标题部分。同样,程序代码1002储存在.text段,初始数据702储存在.data段。
另外,在ROM102中,作为OS用数据的一部分,储存有监视线程用加载模块。监视线程用加载模块为从各进程能够利用的共享程序库。在监视线程用加载模块中,储存有共享程序库信息1003、监视线程程序代码1004、监视线程初始数据1005。储存在共享程序库信息1003中的内容与进程信息1001相同。
具体而言,在共享程序库信息1003中,储存监视线程的内存大小、区域配置信息、程序开始位置等。在监视线程程序代码1004中,储存将与监视线程对应的程序源码转换成机器语言的代码。在监视线程初始数据1005中,储存有监视线程的初始值。此外,若共享程序库用加载模块也是上述的ELF格式,则共享程序库信息1003储存在ELF标题等的标题部分。同样,监视线程程序代码1004储存在.text段,监视线程初始数据1005储存在.data段。
参照初始数据702、进程信息1001~监视线程初始数据1005,进程生成部901在进程210用区域中展开。具体而言,进程生成部901将程序代码1002在RAM103上的程序代码1006中展开,将初始数据702在RAM103上的数据704中展开。同样,进程生成部901将监视线程程序代码1004在RAM103上的监视线程程序代码1007中展开,将监视线程初始数据1005在RAM103上的监视线程数据1008中展开。在监视线程数据1008的内部,确保保存状态信息215的保存区域1009。
使用图9所示的功能组和图10所示的进程用区域,多核处理器系统100进行状态信息的保存处理和复原处理。利用图11、图12表示由OS进行的事件处理,利用图13、图14进行由监视线程进行的保存处理和复原处理的说明。由监视线程进行的保存处理和复原处理通过OS进行向事件处理内部的监视线程的通知来执行。
图11是表示由OS进行的事件处理的流程图(其1)。由OS进行的事件处理也能够以CPU#0~CPU#3中任意的CPU执行,在图11、图12中,假定利用OS#0的功能由CPU#0执行。另外,在图11中,在由OS进行的事件处理中,对生成新进程的事件和设定线程分配目的地CPU的事件进行说明。
CPU#0确认产生的事件种类(步骤S1101)。例如,CPU#0从储存在事件队列的消息中,获取最早的消息。在事件是生成新进程的情况下(步骤S1101:生成新进程),CPU#0生成主线程(步骤S1102)。在生成主线程后,CPU#0生成监视线程(步骤S1103)。在生成监视线程后,CPU#0设定监视线程的分配目的地CPU(步骤S1104)。
例如,CPU#0生成包含指向生成的监视线程的指针和表示设定线程分配目的地CPU的事件ID的消息,储存到事件队列。获取到所储存的消息的结果,通过由CPU#0执行步骤S1106~步骤S1108的处理,能够设定监视线程的分配目的地CPU。
接下来,CPU#0设定主线程的分配目的地CPU(步骤S1105),移至步骤S1101的处理。此外,设定了分配目的地CPU的主线程和监视线程被设定为从各个程序的开始位置开始执行,而成为运转状态。同时,监视线程的分配的目的地CPU向自身的OS内的监视线程一览表登录监视线程的识别信息,例如指向监视线程的指针。此外,监视线程的动作的详细内容在图13、图14中后述。
在事件是设定线程分配目的地CPU的情况下(步骤S1101:设定线程分配目的地CPU),CPU#0判断设定分配目的地CPU的线程是否是监视线程(步骤S1106)。在是监视线程的情况下(步骤S1106:“是”),CPU#0从全部的CPU即CPU#0~CPU#3,设定分配目的地CPU(步骤S1107)。此外,在步骤S1107的处理中,CPU#0也可以设定为将监视线程分配到全部的CPU中监视线程的分配数量最少的CPU中。由此,多核处理器系统100能够使各CPU分散执行故障产生后的复原处理。
在不是监视线程的情况下(步骤S1106:“否”),CPU#0从该进程的监视线程的分配目的地CPU以外设定分配目的地CPU(步骤S1108)。在步骤S1107、步骤S1108完成后,CPU#0移至步骤S1101的处理。
图12是表示由OS进行的事件处理的流程图(其2)。在图12中,对由OS进行的事件处理中的检测故障产生的事件和通知复原的事件进行说明。并且,在图12中,也对伴随检测故障产生的、在产生了故障的CPU中的监视线程的复原处理一并进行说明。
在事件是检测故障产生的情况下(步骤S1101:检测故障产生),CPU#0重新启动产生了故障的CPU#N(步骤S1201),将检测出故障产生通知给未产生故障的CPU(步骤S1202)。此外,N是0~3的整数。
另外,在步骤S1202中,CPU#0也可以将检测出故障产生的通知给包含了产生故障的CPU#N的CPU#0~CPU#3的全部。即使对CPU#N进行通知,CPU#N在故障产生中也不接受通知而放弃,所以不会对动作产生影响。若采用向未产生故障的CPU通知的方法,则多核处理器系统100具有可以不产生不必要的通信的效果。另外,若采用向全部的CPU通知的方法,则多核处理器系统100具有在设定通知目的地的CPU组时,也可以不进行从全部的CPU中除去产生了故障的CPU#N的处理的效果。
此外,作为故障产生的检测方法,例如,存在对于软件错误使CPU内的运算电路冗余化,将从各个电路输出的结果不同的情况作为产生故障来加以检测的方法。另外,作为其它的方法,存在关于程序的故障从OS定期地对进程、线程发送生存确认信号,若从进程、线程没有响应则作为产生故障来加以检测的方法。
另外,上述的故障检测方法根据各个方法的不同,存在由产生了故障的CPU进行检测的情况、2个CPU相互监视故障而检测的情况、以多个CPU中的一个CPU为代表进行检测的情况等。即使是任意故障检测方法,检测出故障产生的CPU均利用步骤S1201的处理来重新启动产生了故障的CPU。
通知后,CPU#0以故障产生模式起动分配到该CPU的全部监视线程(步骤S1203),移至步骤S1101的处理。此外,所谓的分配到该CPU的全部监视线程是登录到监视线程一览表911中的线程。另外,接受了检测出故障产生的CPU也以故障产生模式起动登录到监视线程一览表911中的全部监视线程。此外,以故障产生模式起动的监视线程的动作在图13中后述。
产生有故障的CPU#N根据来自CPU#0的重新启动指示重新启动,在重新启动完成后,向其他的CPU发送复原通知(步骤S1204)。发送后,CPU#N判断是否存在没有监视线程的进程(步骤S1205)。具体而言,CPU#N参照其他的OS的管理信息,获取正在运转的进程、和分配到其他的OS中的监视线程一览表911,从而能够判断是否存在没有监视线程的进程。
在存在没有监视线程的进程的情况下(步骤S1205:“是”),CPU#N生成监视线程,分配给CPU#N(步骤S1206)。在不存在没有监视线程的进程的情况下(步骤S1205:“否”),或者在完成步骤S1206的处理后,CPU#N完成复原处理。
在事件是通知复原的情况下(步骤S1101:通知复原),CPU#0以重新启动完成模式起动分配到该CPU的全部监视线程(步骤S1207)。此外,通知复原的事件在步骤S1204的处理中,通过CPU#N向其他的CPU发送复原通知而产生。另外,以重新启动完成模式起动的监视线程的动作在图14中后述。
此时,检测出产生故障的CPU,或者接受到检测出故障产生的CPU也可以代替监视线程的复原,而执行未停止的线程。在故障产生时未停止的线程意味着未被监视线程停止,表示监视线程已由产生了故障的CPU执行。监视线程也可以不进行复原,所以属于由产生了故障的CPU执行监视线程的进程的线程能够不进行复原而持续处理。例如,在与以重新启动完成模式起动的监视线程的优先级相比,不进行复原的可持续的线程的优先级较高的情况下,CPU#0也可以优先处理可持续的进程的线程。
图13是表示监视线程的动作的流程图(其1)。监视线程以CPU#0~CPU#3中任意的CPU执行,但在图13、图14中,假定以CPU#0执行。另外,在图13中,对监视线程的故障产生时的动作、休眠的定时到期时的动作、重新启动完成时的动作中故障产生时的动作进行说明。此外,对于监视线程的各动作的判别方法,CPU#0能够通过参照从休眠复原时的复原值,来进行判别。
CPU#0启动监视线程(步骤S1301)。以下,CPU#0基于监视线程的程序代码来执行处理。接下来,CPU#0从监视线程所属的进程用区域获取初始数据702(步骤S1302)。在获取初始数据702后,CPU#0确保保存区域1009(步骤S1303)。具体而言,CPU#0以初始数据702能够全部保存的容量,确保保存区域1009。在确保后,CPU#0将休眠的到期时间设定为通常的时间(步骤S1304),并进行休眠(步骤S1305)。
接下来,CPU#0若从休眠起动,则判断是否是以故障产生模式的起动(步骤S1306)。是以故障产生模式的起动的情况下(步骤S1306:“是”),CPU#0停止进程内的除去了监视线程的全部线程(步骤S1307)。接下来,CPU#0将休眠的到期时间设定为“无期限”(步骤S1308),移至步骤S1305的处理。此外,通过将到期时间设为无期限,从而变为不产生由定时到期引起的起动。对于不是以故障产生模式的起动的情况下(步骤S1306:“否”)的动作在图14中后述。
图14是表示监视线程的动作的流程图(其2)。在图14中,对监视线程的动作中定时到期时的动作、和重新启动完成时的动作进行说明。此外,定时到期时的动作为状态保存的处理,重新启动完成时的动作为状态复原处理。
在不是以故障产生模式的起动的情况下(步骤S1306:“否”),CPU#0判断是否是以重新启动完成模式的起动(步骤S1401)。由在步骤S1304的处理中设定的定时到期引起的起动的情况下(步骤S1401:“否”),CPU#0获取进程的全部线程(步骤S1402)。接下来,CPU#0停止进程内的除去了监视线程的全部线程(步骤S1403)。在停止了线程后,CPU#0获取进程正在使用的进程用区域(步骤S1404)。
获取后,CPU#0判断获取的数据区域是否收纳于保存区域1009(步骤S1405)。在未收纳于保存区域1009的情况下(步骤S1405:“否”),CPU#0确保扩展后的保存区域1009(步骤S1406)。此外,作为未收纳于保存区域1009的情况,存在在监视对象线程的内部执行存储器确保命令,存储器区域增加而成为状态信息的对象的情况、或者,对未保持初始值的变量设定值而成为状态信息的对象的情况等。作为未保持初始值的变量的具体例,若是上述的ELF形式,则是储存在.bss段中的变量。
在收纳于保存区域1009的情况下(步骤S1405:“是”),或者在步骤S1406的处理完成后,CPU#0将进程的数据704的差值保存到保存区域1009(步骤S1407)。接下来,CPU#0将进程管理信息912的差值、线程管理信息913的差值保存到保存区域1009(步骤S1408)。
此外,在步骤S1402~步骤S1408的状态保存处理期间,假定在CPU#1~CPU#3的任意的CPU中产生故障,步骤S1203的由OS#0执行以故障产生模式的起动命令的情况。在该情况下,至少在状态保存时,通过步骤S1403相应的进程的线程是停止中而没有故障的影响,所以CPU#0挂起(pending)故障产生模式的起动命令而持续状态保存处理。在步骤S1408完成后,在步骤S1305的处理中监视线程休眠时,立即处理基于故障产生模式的起动。
在是以重新启动完成模式的起动的情况下(步骤S1401:“是”),CPU#0获取进程的全部线程(步骤S1409)。此外,进程内的除去了监视线程的全部线程以故障产生模式的起动时,由于步骤S1307的处理而停止。此外,CPU#0也可以在步骤S1307的时刻不停止线程,而在步骤S1409之后,停止线程。
获取后,CPU#0获取进程使用的进程用区域(步骤S1410),从获取的进程用区域内的保存区域1009复原进程管理信息912、线程管理信息913(步骤S1411)。接下来,CPU#0从保存区域1009复原进程的数据704(步骤S1412)。此外,在数据704复原时,对于未保持初始数据的变量,CPU#0将保存在保存区域1009中的数据保持原样地复制到数据704。
在步骤S1408、或者步骤S1412的处理后,CPU#0重新开始停止的线程的动作(步骤S1413),移至步骤S1304的处理。
如以上说明,根据多核处理器系统、监视控制方法、以及监视控制程序,在进程内生成的监视线程保存自身的进程和内部的监视对象线程的状态。由此,多核处理器系统按照每个进程进行状态保存,所以在特定的核保存状态期间,其他的核可持续处理,能够有效地利用核的处理能力。
另外,多核处理器系统也可以将执行监视线程的核设定为与执行监视对象线程的核不同的核。由此,多核处理器系统在分配有监视线程的核发生了故障产生的情况下,可持续监视线程所属的进程。因此,即使发生了故障产生,核是重新启动中,也能够利用其他的核来执行可持续的进程,从而有效地利用核的处理能力。
另外,在现有技术1的技术中,重新启动产生了故障的核,在重新启动完成后进行复原处理。因此,处于未产生故障的运转状态的核不进行复原处理,也不进行应用程序的处理。根据本实施方式所涉及的技术,即使产生了故障的核是重新启动中,也能够执行可持续的进程,能够实现无停止动作。
另外,多核处理器系统在任意的核重新启动完成的情况下,也可以将进程和监视对象线程朝向保存状态信息的状态复原的复原请求,从检测出重新启动已完成的核的核通知给重新启动已完成的核以外的其他核。由此,多核处理器系统在重新启动完成,并能够复原的阶段,能够执行复原处理和可持续的进程。
此外,可持续的进程的监视线程由重新启动已完成的核执行,所以不进行复原请求。因此,重新启动已完成的核以外的其他核也可以不进行判断哪个线程可持续,能够基于线程的优先级等来执行由监视线程进行的复原处理和未接受到复原请求的可持续的线程。
另外,多核处理器系统在通知了复原请求的情况下,也可以利用执行监视线程的核,将进程以及各监视对象线程复原到状态信息被保存的时刻的状态。由此,能够按照每个核来执行各进程的复原,所以例如,通过以分散到各核的方式分配多个监视线程,能够分散地执行故障产生后的复原处理。以各核分散地执行复原处理,从而多核处理器系统能够高速地复原到故障产生前的状态。
另外,多核处理器系统在检测出产生了故障的核的情况下,也可以将监视对象线程的停止请求至少通知给产生了故障的核以外的其他核,在通知停止请求以及复原请求后,复原进程以及各监视对象线程。由此,即使产生了故障的核正在重新启动,多核处理器系统也能够执行可持续的进程。并且,可持续的进程的监视线程是以产生了故障的核执行的,所以不进行停止请求。因此,产生了故障的核以外的其他核也可以不进行判断哪个线程可持续,将未停止的线程保持原样地作为可持续的线程来执行。
另外,在产生故障、重新启动已完成的阶段,不是可持续的线程复原到状态信息被保存的时刻。因此,即使从故障产生后到重新启动完成进行了处理,也不会保留在其期间的处理结果,是无效的。另外,处理结果是产生了故障并已停止的线程,所以有可能不是正确的处理结果。因此,多核处理器系统在产生故障的阶段停止不是可持续的线程,从而可以不进行额外的处理,起到省电效果。
另外,通过将多核处理器系统的状态保存、进行状态复原的处理从由特定的核进行的执行设为由线程进行的执行,能够利用线程的特征而进行状态保存、状态复原。具体而言,多核处理器系统使用线程的优先级,在进行特定的进程的状态保存期间,能够中断与特定的进程相比优先级高的进程的处理。与状态复原相同,在进行特定的进程的状态复原期间,能够中断与特定的进程相比优先级高的进程的处理。另外,在待复原的进程存在多个的情况下,能够优先实行优先级更高的进程的状态复原。
另外,若是以自身的线程能够变更优先级的OS,则监视线程也可以在进行状态复原时将自身的优先级提高到比通常高。例如,假定在某个核中产生故障,在其它的核中2个监视线程进行各自的进程的复原处理的情况。此时,若一方的监视线程的复原处理完成则优先级返回到通常状态,复原处理尚未完成的监视线程的优先级保持高优先级,而优先地执行复原处理执行中的监视线程。这样,多核处理器系统利用线程的特征,通过在进行复原处理时提高优先级,从而能够优先执行复原处理。
此外,以本实施方式说明的监视控制方法能够通过在个人计算机、工作站等的计算机上执行预先准备的程序来实现。本监视控制程序记录在硬盘、软盘、CD-ROM、MO、DVD等计算机可读取的记录介质上,通过由计算机从记录介质读出而被执行。另外本监视控制程序也可以经由因特网等网络发布。
附图标记说明
#0、#1…CPU;100…多核处理器系统;103…RAM;110…总线;210、220…进程;211、221…监视线程;212、222…线程;215、224…状态信息;301…检测部;302…生成部;303…设定部;304…通知部;305、307…保存部;306、308…复原部。

Claims (7)

1.一种多核处理器系统,其特征在于,具备:
检测单元,其检测进程在多个核中被执行这一情况;和
生成单元,其当通过所述检测单元检测出所述进程被执行这一情况时,生成对表示所述进程的执行状态和所述进程内的各监视对象线程的执行状态的状态信息进行保存的特定线程。
2.根据权利要求1所述的多核处理器系统,其特征在于,
还具备设定单元,所述设定单元将执行由所述生成单元生成的所述特定线程的核设定为与执行所述各监视对象线程的核组不同的核。
3.根据权利要求2所述的多核处理器系统,其特征在于,
还具备通知单元,所述通知单元在所述多个核中任意的核重新启动已完成的情况下,从检测出重新启动已完成的核的核,向所述多个核中除了所述重新启动已完成的核以外的其他核,通知使所述进程以及所述各监视对象线程向所述状态信息被保存的时刻的状态复原的复原请求。
4.根据权利要求3所述的多核处理器系统,其特征在于,
还具备复原单元,所述复原单元在由所述通知单元通知了所述复原请求的情况下,通过执行所述特定线程的核来将所述进程以及所述各监视对象线程复原到所述状态信息被保存的时刻的状态。
5.根据权利要求4所述的多核处理器系统,其特征在于,
所述通知单元从检测出在所述重新启动已完成的核中产生了成为重新启动的原因的故障的情况的核,向所述多个核中的至少所述其他核,通知所述各监视对象线程的停止请求,
所述复原单元在由所述通知单元通知了所述停止请求以及所述复原请求的情况下,通过执行所述特定线程的核来将所述进程以及所述各监视对象线程复原到所述状态信息被保存的时刻的状态。
6.一种监视控制方法,其特征在于,多个核中任意的核执行如下步骤:
检测步骤,检测进程在所述多个核中被执行这一情况;和
生成步骤,当由所述检测步骤检测出所述进程被执行这一情况时,生成对表示所述进程的执行状态和所述进程内的各监视对象线程的执行状态的状态信息进行保存的特定线程。
7.一种监视控制程序,其特征在于,使多个核中任意的核执行如下步骤:
检测步骤,检测进程在所述多个核中被执行这一情况;和
生成步骤,当由所述检测步骤检测出所述进程被执行这一情况时,生成对表示所述进程的执行状态和所述进程内的各监视对象线程的执行状态的状态信息进行保存的特定线程。
CN201080069414.XA 2010-10-05 2010-10-05 多核处理器系统、监视控制方法以及监视控制程序 Expired - Fee Related CN103154893B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/067469 WO2012046302A1 (ja) 2010-10-05 2010-10-05 マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム

Publications (2)

Publication Number Publication Date
CN103154893A true CN103154893A (zh) 2013-06-12
CN103154893B CN103154893B (zh) 2016-05-04

Family

ID=45927322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080069414.XA Expired - Fee Related CN103154893B (zh) 2010-10-05 2010-10-05 多核处理器系统、监视控制方法以及监视控制程序

Country Status (5)

Country Link
US (1) US9335998B2 (zh)
EP (1) EP2626786B1 (zh)
JP (1) JP5516747B2 (zh)
CN (1) CN103154893B (zh)
WO (1) WO2012046302A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298563A (zh) * 2014-10-13 2015-01-21 中国外汇交易中心 一种用于管理进程的方法及系统
CN105446933A (zh) * 2014-09-26 2016-03-30 扬智科技股份有限公司 多核心处理器的调试系统与调试方法
CN107015848A (zh) * 2016-01-21 2017-08-04 罗伯特·博世有限公司 用于监视和操控事件导向的操作系统中的准并行的实施线程的方法和设备

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2518671A (en) * 2013-09-30 2015-04-01 St Microelectronics Res & Dev Multiple Processor System
TWI625622B (zh) * 2013-10-31 2018-06-01 聯想企業解決方案(新加坡)有限公司 在多核心處理器系統與運作多核心處理器系統的電腦實施方法
FR3025627B1 (fr) * 2014-09-10 2018-03-23 Bull Sas Mecanisme haute performance pour generation d'informations de journalisation d'un processus informatique
US9404970B2 (en) * 2014-11-14 2016-08-02 Cavium, Inc. Debug interface for multiple CPU cores
EP3286974B1 (en) * 2015-04-24 2022-04-06 Nokia Technologies Oy Common random access channel resource based coordinated random access
KR101715759B1 (ko) * 2015-09-22 2017-03-15 한국전자통신연구원 멀티코어 환경에서의 악성코드 분석 장치 및 방법
JP6819061B2 (ja) * 2016-03-28 2021-01-27 日本電気株式会社 情報処理装置、プロセス切り替え方法及びプログラム
JP2018092571A (ja) * 2016-04-20 2018-06-14 株式会社リコー 電子装置、再起動方法およびプログラム
US10591976B2 (en) * 2016-11-10 2020-03-17 Apple Inc. Methods and apparatus for providing peripheral sub-system stability
US20190243698A1 (en) * 2018-02-02 2019-08-08 Robert Bosch Gmbh Electronic Control Unit for Flexible Replacement of Replaceable Components in a Vehicle
JP7087420B2 (ja) 2018-02-02 2022-06-21 富士通株式会社 処理プログラム、およびイベント処理方法
US11055366B2 (en) 2018-06-04 2021-07-06 Genetec Inc. Electronic evidence transfer
JP2020009015A (ja) * 2018-07-04 2020-01-16 日本電産サンキョー株式会社 情報処理システム、情報処理装置、及び情報処理方法
DE102020205146A1 (de) * 2020-04-23 2021-10-28 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zur Steuerung eines technischen Systems
CN113032207A (zh) * 2021-03-02 2021-06-25 广州虎牙科技有限公司 应用进程的监控方法、装置、电子设备及存储介质
JP7270278B2 (ja) * 2021-05-19 2023-05-10 株式会社ユニバーサルエンターテインメント 遊技機
CN115017004B (zh) * 2021-12-27 2023-07-07 荣耀终端有限公司 进程监控方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331330A (ja) * 2000-05-19 2001-11-30 Fujitsu Ltd プロセス異常検知及び復旧システム
JP2007133863A (ja) * 2006-10-13 2007-05-31 Nippon Telegr & Teleph Corp <Ntt> サーバ再開方法、サーバ再開装置、サーバ再開プログラム
JP2008003691A (ja) * 2006-06-20 2008-01-10 Hitachi Ltd 計算機のプロセス回復方法、チェックポイントリスタートシステム
CN101322104A (zh) * 2005-12-30 2008-12-10 英特尔公司 多处理器系统中的故障恢复引导

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3253883B2 (ja) * 1997-01-31 2002-02-04 株式会社東芝 プロセスリスタート方法及びプロセス監視装置
US7373548B2 (en) * 2003-08-29 2008-05-13 Intel Corporation Hardware recovery in a multi-threaded architecture
US9189230B2 (en) * 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US9038070B2 (en) * 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
JP2006139621A (ja) 2004-11-12 2006-06-01 Nec Electronics Corp マルチプロセッシングシステム及びマルチプロセッシング方法
JP5098456B2 (ja) 2007-06-15 2012-12-12 村田機械株式会社 プロセス状態監視装置
US7516365B2 (en) * 2007-07-27 2009-04-07 Sun Microsystems, Inc. System and method for split hardware transactions
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
US8881157B2 (en) * 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
US8832663B2 (en) * 2009-11-23 2014-09-09 International Business Machines Corporation Thread serialization and disablement tool
US8549523B2 (en) * 2009-11-23 2013-10-01 International Business Machines Corporation Performing runtime analysis and control of folding identified threads by assuming context of another thread and executing in lieu of another thread folding tool
US20110161961A1 (en) * 2009-12-29 2011-06-30 Nokia Corporation Method and apparatus for optimized information transmission using dedicated threads
US8612730B2 (en) * 2010-06-08 2013-12-17 International Business Machines Corporation Hardware assist thread for dynamic performance profiling
US8464104B2 (en) * 2010-09-10 2013-06-11 International Business Machines Corporation Mobility of versioned workload partitions
US8589922B2 (en) * 2010-10-08 2013-11-19 International Business Machines Corporation Performance monitor design for counting events generated by thread groups
WO2012124077A1 (ja) * 2011-03-16 2012-09-20 富士通株式会社 マルチコアプロセッサシステムおよびスケジューリング方法
US9152510B2 (en) * 2012-07-13 2015-10-06 International Business Machines Corporation Hardware recovery in multi-threaded processor
US9063906B2 (en) * 2012-09-27 2015-06-23 International Business Machines Corporation Thread sparing between cores in a multi-threaded processor
US9280388B2 (en) * 2013-01-22 2016-03-08 Oracle International Corporation Method and apparatus for efficient scheduling of multithreaded programs
US9495159B2 (en) * 2013-09-27 2016-11-15 Intel Corporation Two level re-order buffer
US9678851B2 (en) * 2013-10-14 2017-06-13 International Business Machines Corporation Continuous monitoring and analysis of software events
KR101671372B1 (ko) * 2014-01-16 2016-11-16 한국전자통신연구원 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법
US9652247B2 (en) * 2014-01-24 2017-05-16 Nec Corporation Capturing snapshots of offload applications on many-core coprocessors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001331330A (ja) * 2000-05-19 2001-11-30 Fujitsu Ltd プロセス異常検知及び復旧システム
CN101322104A (zh) * 2005-12-30 2008-12-10 英特尔公司 多处理器系统中的故障恢复引导
JP2008003691A (ja) * 2006-06-20 2008-01-10 Hitachi Ltd 計算機のプロセス回復方法、チェックポイントリスタートシステム
JP2007133863A (ja) * 2006-10-13 2007-05-31 Nippon Telegr & Teleph Corp <Ntt> サーバ再開方法、サーバ再開装置、サーバ再開プログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446933A (zh) * 2014-09-26 2016-03-30 扬智科技股份有限公司 多核心处理器的调试系统与调试方法
US9852038B2 (en) 2014-09-26 2017-12-26 Ali Corporation Debugging system and debugging method of multi-core processor
CN105446933B (zh) * 2014-09-26 2018-04-24 扬智科技股份有限公司 多核心处理器的调试系统与调试方法
CN104298563A (zh) * 2014-10-13 2015-01-21 中国外汇交易中心 一种用于管理进程的方法及系统
CN104298563B (zh) * 2014-10-13 2018-08-21 中国外汇交易中心 一种用于管理进程的方法及系统
CN107015848A (zh) * 2016-01-21 2017-08-04 罗伯特·博世有限公司 用于监视和操控事件导向的操作系统中的准并行的实施线程的方法和设备

Also Published As

Publication number Publication date
US9335998B2 (en) 2016-05-10
JPWO2012046302A1 (ja) 2014-02-24
WO2012046302A1 (ja) 2012-04-12
JP5516747B2 (ja) 2014-06-11
EP2626786A1 (en) 2013-08-14
EP2626786A4 (en) 2015-04-01
CN103154893B (zh) 2016-05-04
EP2626786B1 (en) 2016-04-20
US20130238882A1 (en) 2013-09-12

Similar Documents

Publication Publication Date Title
CN103154893A (zh) 多核处理器系统、监视控制方法以及监视控制程序
US9652332B2 (en) Information processing apparatus and virtual machine migration method
US9940598B2 (en) Apparatus and method for controlling execution workflows
JP5966927B2 (ja) 分散処理装置及び分散処理システム
CN104102535B (zh) 进程迁移方法和可迁移操作系统
CN114637475A (zh) 一种分布式存储系统控制方法、装置及可读存储介质
CN103677659A (zh) 信息处理设备和复制控制方法
JP2010176303A (ja) バッチ処理システムおよびこれに用いる情報端末装置、バッチ処理のリカバリ方法
JP4992740B2 (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
JP2014178981A (ja) フォールトトレラントサーバ
CN111787045A (zh) 从私有云到公有云的迁移方法和装置
JP7192388B2 (ja) 並列処理装置、並列演算実行プログラムおよびバックアップ方法
JP5672521B2 (ja) コンピュータシステム、およびそのチェックポイントリスタート方法
JP6677021B2 (ja) 情報処理装置、情報処理方法、プログラム
JP2009271839A (ja) 情報処理システム、情報処理方法、プログラム、及び、記録媒体
CN113742034A (zh) 事件处理方法与装置、计算机可读存储介质、电子设备
JP2010231295A (ja) 解析システム
JP5791524B2 (ja) Os動作装置及びos動作プログラム
CN113742139A (zh) 用于提供对资源的访问的方法和系统
JP2016167212A (ja) 情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラム
JP2010033131A (ja) 管理装置及びプログラム
JP2008287512A (ja) 計算機及び分散データ処理システム及びデータ処理方法及びプログラム
CN107315624B (zh) 信息处理方法及虚拟化管理器
JP6819061B2 (ja) 情報処理装置、プロセス切り替え方法及びプログラム
JP2020149573A (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法、及び、ストレージ制御プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160504

Termination date: 20181005

CF01 Termination of patent right due to non-payment of annual fee