KR102251451B1 - 정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램 - Google Patents

정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램 Download PDF

Info

Publication number
KR102251451B1
KR102251451B1 KR1020207031064A KR20207031064A KR102251451B1 KR 102251451 B1 KR102251451 B1 KR 102251451B1 KR 1020207031064 A KR1020207031064 A KR 1020207031064A KR 20207031064 A KR20207031064 A KR 20207031064A KR 102251451 B1 KR102251451 B1 KR 102251451B1
Authority
KR
South Korea
Prior art keywords
general
information
hardware
application
real
Prior art date
Application number
KR1020207031064A
Other languages
English (en)
Other versions
KR20200128589A (ko
Inventor
유리카 데라다
아키오 이데하라
다케히사 미즈구치
료헤이 구바
신이치 오치아이
히로키 고나카
Original Assignee
미쓰비시덴키 가부시키가이샤
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 미쓰비시덴키 가부시키가이샤 filed Critical 미쓰비시덴키 가부시키가이샤
Publication of KR20200128589A publication Critical patent/KR20200128589A/ko
Application granted granted Critical
Publication of KR102251451B1 publication Critical patent/KR102251451B1/ko

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)

Abstract

정보 처리 장치(100)에 있어서, 제 1 취득부(200) 및 제 2 취득부(230)와 같은 취득부는, 실시간 어플리케이션과 복수의 범용 어플리케이션이 실행되는 시운전 페이즈에 있어서, 범용 OS 정보를 취득한다. 범용 OS 정보는, 시운전 페이즈에서 실행되는 복수의 범용 어플리케이션의 각각에 의한 하드웨어의 사용에 대한 정보이다. 관리부(220)는, 범용 어플리케이션마다, 취득부에 의해 취득된 범용 OS 정보에 근거하여, 하드웨어의 사용을 제한하기 위한 조건이 만족되어 있는지 여부를 판정한다. 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 실시간 어플리케이션과 복수의 범용 어플리케이션이 실행되는 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션에 의한 하드웨어의 사용을 제한한다.

Description

정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램
본 발명은, 정보 처리 장치, 튜닝 방법 및 튜닝 프로그램에 관한 것이다.
근래에는, CPU의 고(高)성능화에 수반하는 가상화 기술의 발전에 의해, 1대의 정보 처리 시스템에 복수의 OS를 탑재하는 것이 가능하다. 그와 같은 복수의 OS가 탑재된 정보 처리 시스템에서, 각 OS의 동작을 관리하는 소프트웨어를 하이퍼바이저라고 부른다. 동작하는 OS를 게스트 OS라고 부른다. 하이퍼바이저를 이용하여, 단일 하드웨어 플랫폼 상에서 복수의 OS를 동작시키는 기술은, 내장형 시스템에서도 이용되고 있다. 이와 같은 시스템에서는, 리얼타임(실시간)성이 높은 처리를 행하는 실시간 OS와, 정보 처리를 행하는 Windows(등록상표) 등의 범용 OS를 동시 실행하는 환경이 이용된다. 그러나, 이들의 OS는 동일한 하드웨어를 사용하고 있다. 그 때문에, 범용 OS의 처리 내용에 따라서는, 버스가 장시간 전유(專有)되어 버리는 경우가 있다. 그 결과, 실시간 OS의 실시간 응답 성능에 대한 오버헤드(overhead)가 발생할 가능성이 있다. 「CPU」는, Central Processing Unit의 약어이다. 「OS」는, Operating System의 약어이다.
특허문헌 1에는, 우선도가 낮은 가상 서버의 DMA 유량이 미리 설정한 임계값보다 많은 경우에, 할당하는 CPU 시간을 줄임으로써, 우선도가 높은 가상 서버가 I/O로의 액세스를 행하는 것을 가능하게 하는 기술이 기재되어 있다. 「DMA」는, Direct Memory Access의 약어이다. 「I/O」는, Input/Output의 약어이다.
일본 특허공개 2008-176482호 공보
특허문헌 1에 기재된 기술에 있어서는, 우선도가 낮은 가상 서버에 할당하는 CPU 시간을 줄임으로써, 우선도가 낮은 가상 서버의, 다른 가상 서버의 처리에 영향을 주지 않는 처리도 정지해 버린다.
본 발명은, 실시간 OS 이외의 OS의, 실시간 OS의 처리에 영향을 주지 않는 처리를 멈추지 않고, 실시간 OS가 우선적으로 하드웨어로의 액세스를 행하는 것을 가능하게 하는 것을 목적으로 한다.
본 발명의 일 태양에 따른 정보 처리 장치는,
하드웨어와,
실시간 오퍼레이팅 시스템을 통해서 상기 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 실시간 어플리케이션과, 각각 비실시간 오퍼레이팅 시스템을 통해서 상기 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 복수의 범용 어플리케이션이 실행되는 시운전 페이즈에 있어서, 상기 복수의 범용 어플리케이션의 각각에 의한 상기 하드웨어의 사용에 대한 정보인 범용 OS 정보를 취득하는 취득부와,
범용 어플리케이션마다, 상기 취득부에 의해 취득된 범용 OS 정보에 근거하여, 상기 하드웨어의 사용을 제한하기 위한 조건이 만족되어 있는지 여부를 판정하고, 상기 조건이 만족되어 있다고 판정한 경우, 상기 실시간 어플리케이션과 상기 복수의 범용 어플리케이션이 실행되는 실제 운용 페이즈에 있서, 해당하는 범용 어플리케이션에 의한 상기 하드웨어의 사용을 제한하는 관리부
를 구비한다.
본 발명에서는, 실시간 OS 이외의 OS 상에서 동작하는 어플리케이션 중, 시운전 페이즈에서 얻어진 정보에 근거하여 일정한 조건을 만족시키고 있다고 판정된 어플리케이션에 대해서, 실제 운용 페이즈에서 하드웨어의 사용이 제한된다. 조건을 만족시키지 않는다고 판정된 어플리케이션에 대해서 실제 운용 페이즈에서 하드웨어의 사용을 제한하지 않음으로써, 실시간 OS 이외의 OS의, 실시간 OS의 처리에 영향을 주지 않는 처리를 멈추지 않고, 실시간 OS에 우선적으로 하드웨어로의 액세스를 행하게 할 수 있다.
도 1은 실시형태 1에 따른 정보 처리 장치의 소프트웨어 구성을 나타내는 블럭도이다.
도 2는 실시형태 1에 따른 정보 처리 장치의 하드웨어 구성을 나타내는 블럭도이다.
도 3은 실시형태 1에 따른 정보 처리 장치의 기능 구성을 나타내는 블럭도이다.
도 4는 실시형태 1에 따른 정보 처리 장치의 HV 메모리 영역 내의 테이블군을 나타내는 블럭도이다.
도 5는 실시형태 1에 따른 정보 처리 장치의 RTOS 정보 테이블예를 나타내는 도면이다.
도 6은 실시형태 1에 따른 정보 처리 장치의 범용 OS 정보 테이블예를 나타내는 도면이다.
도 7은 실시형태 1에 따른 정보 처리 장치의 임계값 테이블예를 나타내는 도면이다.
도 8은 실시형태 1에 따른 정보 처리 장치의 튜닝 테이블예를 나타내는 도면이다.
도 9는 실시형태 1에 따른 정보 처리 장치의 동작을 나타내는 플로 차트이다.
도 10은 실시형태 1에 따른 정보 처리 장치의 동작을 나타내는 플로 차트이다.
도 11은 실시형태 1에 따른 정보 처리 장치의 동작을 나타내는 플로 차트이다.
도 12는 실시형태 1에 따른 정보 처리 장치의 동작을 나타내는 플로 차트이다.
도 13은 실시형태 1에 따른 정보 처리 장치의 동작을 나타내는 플로 차트이다.
도 14는 실시형태 2에 따른 정보 처리 장치의 동작을 나타내는 플로 차트이다.
도 15는 실시형태 2에 따른 정보 처리 장치의 동작을 나타내는 플로 차트이다.
이하, 본 발명의 실시형태에 대해서, 도면을 이용해서 설명한다. 각 도면 중, 동일 또는 상당하는 부분에는, 동일 부호를 붙이고 있다. 실시형태의 설명에 있어서, 동일 또는 상당하는 부분에 대해서는, 설명을 적절히 생략 또는 간략화한다. 한편, 본 발명은, 이하에 설명하는 실시형태로 한정되는 것은 아니고, 필요에 따라서 여러 가지의 변경이 가능하다. 예를 들면, 이하에 설명하는 실시형태 중, 2개 이상의 실시형태가 조합되어 실시되어도 상관없다. 또는, 이하에 설명하는 실시형태 중, 1개의 실시형태 또는 2개 이상의 실시형태의 조합이 부분적으로 실시되어도 상관없다.
실시형태 1.
본 실시형태에 대해서, 도 1 내지 도 13을 이용해서 설명한다.
***구성의 설명***
도 1 내지 도 3을 참조하여, 본 실시형태에 따른 정보 처리 장치(100)의 구성을 설명한다.
정보 처리 장치(100)는, 복수의 OS를 동작시키는 컴퓨터이다.
도 1에 나타내는 바와 같이, 정보 처리 장치(100)에서는, 실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어가 동작한다. 실시간 어플리케이션(101A)은, 실시간 OS(102A)를 통해서 하드웨어를 사용하여 동작하는 어플리케이션 프로그램이다. 복수의 범용 어플리케이션(101B)은, 각각 범용 OS(102B)를 통해서 하드웨어를 사용하여 동작하는 어플리케이션 프로그램이다. 범용 OS(102B)는, 비실시간 OS이다. 하이퍼바이저(103)는, 본 실시형태에 따른 튜닝 프로그램에 상당한다.
도 2에 나타내는 바와 같이, 정보 처리 장치(100)는, 프로세서(104), 메모리(108), I/O 디바이스(109), 그래픽 디바이스(111) 및 DMA 컨트롤러(120)와 같은 복수 종류의 하드웨어를 구비한다. 프로세서(104)는, 버스(110)를 통해서, 메모리(108), I/O 디바이스(109), 그래픽 디바이스(111) 및 DMA 컨트롤러(120)와 같은 다른 하드웨어와 접속되고, 이들 다른 하드웨어를 제어한다. 이들의 버스(110)를 통해서 접속되어 있는 하드웨어는, 프로세서(104)에 의한 관리하에서 서로 데이터의 송수신 등을 행할 수 있다.
도 3에 나타내는 바와 같이, 정보 처리 장치(100)는, 기능 요소로서, 제 1 취득부(200)와, 제 1 제어부(210)와, 관리부(220)와, 제 2 취득부(230)와, 제 2 제어부(240)를 구비한다. 제 1 취득부(200)는, 인터럽트(interrupt) 검출부(201)와, 주기 취득부(202)를 구비한다. 제 1 제어부(210)는, 이용률 취득부(211)와, 주파수 취득부(212)와, 주파수 변경부(213)를 구비한다. 관리부(220)는, 데이터 판독부(221)와, 데이터 비교부(222)와, 데이터 갱신부(223)와, 테이블 작성부(224)와, 파라미터값 산출부(225)를 구비한다. 제 2 취득부(230)는, 요구 검출부(231)와, 종료 검출부(232)를 구비한다. 제 2 제어부(240)는, 명령 검출부(241)와, 사이즈 취득부(242)와, 사이즈 변경부(243)와, 시각 취득부(244)와, 빈도 취득부(245)를 구비한다.
제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)의 기능은, 소프트웨어에 의해 실현된다. 구체적으로는, 제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)의 기능은, 하이퍼바이저(103)에 의해 실현된다. 하이퍼바이저(103)는, 제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)에 의해 행해지는 순서를 각각 제 1 취득 순서, 제 1 제어 순서, 관리 순서, 제 2 취득 순서 및 제 2 제어 순서로서 컴퓨터로 하여금 실행하게 하는 프로그램이다. 하이퍼바이저(103)는, 컴퓨터 판독 가능한 매체에 기록되어 제공되어도 되고, 기록 매체에 저장되어 제공되어도 되고, 프로그램 프로덕트로서 제공되어도 된다.
프로세서(104)는, 실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어를 실행하는 장치이다. 프로세서(104)는, 구체적으로는, 멀티코어 CPU이다.
프로세서(104)는, 제 1 코어(104A)와, 제 2 코어(104B)를 구비한다.
제 1 코어(104A)는, 하이퍼바이저(103), 실시간 OS(102A) 및 실시간 어플리케이션(101A)을 동작시킨다. 제 2 코어(104B)는, 범용 OS(102B) 및 범용 어플리케이션(101B)을 동작시킨다.
프로세서(104)는, 하드웨어로서, 주파수 변경 기구(105)와, 인터럽트 컨트롤러(106)와, 클럭 제너레이터(107)를 더 구비한다.
주파수 변경 기구(105)는, 클럭 제너레이터(107)를 제어하는 것에 의해, 범용 어플리케이션(101B)이 사용하는 제 2 코어(104B)의 동작 주파수를 변경하는 기구이다. 인터럽트 컨트롤러(106)는, I/O 디바이스(109)로부터의 인터럽트를 검출하고, 실시간 OS(102A) 및 범용 OS(102B)와 같은 게스트 OS로의 인터럽트 신호를 발생시키는 장치이다. 클럭 제너레이터(107)는, 동작 주파수에 대응하는 클록 신호를 생성하는 장치이다.
메모리(108)는, 실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어를 기억하는 장치이다. 메모리(108)는, 예를 들면, RAM, 플래시 메모리 또는 이들의 조합이다. 「RAM」은, Random Access Memory의 약어이다.
메모리(108)는, 하이퍼바이저(103)가 데이터 관리에 필요로 하는 HV 메모리 영역(108C)과, 그 밖의 메모리 영역(108A)을 구비한다.
I/O 디바이스(109)는, 입력 기기 또는 디스플레이이다. 입력 기기는, 실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어로의 데이터의 입력을 위해서 유저에 의해 조작되는 기기이다. 입력 기기는, 예를 들면, 마우스, 키보드, 터치 패널, 또는, 이들 중 몇 가지, 혹은, 모든 조합이다. 디스플레이는, 실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어로부터 출력되는 데이터를 화면에 표시하는 기기이다. 디스플레이는, 예를 들면, LCD이다. 「LCD」는, Liquid Crystal Display의 약어이다.
그래픽 디바이스(111)는, 디스플레이에 화상을 출력하는 장치이다. 그래픽 디바이스(111)는, 예를 들면, 그래픽 카드이다.
DMA 컨트롤러(120)는, DMA 처리를 실행하는 장치이다.
실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어는, 메모리(108)로부터 프로세서(104)로 판독되고, 프로세서(104)에 의해 실행된다.
실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어는, 보조 기억 장치에 기억되어 있어도 된다. 보조 기억 장치는, 예를 들면, HDD, 플래시 메모리 또는 이들의 조합이다. 「HDD」는, Hard Disk Drive의 약어이다. 소프트웨어는, 보조 기억 장치에 기억되어 있는 경우, 메모리(108)에 로드되고, 프로세서(104)에 의해 실행된다.
정보 처리 장치(100)는, 프로세서(104)를 대체하는 복수의 프로세서를 구비하고 있어도 된다. 이들 복수의 프로세서는, 소프트웨어의 실행을 분담한다. 각각의 프로세서는, 구체적으로는, 싱글코어 CPU 또는 멀티코어 CPU이다.
실시간 어플리케이션(101A), 복수의 범용 어플리케이션(101B), 실시간 OS(102A), 범용 OS(102B) 및 하이퍼바이저(103)와 같은 소프트웨어에 의해 이용, 처리 또는 출력되는 데이터, 정보, 신호값 및 변수값은, 메모리(108), 보조 기억 장치, 또는, 프로세서(104) 내의 레지스터 또는 캐시 메모리에 기억된다.
도 4를 참조하여, 하이퍼바이저(103)가 사용하는 HV 메모리 영역(108C)에 저장되는 테이블군에 대해 설명한다.
HV 메모리 영역(108C)에는, 범용 OS(102B)가 실행하는 어플리케이션의 실행 방법에 대해서, 제한을 두기 위해서 필요한 4개의 테이블이 저장된다. 구체적으로는, RTOS 정보 테이블(300)과, 범용 OS 정보 테이블(301)과, 임계값 테이블(302)과, 튜닝 테이블(303)이 저장된다. 「RTOS」는, Real-Time Operating System의 약어이다.
RTOS 정보 테이블(300), 범용 OS 정보 테이블(301) 및 임계값 테이블(302)은, 시스템의 개발자인 유저가 작성하는 테이블이다. 튜닝 테이블(303)은, 하이퍼바이저(103)가 작성하는 테이블이다.
RTOS 정보 테이블(300)은, 실시간 OS(102A)의 인터럽트 주기의 정보를 수집하는 대상의 어플리케이션명을 지정하는 테이블이다. 데이터 갱신부(223)에 의해 수집된 데이터가 RTOS 정보 테이블(300)에 보존된다.
범용 OS 정보 테이블(301)은, 범용 OS(102B)로부터 취득하고자 하는 정보를 지정하는 테이블이다. 대상의 어플리케이션명을 지정함으로써, 데이터 갱신부(223)에 의해 수집된 데이터가 범용 OS 정보 테이블(301)에 보존된다.
임계값 테이블(302)은, 범용 OS(102B)의 처리를 제한할 때에, 그 처리가 제한 대상인지 여부, 제한 대상이었던 경우에 어떻게 제한할지를 판단하기 위한 임계값을 기록하는 테이블이다. 어느 처리가 제한 대상인지 여부는, 그 처리가 실시 조건을 만족시키는지 여부에 의해 판단된다. 임계값 테이블(302)은, 구체적으로는, 범용 OS(102B)의 처리에 제한을 둘 때의 제한을 실행하는 방법과, 제한의 실시 조건을 지정하는 테이블이다.
튜닝 테이블(303)은, 하이퍼바이저(103)가, 제한 대상의 처리에 대해서, 어떻게 튜닝을 행할지를 산출한 결과를 기록하는 테이블이다. 튜닝 테이블(303)에는, 임계값 테이블(302)에 설정된 제한의 값이 기록된다.
도 5에, RTOS 정보 테이블(300)의 일례를 나타낸다. 이 예에서는, 실시간 OS(102A) 상에서 사용되는 실시간 어플리케이션(101A) 「ABC.exe」가 지정되어 있다. 그리고, 지정된 실시간 어플리케이션(101A)에 대해 수집된 인터럽트의 주기의 정보가 보존되어 있다.
도 6에, 범용 OS 정보 테이블(301)의 일례를 나타낸다. 범용 OS 정보 테이블(301)에서는, 유저가 임의의 항목을 지정하는 것이 가능하다. 단, 수집하는 항목에 대한 부하 상태를 판단하기 위해서, 각 처리의 실행 시간이 반드시 포함되어 있다. 이 예에서는, 범용 OS(102B) 상에서 사용되는 범용 어플리케이션(101B) 「XXXX.exe」가 지정되어 있다. 지정된 범용 어플리케이션(101B)에는, DMA 처리가 포함되어 있다. 그리고, 지정된 범용 어플리케이션(101B)에 대해 수집된 DMA 처리 개시 시각, DMA 처리 종료 시각, DMA 처리 횟수 및 DMA 전송 사이즈의 정보가 보존되어 있다. DMA 이외의 부하에 관련하여 수집된 CPU 이용률 등의 정보도 보존되어 있다.
도 7에, 임계값 테이블(302)의 일례를 나타낸다. 임계값 테이블(302)에서는, 범용 OS(102B)의 처리에 대해서, 실행 방법에 제한이 필요한지를 판단하기 위한 실시 조건과, 그 제한을 두기 위한 튜닝 방법이 지정된다. 이 예에서는, CPU 이용률이 임계값 「70%」를 초과한 경우에, 어떻게 CPU 이용률을 제한할지가 지정되어 있다. DMA 전송 시간이 실시간 OS(102A)의 인터럽트 주기를 초과한 경우에, 초과 시간의 비율이 임계값 「20%」를 초과하는지 여부에 의해, 어떻게 DMA 전송 처리의 실행을 제한할지가 더 지정되어 있다. 제한 항목 및 제한값은 유저가 임의로 결정할 수 있다.
도 8에, 튜닝 테이블(303)의 일례를 나타낸다. 튜닝 테이블(303)에서는, 하이퍼바이저(103)가 산출한, 범용 OS(102B)의 처리에 제한을 두기 위해서 사용하는 파라미터값이 기록된다. 이 예에서는, 범용 OS(102B) 상에서 사용되는 범용 어플리케이션(101B) 「XXXX.exe」에 대해서, 제한을 두기 위한 튜닝 방법과, 산출된 파라미터값 「αHz」이 기록되어 있다.
***동작의 설명***
도 9 내지 도 13을 참조하여, 본 실시형태에 따른 정보 처리 장치(100)의 동작을 설명한다. 정보 처리 장치(100)의 동작은, 본 실시형태에 따른 튜닝 방법에 상당한다.
튜닝의 실시 순서로서는, 크게 나누어 4개의 페이즈가 있다. 구체적으로는, 도 9에 나타내는, 유저에 의한 시운전의 준비 페이즈와, 도 10에 나타내는, 하이퍼바이저(103)의 시스템 시운전 페이즈와, 도 11 및 도 12에 나타내는, 하이퍼바이저(103)의 분석 및 튜닝 페이즈와, 도 13에 나타내는 실제 운용 페이즈가 있다.
도 9를 참조하여, 유저에 의한 시운전의 준비 페이즈를 설명한다.
스텝 S11에서, 유저에 의해 작성된 RTOS 정보 테이블(300), 범용 OS 정보 테이블(301) 및 임계값 테이블(302)이 입력된다.
스텝 S12에서, 스텝 S11에서 입력된 3개의 테이블이, 하이퍼바이저(103)가 사용하는 HV 메모리 영역(108C)에 저장된다.
도 10을 참조하여, 하이퍼바이저(103)의 시스템 시운전 페이즈를 설명한다.
유저가, 정보 처리 장치(100)의 전원을 켜고, 하이퍼바이저(103)의 시스템 시운전 페이즈를 개시한 것으로 한다.
스텝 S21에서, 관리부(220)의 데이터 판독부(221)는, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)을 HV 메모리 영역(108C)으로부터 판독한다.
스텝 S22에서, 관리부(220)는, 실제 운용 페이즈에서 실행되는 모든 어플리케이션을 실행하고, 환경을 실제 운용 상태와 동일한 환경으로 한다. 실행되는 어플리케이션에는, 예를 들면, 메모리(108)에 데이터를 카피하는 어플리케이션, 센서 정보를 취득하는 어플리케이션, 및, 데이터를 해석하는 어플리케이션이 포함된다. 이들 어플리케이션은, 실제의 시스템 가동 시의 I/O의 사용 상황에 관한 정보를 취득하는 것을 목적으로 하여 실행된다. 목적을 달성할 수 있다면, 전체 어플리케이션을 실행하는 대신에, 일부의 어플리케이션만을 실행해도 된다.
스텝 S23에서, 제 1 취득부(200), 제 1 제어부(210), 제 2 취득부(230) 및 제 2 제어부(240)는, RTOS 정보 테이블(300)과 범용 OS 정보 테이블(301)에 기록되어 있는 항목에 대해서, 시운전 시의 각종 데이터를 수집한다. 구체적으로는, 병렬적으로 이하의 4개의 처리가 행해진다.
제 1 처리로서, 제 1 취득부(200)는, 현재 동작 중인 실시간 어플리케이션(101A)의 어플리케이션명을 취득함과 더불어, 실시간 OS(102A)의 인터럽트 주기의 값을 취득한다.
보다 구체적으로는, 제 1 취득부(200)의 인터럽트 검출부(201)는, 실시간 OS(102A)에 주기적인 인터럽트가 발행되고 있는 것을 검출한다. 제 1 취득부(200)의 주기 취득부(202)는, 인터럽트 검출부(201)가 주기적인 인터럽트가 있는 것을 검출한 경우에, 그 주기의 값을 취득한다.
제 2 처리로서, 제 1 제어부(210)는, 현재 동작 중인 범용 어플리케이션(101B)의 어플리케이션명을 취득함과 더불어, 범용 OS(102B)를 동작시키고 있는 제 2 코어(104B)의 이용률인 CPU 이용률의 값을 취득한다.
보다 구체적으로는, 제 1 제어부(210)의 이용률 취득부(211)는, 가동 중인 범용 OS(102B)가 사용하는 제 2 코어(104B)의 CPU 이용률의 값을 취득한다.
제 3 처리로서, 제 2 취득부(230)는, 현재 동작 중인 범용 어플리케이션(101B)의 어플리케이션명을 취득함과 더불어, 그 범용 어플리케이션(101B)의 실행 시간의 값을 취득한다.
보다 구체적으로는, 제 2 취득부(230)의 요구 검출부(231)는, 가동 중인 범용 OS(102B)에 대해서, 범용 어플리케이션(101B)의 실행이 개시한 것을 검출하고, 그 범용 어플리케이션(101B)의 실행 개시 시각을 메모리(108)에 기록한다. 제 2 취득부(230)의 종료 검출부(232)는, 그 범용 어플리케이션(101B)의 실행이 종료된 것을 검출하고, 그 범용 어플리케이션(101B)의 실행 종료 시각을 메모리(108)에 기록한다. 종료 검출부(232)는, 실행 개시 시각과 실행 종료 시각의 차인 실행 시간을 산출한다.
제 4 처리로서, 제 2 제어부(240)는, 현재 동작 중인 범용 어플리케이션(101B)의 어플리케이션명을 취득함과 더불어, 범용 OS(102B)가 실시하는 DMA 전송의, 1회의 전송 데이터 사이즈, 전송 처리 개시 시각, 전송 처리 종료 시각 및 전송 요구수의 값을 취득한다.
보다 구체적으로는, 제 2 제어부(240)의 명령 검출부(241)는, 가동 중인 범용 OS(102B)가, DMA 명령을 요구하고 있는 것을 검출하고, 사이즈 취득부(242)를 기동한다. 제 2 제어부(240)의 사이즈 취득부(242)는, 요구되고 있는 DMA의 데이터 사이즈의 값과 현재의 1회의 전송 사이즈의 값을 취득한다. 제 2 제어부(240)의 시각 취득부(244)는, DMA의 처리 개시 시각 및 처리 종료 시각의 값을 취득한다. 제 2 제어부(240)의 빈도 취득부(245)는, 단위 시간당 DMA 전송이 요구된 빈도인 처리 횟수의 값을 취득한다.
제 1 처리로부터 제 4 처리에 있어서의 각 값의 취득에는, 프로세서(104)의 레지스터 정보, DMA 컨트롤러(120)의 레지스터 정보, 대응하고 있는 경우는 하이퍼바이저 콜(hypervisor call) 또는 OS의 시스템 콜(system call)이 이용된다.
스텝 S24에서, 관리부(220)의 데이터 갱신부(223)는, 스텝 S23에서 수집된 데이터를, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)에 보존한다.
구체적으로는, 데이터 갱신부(223)는, 제 1 취득부(200)로부터, 어플리케이션명과 인터럽트 주기의 값을 수취한다. 데이터 갱신부(223)는, RTOS 정보 테이블(300)에, 수취한 어플리케이션명과 인터럽트 주기의 값을 보존한다. 데이터 갱신부(223)는, 제 1 제어부(210)로부터, 어플리케이션명과 CPU 이용률의 값을 수취한다. 데이터 갱신부(223)는, 제 2 취득부(230)로부터, 어플리케이션명과 실행 시간의 값을 수취한다. 데이터 갱신부(223)는, 제 2 제어부(240)로부터, 어플리케이션명과 DMA 전송의, 1회의 전송 데이터 사이즈, 전송 처리 개시 시각, 전송 처리 종료 시각 및 전송 요구수의 값을 수취한다. 데이터 갱신부(223)는, 범용 OS 정보 테이블(301)에, 수취한 어플리케이션명과 CPU 이용률의 값과 실행 시간의 값과 DMA 전송의, 1회의 전송 데이터 사이즈, 전송 처리 개시 시각, 전송 처리 종료 시각 및 전송 요구수의 값을 보존한다.
보다 구체적으로는, 데이터 갱신부(223)는, 주기 취득부(202)에 의해 취득된 주기의 값을, 대응하는 실시간 어플리케이션(101A)의 이름과 함께 RTOS 정보 테이블(300)에 기입한다. 데이터 갱신부(223)는, 이용률 취득부(211)에 의해 취득된 CPU 이용률의 값을, 대응하는 범용 어플리케이션(101B)의 이름과 함께 범용 OS 정보 테이블(301)에 기입한다. 데이터 갱신부(223)는, 종료 검출부(232)에 의해 산출된 실행 시간의 값을, 대응하는 범용 어플리케이션(101B)의 이름과 함께 범용 OS 정보 테이블(301)에 더 기입한다. 데이터 갱신부(223)는, 사이즈 취득부(242)에 의해 취득된 전송 사이즈의 값과, 시각 취득부(244)에 의해 취득된 처리 개시 시각 및 처리 종료 시각의 값과, 빈도 취득부(245)에 의해 취득된 처리 횟수의 값을, 대응하는 범용 어플리케이션(101B)의 이름과 함께 범용 OS 정보 테이블(301)에 더 기입한다.
스텝 S25에서, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)의 모든 항목에 대해 평가가 종료되어 있지 않는 경우, 스텝 S23 이후의 처리가 반복된다. 종료되어 있는 경우, 하이퍼바이저(103)의 시스템 시운전 페이즈가 종료된다.
도 11 및 도 12를 참조하여, 하이퍼바이저(103)의 분석 및 튜닝 페이즈를 설명한다.
스텝 S31에서, 관리부(220)의 데이터 판독부(221)는, 임계값 테이블(302)과, 하이퍼바이저(103)의 시스템 시운전 페이즈에서 갱신된 RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)을 판독한다.
스텝 S32에서, 관리부(220)의 데이터 비교부(222)는, RTOS 정보 테이블(300)과 범용 OS 정보 테이블(301)을 비교하여, 범용 OS(102B)의 모든 처리에 대해서, 실시간 OS(102A)의 정주기(定週期) 인터럽트가 발생하는 시간에, 범용 OS(102B)의 처리가 겹쳐 있는지 여부를 판정한다. 겹쳐 있는 처리는, 튜닝이 필요한 처리, 즉, 튜닝 대상이라고 판단된다. 예를 들면, 실시간 OS(102A)에서 인터럽트가 발행될 때, 어느 범용 어플리케이션(101B)이 한창 메모리 카피(memory copy)를 행하고 있으면, 그 범용 어플리케이션(101B)은 튜닝 대상이라고 판단된다. 튜닝 대상이 검출된 경우, 스텝 S33의 처리가 행해진다. 튜닝 대상이 없는 경우는, 스텝 S39의 처리가 행해진다.
스텝 S33에서, 데이터 비교부(222)는, 튜닝 대상에 대해서, 어떤 항목이 임계값을 초과하고 있는지를, 임계값 테이블(302)과 범용 OS 정보 테이블(301)을 비교하여 판단한다. 데이터 비교부(222)는, 임계값을 초과하고 있는 항목에 대해서, 임계값 테이블(302)에 쓰여져 있는 튜닝 방법을 식별한다.
스텝 S34에서, 1회째의 튜닝의 경우는, 스텝 S35의 처리가 행해진다. 2회째 이후의 튜닝의 경우는, 스텝 S36의 처리가 행해진다.
스텝 S35에서, 관리부(220)의 테이블 작성부(224)는, HV 메모리 영역(108C)에 튜닝 테이블(303)을 작성한다. 그 후, 스텝 S36의 처리가 행해진다.
스텝 S36에서, 관리부(220)의 파라미터값 산출부(225)는, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)의 정보에 근거하여, 튜닝 테이블(303)에 설정하는 파라미터값을 산출한다. 파라미터값의 산출은, 범용 OS(102B)의 처리의 파라미터값을 어떻게 변경한 경우에, 그 처리가 실시간 OS(102A)의 인터럽트 주기와 겹쳐지지 않게 되는지를 토대로 행해진다.
스텝 S37에서, 관리부(220)의 데이터 갱신부(223)는, 스텝 S36에서 산출된 파라미터값을, 튜닝 테이블(303)에 반영한다.
스텝 S38에서, 데이터 비교부(222)는, 모든 튜닝 대상에 대해서, 임계값 테이블(302)의 실시 조건을 만족시키는 항목의 유무의 확인을 끝내고 있는지, 남은 건(remaining case)이 있는지를 판정한다. 아직 확인을 끝내지 않은 튜닝 대상이 남아 있는 경우에는, 스텝 S33 이후의 처리가 반복된다. 모든 튜닝 대상에 대해서 확인을 끝내고 있는 경우에는, 스텝 S39의 처리가 행해진다.
스텝 S39에서, 튜닝 테이블(303)에 항목이 있으면, 스텝 S40의 처리가 행해진다. 튜닝 테이블(303)에 항목이 없으면, 하이퍼바이저(103)의 분석 및 튜닝 페이즈가 종료된다.
스텝 S40에서, 제 1 제어부(210) 및 제 2 제어부(240)는, 튜닝 테이블(303)의 각 항목에 반영되어 있는 파라미터값에 대응하는 현재값을 취득한다. 관리부(220)의 데이터 갱신부(223)는, 제 1 제어부(210) 및 제 2 제어부(240)에 의해 취득된 값을 초기값으로서, HV 메모리 영역(108C)에 보존한다. 초기값의 보존 후, 하이퍼바이저(103)의 분석 및 튜닝 페이즈가 종료된다.
임계값 테이블(302)에서 지정되어 있는 실시 조건에 대해서, CPU 이용률이 초과하고 있는 예를 설명한다. 제한 방법으로서는, 범용 어플리케이션(101B)이 사용하는 제 2 코어(104B)의 CPU 주파수를 저감하는 방법이 이용된다고 한다.
스텝 S33에서, 데이터 비교부(222)는, CPU 이용률이 임계값 테이블(302)의 값을 초과하고 있는 것을 검출한다. 그 후, 스텝 S36에서, 파라미터값 산출부(225)는, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)의 정보에 근거하여, 제 2 코어(104B)의 처리가 실시간 어플리케이션(101A)에 영향을 주지 않도록, CPU 주파수를 얼마로 설정할지를 결정한다. 즉, 파라미터값 산출부(225)는, 변경 후의 CPU 주파수를 산출한다. 스텝 S37에서, 데이터 갱신부(223)는, 파라미터값 산출부(225)의 산출의 결과를 튜닝 테이블(303)에 반영한다.
CPU 주파수의 변경이 튜닝 테이블(303)에 설정되어 있기 때문에, 스텝 S40에서, 제 1 제어부(210)의 주파수 취득부(212)는, 현재의 CPU 주파수의 값을 취득한다. 데이터 갱신부(223)는, 주파수 취득부(212)에 의해 취득된 값을, 변경 전의 CPU 주파수의 값, 즉, 초기값으로서, HV 메모리 영역(108C)에 보존한다.
이와 같이, CPU 주파수의 실시 조건이 만족되어 있는 경우는, CPU 주파수의 튜닝의 설정이 행해진다. 다른 동작 상태의 튜닝의 설정도 마찬가지로 행할 수 있다. 즉, 본 실시형태에서는, 데이터 갱신부(223)에 의해 갱신된 범용 OS 정보 테이블(301)의 데이터에, 유저가 작성하는 임계값 테이블(302)의 「실시 조건」을 만족시키는 항목이 있던 경우, 임계값 테이블(302)에서 지정되는 제한 「튜닝 방법」이, 범용 OS(102B)의 해당하는 어플리케이션에 적용된다. 그 제한에 대해서, 정리한 것이 튜닝 테이블(303)이 된다.
도 6의 예에서는, 「XXXX.exe」에 대해 데이터 갱신부(223)에 의해 갱신된 결과가 테이블 정보로서 유지되어 있다. 이 예에서는, 「XXXX.exe」는, 0x10부터 0x20의 시간 동안, DMA 전송을 3회 실시하고 있다. CPU 이용률은 80%, 디스크 액세스의 시간은 1ms이다. 튜닝 페이즈에서, 이 결과와, 임계값 테이블(302)의 실시 조건이 비교된다. 구체적으로는, CPU 이용률이 실시 조건의 70%를 초과하고 있는지 여부가 판단된다. 하이퍼바이저(103)는, CPU 이용률이 70% 이하가 되도록, 「XXXX.exe」의 어플리케이션 실행에 제한을 둔다. 또, DMA 전송이 행해지는 0x10부터 0x20의 시간 동안에 실시간 OS(102A)의 인터럽트가 발생하는지 여부가 판단된다. 발생하는 경우, 그 시간이 실시간 OS(102A)의 인터럽트 주기 이상이고 또한 +20% 이하이면, DMA 전송이 인터럽트 발생 시에 오버랩(overlap)되지 않도록, DMA 전송의 1회의 전송 사이즈를 작게 한다는 튜닝이 설정된다. DMA 전송의 시간이 실시간 OS(102A)의 인터럽트 주기 이상이고 또한 +20% 이상이면, DMA 전송을 전부 PIO로 변환한다는 튜닝이 설정된다. 이들 어플리케이션 실시에 대한 제한을 정리한 것이 튜닝 테이블(303)이다. 「PIO」는, Programmed I/O의 약어이다.
도 13을 참조하여, 실제 운용 페이즈를 설명한다.
스텝 S41에서, 관리부(220)의 데이터 판독부(221)는, 튜닝 테이블(303)을 판독한다.
스텝 S42에서, 관리부(220)의 데이터 비교부(222)는, 범용 어플리케이션(101B)으로부터의 처리의 실행 요구를 검출하고, 그 처리에 대응하는 항목이, 튜닝 테이블(303)에 등록되어 있는지를 확인한다. 등록되어 있는 경우, 스텝 S46의 처리가 행해진다. 등록되어 있지 않은 경우에는, 스텝 S43의 처리가 행해진다.
스텝 S43에서, 제 1 제어부(210) 및 제 2 제어부(240)는, 튜닝 테이블(303)의 각 항목에 반영되어 있는 파라미터값에 대응하는 현재값을 취득한다. 데이터 비교부(222)는, 제 1 제어부(210) 및 제 2 제어부(240)에 의해 취득된 값을, 스텝 S40에서 보존된 초기값과 비교하여, 초기값으로부터의 변경이 있는지 확인한다. 변경이 있는 경우에는, 스텝 S44의 처리가 행해진다. 변경이 없는 경우에는, 스텝 S45의 처리가 행해진다.
하나의 예로서, 파라미터값이 CPU 주파수의 값이면, 제 1 제어부(210)의 주파수 취득부(212)가, 현재의 CPU 주파수의 값을 취득한다. 데이터 비교부(222)는, 주파수 취득부(212)에 의해 취득된 CPU 주파수의 값을, 스텝 S40에서 보존된 초기값과 비교하여, CPU 주파수가 변경되어 있는지 확인한다.
다른 예로서, 파라미터값이 DMA 전송의 1회의 전송 사이즈의 값이면, 제 2 제어부(240)의 사이즈 취득부(242)가, 현재의 DMA 전송의 1회의 전송 사이즈의 값을 취득한다. 데이터 비교부(222)는, 사이즈 취득부(242)에 의해 취득된 전송 사이즈의 값을, 스텝 S40에서 보존된 초기값과 비교하여, 전송 사이즈가 변경되어 있는지 확인한다.
스텝 S44에서, 제 1 제어부(210) 또는 제 2 제어부(240)는, 초기값으로부터의 변경을 원래로 되돌린다. 그 후, 스텝 S45의 처리가 행해진다.
하나의 예로서, CPU 주파수가 변경되어 있는 경우는, 제 1 제어부(210)의 주파수 변경부(213)가, 클럭 제너레이터(107)를 사용함으로써, 범용 어플리케이션(101B)에서 사용되는 CPU 주파수를, 스텝 S40에서 보존된 변경 전의 CPU 주파수로 되돌린다.
다른 예로서, DMA 전송의 1회의 전송 사이즈가 변경되어 있는 경우는, 제 2 제어부(240)의 사이즈 변경부(243)가, DMA 컨트롤러(120)를 사용함으로써, 범용 어플리케이션(101B)에서 사용되는, DMA 전송의 1회의 전송 사이즈를, 스텝 S40에서 보존된 변경 전의 전송 사이즈로 되돌린다.
스텝 S45에서, 범용 어플리케이션(101B)으로부터의 요구대로 처리가 실행된다.
스텝 S46에서, 데이터 비교부(222)는, 범용 어플리케이션(101B)으로부터의 처리의 실행 요구에 대해서, 그 처리를, 튜닝 테이블(303)에서 지정된 방법으로, 제한을 두어 행하도록 명령을 변환한다. 그 후, 변환 후의 방법으로 처리가 실행된다.
하나의 예로서, CPU 주파수가 변경되는 경우는, 주파수 변경부(213)가, 클럭 제너레이터(107)를 사용함으로써, 범용 어플리케이션(101B)에서 사용되는 CPU 주파수를, 튜닝 테이블(303)에서 지정된 CPU 주파수로 변경한다.
다른 예로서, DMA 전송의 1회의 전송 사이즈가 변경되는 경우는, 사이즈 변경부(243)가, DMA 컨트롤러(120)를 사용함으로써, 범용 어플리케이션(101B)에서 사용되는, DMA 전송의 1회의 전송 사이즈를, 튜닝 테이블(303)에서 지정된 전송 사이즈로 변경한다.
그 후, 모든 어플리케이션이 종료될 때까지 스텝 S42 내지 스텝 S46의 순서가 반복하여 실행된다.
***실시형태의 효과의 설명***
본 실시형태에서는, 제 1 취득부(200) 및 제 2 취득부(230)와 같은 취득부는, 실시간 어플리케이션(101A)과 복수의 범용 어플리케이션(101B)이 실행되는 시운전 페이즈에 있어서, 범용 OS 정보를 취득한다. 범용 OS 정보는, 시운전 페이즈에서 실행되는 복수의 범용 어플리케이션(101B)의 각각에 의한 하드웨어의 사용에 대한 정보이며, 범용 OS 정보 테이블(301)에 등록된다. 각 범용 어플리케이션(101B)은, 범용 OS 정보 테이블(301)에서는, 「어플리케이션의 이름」에 의해 식별된다. 관리부(220)는, 범용 어플리케이션(101B)마다, 취득부에 의해 취득된 범용 OS 정보에 근거하여, 하드웨어의 사용을 제한하기 위한 조건이 만족되어 있는지 여부를 판정한다. 이 조건은, 「실시 조건」으로서, 임계값 테이블(302)에 정의되어 있다. 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 실시간 어플리케이션(101A)과 복수의 범용 어플리케이션(101B)이 실행되는 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션(101B)에 의한 하드웨어의 사용을 제한한다. 이 제한의 방법은, 「튜닝 방법」으로서, 임계값 테이블(302)에 정의되어 있다.
이와 같이, 본 실시형태에서는, 복수의 범용 어플리케이션(101B) 중, 시운전 페이즈에서 얻어진 정보에 근거하여 일정한 조건을 만족시키고 있다고 판정된 범용 어플리케이션(101B)에 대해서, 실제 운용 페이즈에서 하드웨어의 사용이 제한된다. 조건을 만족시키지 않는다고 판정된 범용 어플리케이션(101B)에 대해서 실제 운용 페이즈에서 하드웨어의 사용을 제한하지 않음으로써, 범용 OS(102B)의, 실시간 OS(102A)의 처리에 영향을 주지 않는 처리를 멈추지 않고, 실시간 OS(102A)에 우선적으로 하드웨어로의 액세스를 행하게 할 수 있다.
본 실시형태에서는, 취득부는, 하드웨어의 종류마다, 범용 OS 정보를 취득한다. 관리부(220)는, 범용 어플리케이션(101B) 및 하드웨어의 종류의 조합마다, 범용 OS 정보에 근거하여, 조건이 만족되어 있는지 여부를 판정한다. 하드웨어의 종류는, 「카테고리」로서, 임계값 테이블(302)에 정의되어 있다. 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션(101B)에 의한, 해당하는 종류의 하드웨어의 사용을 제한한다.
하드웨어의 종류로서, 프로세서(104)가 있는 경우, 취득부는, 범용 OS 정보로서, 프로세서(104)의 사용률을 나타내는 정보를 취득한다. 프로세서(104)의 사용률은, 범용 OS 정보 테이블(301)에서는, 「CPU 이용률」로서 기록된다. 관리부(220)는, 범용 어플리케이션(101B)마다, 범용 OS 정보에 나타나 있는 프로세서(104)의 사용률이 임계값 이상이면, 프로세서(104)에 대해 조건이 만족되어 있다고 판정한다. 프로세서(104)의 사용을 제한하는 방법으로서는, 임의의 방법이 이용되어도 되지만, 본 실시형태에서는, 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션(101B)이 실행될 때에, 프로세서(104)의 주파수를 낮게 한다.
하드웨어의 종류로서, 메모리(108)가 있는 경우, 취득부는, 범용 OS 정보로서, 메모리(108)로의 DMA 전송의 실시 기간을 나타내는 정보를 취득한다. 메모리(108)로의 DMA 전송의 실시 기간은, 범용 OS 정보 테이블(301)에서는, 「DMA 처리 개시 시각」 및 「DMA 처리 종료 시각」의 조합으로서 기록된다. 관리부(220)는, 범용 어플리케이션(101B)마다, 범용 OS 정보에 나타나 있는 메모리(108)로의 DMA 전송의 실시 기간이 실시간 OS(102A)의 인터럽트 주기와 겹쳐져 있으면, 조건이 만족되어 있다고 판정한다. 실시간 OS(102A)의 인터럽트 주기는, 미리 검출되고, RTOS 정보 테이블(300)에 기록되어 있다. 메모리(108)로의 DMA 전송을 제한하는 방법으로서는, 임의의 방법이 이용되어도 되지만, 본 실시형태에서는, 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 범용 OS 정보에 나타나 있는 메모리(108)로의 DMA 전송의 실시 기간과 실시간 OS(102A)의 인터럽트 주기의 겹침의 정도에 따라서, 방법을 변경한다. 구체적으로는, 관리부(220)는, 범용 OS 정보에 나타나 있는 메모리(108)로의 DMA 전송의 실시 기간과 실시간 OS(102A)의 인터럽트 주기의 겹침의 정도가 임계값 이상이면, 해당하는 범용 어플리케이션(101B)에 의한 메모리(108)로의 DMA 전송의 송신 사이즈를 작게 한다. 관리부(220)는, 범용 OS 정보에 나타나 있는 메모리(108)로의 DMA 전송의 실시 기간과 실시간 OS(102A)의 인터럽트 주기의 겹침의 정도가 임계값 미만이면, 해당하는 범용 어플리케이션(101B)에 의한 메모리(108)로의 DMA 전송을 PIO 전송으로 변경한다.
하드웨어의 종류로서, 전술한 보조 기억 장치에 상당하는 디스크가 있는 경우, 취득부는, 범용 OS 정보로서, 디스크로의 액세스의 실시 기간을 나타내는 정보를 취득한다. 디스크로의 액세스의 실시 기간은, 범용 OS 정보 테이블(301)에서는, 「디스크 액세스 시간」으로서 기록된다. 관리부(220)는, 범용 어플리케이션(101B)마다, 범용 OS 정보에 나타나 있는 디스크로의 액세스의 실시 기간이 실시간 OS(102A)의 인터럽트 주기와 겹쳐져 있으면, 조건이 만족되어 있다고 판정한다. 실시간 OS(102A)의 인터럽트 주기는, 미리 검출되고, RTOS 정보 테이블(300)에 기록되어 있다. 디스크로의 액세스를 제한하는 방법으로서는, 임의의 방법이 이용되어도 되지만, 본 실시형태에서는, 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 해당하는 범용 어플리케이션(101B)에 의한 디스크로의 액세스의 블록 사이즈를 작게 한다.
이와 같이, 본 실시형태에서는, 복수의 범용 어플리케이션(101B) 중, 시운전 페이즈에서 얻어진 정보에 근거하여 일정한 조건을 만족시키고 있다고 판정된 범용 어플리케이션(101B)에 대해서, 실제 운용 페이즈에서 조건에 대응하는 종류의 하드웨어의 사용이 제한된다. 조건에 대응하는 하드웨어의 종류가 메모리(108)이면, 범용 어플리케이션(101B)을 실행하는 방법을 변경하는 것에 의해, 범용 어플리케이션(101B)으로부터의 메모리(108)로의 액세스 빈도를 줄이는 것이 가능하게 된다. 그 결과, 범용 어플리케이션(101B)에 의한 버스(110)의 점유율이 낮아져, 범용 어플리케이션(101B)의 동작도 계속되는 환경하에서, 버스(110)를 통해서 실시간 어플리케이션(101A)의 대기 시간이 해소되고, 실시간 응답 성능 지연을 방지 가능하게 된다.
CPU 주파수, DMA의 이용률 및 디스크 액세스 이외의 하드웨어의 사용에 대해서도, 마찬가지의 방법으로 디바이스 액세스의 처리 시간 및 처리 사이즈를 토대로, 튜닝을 행해도 된다.
취득부는, 범용 OS 정보로서, 메모리(108)로의 DMA 전송의 실시 기간과는 다른, 메모리(108)의 사용 기간을 나타내는 정보를 취득해도 되고, 메모리(108) 이외의 종류의 하드웨어의 사용 기간을 나타내는 정보를 취득해도 된다. 그 경우, 관리부(220)는, 범용 어플리케이션(101B)마다, 범용 OS 정보에 나타나 있는 하드웨어의 사용 기간이 실시간 OS(102A)의 인터럽트 주기와 겹쳐져 있으면, 조건이 만족되어 있다고 판정한다. 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 범용 OS 정보에 나타나 있는 하드웨어의 사용 기간과 실시간 OS(102A)의 인터럽트 주기의 겹침의 정도에 따라서, 해당하는 범용 어플리케이션(101B)에 의한 하드웨어의 사용을 제한하는 방법을 변경해도 된다.
본 실시형태에서는, 특허문헌 1에 기재된 기술과 상이하게, DMA 이외의 처리 부하에 의해 우선도가 낮은 OS가 버스(110)의 대역을 전유함으로써 발생할 수 있는, 우선도가 높은 OS의 인터럽트 응답 성능의 저하에도 대응할 수 있다.
본 실시형태에서는, 실시간 OS(102A) 이외의 OS의 처리 부하가 높은 경우에, 우선도가 낮은 범용 OS(102B)의 처리를 멈추지 않고, 하이퍼바이저(103)가 처리의 실행 방법을 변환함으로써, 실시간 OS(102A)의 처리 정밀도에 대한 영향을 경감 가능하다.
본 실시형태에 의하면, 버스(110)를 실시간 OS(102A)와 범용 OS(102B)에서 공유하는 경우에, 실시간 OS(102A)에 할당된 디바이스가 인터럽트를 발행했을 때의 실시간 응답 성능의 저하를 방지하는 것이 가능하게 된다.
***다른 구성***
본 실시형태에서는, 제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)의 기능이 소프트웨어에 의해 실현되지만, 변형예로서, 제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)의 기능이 소프트웨어와 하드웨어의 조합에 의해 실현되어도 된다. 즉, 제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)의 기능의 일부가 전용의 하드웨어에 의해 실현되고, 나머지가 소프트웨어에 의해 실현되어도 된다.
전용의 하드웨어는, 예를 들면, 단일 회로, 복합 회로, 프로그램화한 프로세서, 병렬 프로그램화한 프로세서, 로직 IC, GA, FPGA, ASIC, 또는, 이들 중 몇 가지, 또는, 모든 조합이다. 「IC」는, Integrated Circuit의 약어이다. 「GA」는, Gate Array의 약어이다. 「FPGA」는, Field-Programmable Gate Array의 약어이다. 「ASIC」는, Application Specific Integrated Circuit의 약어이다.
프로세서(104) 및 전용의 하드웨어는, 모두 처리 회로이다. 즉, 제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)의 기능이 소프트웨어에 의해 실현될지, 소프트웨어와 하드웨어의 조합에 의해 실현될지에 상관없이, 제 1 취득부(200), 제 1 제어부(210), 관리부(220), 제 2 취득부(230) 및 제 2 제어부(240)의 동작은, 처리 회로에 의해 행해진다.
OS의 수는, 3개 이상이어도 된다. 각각의 OS는, 실시간 OS(102A)와 범용 OS(102B) 중 어느 것이어도 되고, 그 밖의 종류의 OS여도 된다. 예를 들면, 동일한 종류의 OS가 있었다고 해도, 각각을 관리용의 OS와, 비관리용의 OS로서 구별 해도 된다.
프로세서(104)의 코어의 수는, 3개 이상이어도 된다.
하이퍼바이저(103)는, 제 2 코어(104B)에 의해 실행되어도 된다.
정보 처리 장치(100)는, OS를 실행하는 코어와는 별도로, 하이퍼바이저(103)를 실행하는 코어를 구비해도 된다. 즉, 하이퍼바이저(103)는, OS를 실행하는 코어와는 다른 코어에 의해 실행되어도 된다.
유저가 작성하는 RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)은, 1개로 통합되어도 되고, DMA, 메모리 액세스 및 디스크 액세스와 같은 이벤트의 트리거마다 따로따로 작성되어도 된다.
하이퍼바이저(103)는, 범용 어플리케이션(101B)뿐만 아니라, 실시간 어플리케이션(101A)의 처리 상태 감시를 행하거나, 실시간 어플리케이션(101A)에 대한 임계값 정보를 가지거나 함으로써, 범용 OS(102B)의 처리를 제한해도 된다. 예를 들면, 하이퍼바이저(103)는, 실시간 OS(102A)의 단위 시간당 메모리 캐시 미스율(cache miss rate) 또는 캐시 히트율(cache hit rate)의 정보를 취득하고, 캐시 미스율이 규정의 임계값을 초과하고 있는 경우에, 범용 어플리케이션(101B)에 대해서, 캐시의 할당을 제한해도 된다.
실시형태 2.
본 실시형태에 대해서, 주로 실시형태 1과의 차이를, 도 14 및 도 15를 이용해서 설명한다.
실시형태 1에서는, 하이퍼바이저(103)의 시스템 시운전 페이즈와, 하이퍼바이저(103)의 분석 및 튜닝 페이즈가 각각 1회만 실시된다. 본 실시형태에서는, 튜닝 테이블(303)의 설정값을 이용하여 재차 시운전이 행해지고, 파라미터가 조정된다. 복수회 반복하여 이 시운전이 행해져도 상관없다. 그 경우, 시운전의 횟수를 지정하는 방법은, 임의의 방법이면 되고, 시운전 개시 시에, 유저가 인수(引數: parameter)로 횟수를 설정해도 되고, 하이퍼바이저(103)가 판독할 수 있는, 어느 테이블 정보에 횟수가 추기(追記)되어 관리되어도 된다.
***구성의 설명***
본 실시형태에 따른 정보 처리 장치(100)의 구성에 대해서는, 도 1 내지 도 3에 나타낸 실시형태 1의 것과 동일하기 때문에, 설명을 생략한다.
***동작의 설명***
도 14 및 도 15를 참조하여, 본 실시형태에 따른 정보 처리 장치(100)의 동작을 설명한다. 정보 처리 장치(100)의 동작은, 본 실시형태에 따른 튜닝 방법에 상당한다.
유저에 의한 시운전의 준비 페이즈와, 하이퍼바이저(103)의 1회째의 시스템 시운전 페이즈와, 하이퍼바이저(103)의 1회째의 분석 및 튜닝 페이즈와, 실제 운용 페이즈에 대해서는, 도 9 내지 도 13에 나타낸 실시형태 1의 것과 동일하기 때문에, 설명을 생략한다.
도 14 및 도 15를 참조하여, 2회째 이후의 시스템 시운전 페이즈와 분석 및 튜닝 페이즈를 설명한다.
스텝 S51 내지 스텝 S56의 처리에 대해서는, 스텝 S41 내지 스텝 S46의 처리와 동일하기 때문에, 설명을 생략한다.
스텝 S55의 처리가 행해진 후에는, 스텝 S57의 처리가 행해진다.
스텝 S56의 처리가 행해진 후에도, 스텝 S57의 처리가 행해진다.
스텝 S57 및 스텝 S58의 처리에 대해서는, 스텝 S23 및 스텝 S24의 처리와 동일하기 때문에, 설명을 생략한다.
스텝 S58의 처리가 행해진 후에는, 스텝 S59의 처리가 행해진다.
스텝 S59의 처리에 대해서는, 스텝 S31의 처리와 동일하기 때문에, 설명을 생략한다.
스텝 S59의 처리가 행해진 후에는, 스텝 S60의 처리가 행해진다.
스텝 S60에서, 관리부(220)의 데이터 비교부(222)는, RTOS 정보 테이블(300)과 범용 OS 정보 테이블(301)을 비교하여, 범용 OS(102B)의 모든 처리에 대해서, 실시간 OS(102A)의 정주기 인터럽트가 발생하는 시간에, 범용 OS(102B)의 처리가 겹쳐 있는지 여부를 판정한다. 겹쳐 있는 처리는, 튜닝이 필요한 처리, 즉, 튜닝 대상이라고 판단된다. 튜닝 대상이 검출된 경우, 스텝 S61의 처리가 행해진다. 튜닝 대상이 없는 경우는, 스텝 S65의 처리가 행해진다.
스텝 S61에서, 데이터 비교부(222)는, 튜닝 대상에 대해서, 어떤 항목이 임계값을 초과하고 있는지를, 임계값 테이블(302)과 범용 OS 정보 테이블(301)을 비교하여 판단한다. 데이터 비교부(222)는, 임계값을 초과하고 있는 항목에 대해서, 임계값 테이블(302)에 쓰여져 있는 튜닝 방법을 식별한다.
스텝 S62에서, 관리부(220)의 파라미터값 산출부(225)는, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)의 정보에 근거하여, 튜닝 테이블(303)에 설정하는 파라미터값을 산출한다. 파라미터값의 산출은, 범용 OS(102B)의 처리의 파라미터값을 어떻게 변경한 경우에, 그 처리가 실시간 OS(102A)의 인터럽트 주기와 겹쳐지지 않게 되는지를 토대로 행해진다.
스텝 S63에서, 관리부(220)의 데이터 갱신부(223)는, 튜닝 테이블(303)에 반영되어 있는 파라미터값을, 스텝 S62에서 산출된 파라미터값으로 갱신한다.
스텝 S64에서, 데이터 비교부(222)는, 모든 튜닝 대상에 대해서, 임계값 테이블(302)의 실시 조건을 만족시키는 항목의 유무의 확인을 끝내고 있는지, 남은 건이 있는지를 판정한다. 아직 확인을 끝내지 않은 튜닝 대상이 남아 있는 경우에는, 스텝 S61 이후의 처리가 반복된다. 모든 튜닝 대상에 대해서 확인을 끝내고 있는 경우에는, 스텝 S65의 처리가 행해진다.
스텝 S65에서, 튜닝 횟수가 카운트된다. 튜닝 횟수의 카운터값은, HV 메모리 영역(108C)에 저장된다.
스텝 S66에서, 데이터 비교부(222)는, HV 메모리 영역(108C)에 저장되어 있는 튜닝 횟수의 카운터값을 참조함으로써, 튜닝 횟수가 유저가 지정한 횟수에 도달하고 있는지를 확인한다. 도달하고 있는 경우는, 2회째 이후의 시스템 시운전 페이즈와 분석 및 튜닝 페이즈가 종료된다. 도달하고 있지 않은 경우는, 스텝 S51 이후의 처리가 반복된다.
2회째 이후의 시스템 시운전 페이즈와 분석 및 튜닝 페이즈가 종료된 경우, 실제 운용 페이즈가 실시된다.
2회째 이후의 시스템 시운전 페이즈와 분석 및 튜닝 페이즈의 구체예를 설명한다.
이 예에서는, 1회째의 시스템 시운전 페이즈와 분석 및 튜닝 페이즈에 있어서, 도 8의 예와 같이, CPU 주파수를 αHz로 변경한다는 튜닝의 설정이 이미 행해져 있다고 한다.
스텝 S52에서, 관리부(220)의 데이터 비교부(222)는, 범용 어플리케이션(101B)으로부터의 처리의 실행 요구를 검출하고, 그 처리에 대응하는 항목이, 튜닝 테이블(303)에 등록되어 있는 것을 검출한다.
스텝 S54에서, 제 1 제어부(210)의 주파수 변경부(213)는, 클럭 제너레이터(107)를 사용함으로써, 범용 어플리케이션(101B)에서 사용되는 CPU 주파수를, 스텝 S40에서 보존된 변경 전의 CPU 주파수로 되돌린다.
스텝 S56에서, 데이터 비교부(222)는, 범용 어플리케이션(101B)으로부터의 처리의 실행 요구에 대해서, 그 처리를, 튜닝 테이블(303)에서 지정된 방법으로, 제한을 두어 행하도록 CPU 주파수를 αHz로 변환한다. 그 후, 처리가 실행된다.
스텝 S57에서, 제 1 취득부(200), 제 1 제어부(210), 제 2 취득부(230) 및 제 2 제어부(240)는, RTOS 정보 테이블(300)과 범용 OS 정보 테이블(301)에 기록되어 있는 항목에 대해서, 시운전 시의 각종 데이터를 수집한다.
스텝 S58에서, 관리부(220)의 데이터 갱신부(223)는, 스텝 S57에서 수집된 데이터를, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)에 보존한다.
스텝 S59에서, 관리부(220)의 데이터 판독부(221)는, 임계값 테이블(302)과, 스텝 S58에서 갱신된 RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)을 판독한다.
스텝 S60에서, 데이터 비교부(222)는, RTOS 정보 테이블(300)과 범용 OS 정보 테이블(301)을 비교하여, 범용 OS(102B)의 모든 처리에 대해서, 실시간 OS(102A)의 정주기 인터럽트가 발생하는 시간에, 범용 OS(102B)의 처리가 겹쳐 있는지 여부를 판정한다. CPU 주파수를 αHz로 했음에도 불구하고, 튜닝 대상이 검출된 경우, 스텝 S61 내지 스텝 S63의 처리가 행해진다.
스텝 S62에서, 파라미터값 산출부(225)는, RTOS 정보 테이블(300) 및 범용 OS 정보 테이블(301)의 정보에 근거하여, 튜닝 테이블(303)에 설정하는 파라미터값을 산출한다.
스텝 S63에서, 데이터 갱신부(223)는, 튜닝 테이블(303)에 반영되어 있는 파라미터값을, 스텝 S62에서 산출된 파라미터값으로 갱신한다.
스텝 S64에서, 모든 튜닝 대상에 대해서 확인을 끝내고 있는 경우에는, 스텝 S65의 처리가 행해진다.
스텝 S65에서, 튜닝 횟수의 카운터값이 1 인크리먼트(increment)된다.
스텝 S66에서, 튜닝 횟수의 카운터값이 유저가 지정한 횟수의 값에 일치하고 있으면, 시스템 시운전 페이즈와 분석 및 튜닝 페이즈가 종료된다. 일치하고 있지 않으면, 스텝 S51 이후의 처리가 반복된다.
***실시형태의 효과의 설명***
본 실시형태에서는, 시운전 페이즈는, 복수회 반복된다. 관리부(220)는, 시운전 페이즈가 1회 종료될 때마다, 범용 어플리케이션(101B)마다, 종료된 페이즈에 있어서 범용 OS 정보로서 취득부에 의해 취득된 정보에 근거하여, 조건이 만족되어 있는지 여부를 판정한다. 관리부(220)는, 조건이 만족되어 있다고 판정한 경우, 해당하는 범용 어플리케이션(101B)에 의한 하드웨어의 사용을 제한하기 위한 파라미터를 조정한다. 관리부(220)는, 시운전 페이즈가 전부 종료된 후, 실제 운용 페이즈에 있어서, 그 파라미터를 이용하여, 해당하는 범용 어플리케이션(101B)에 의한 하드웨어의 사용을 제한한다.
본 실시형태에서는, 복수회, 상태 수집과 분석을 행하고, 튜닝 테이블(303)을 갱신함으로써, 실시간 응답 성능의 저하를 보다 정밀도 높게 방지하고, 또한, 실시간 응답 성능의 저하를 방지할 때에 범용 어플리케이션(101B)의 처리 성능도, 보다 적절한 파라미터를 사용하는 처리로서 실현되는 것이 가능하게 된다. 최적인 동작 주파수값을 산출하는 것에 의해, 범용 어플리케이션(101B)의 동작도 계속되는 것이 가능하게 된다. 그 결과, 범용 어플리케이션(101B)에 의한 버스(110)의 점유율이 낮아져, 버스(110)를 통해서 실시간 어플리케이션(101A)의 대기 시간이 해소되고, 실시간 응답 성능 지연이 방지 가능하게 된다.
100: 정보 처리 장치, 101A: 실시간 어플리케이션, 101B: 범용 어플리케이션, 102A: 실시간 OS, 102B: 범용 OS, 103: 하이퍼바이저, 104: 프로세서, 104A: 제 1 코어, 104B: 제 2 코어, 105: 주파수 변경 기구, 106: 인터럽트 컨트롤러, 107: 클럭 제너레이터, 108: 메모리, 108A: 메모리 영역, 108C: HV 메모리 영역, 109: I/O 디바이스, 110: 버스, 111: 그래픽 디바이스, 120: DMA 컨트롤러, 200: 제 1 취득부, 201: 인터럽트 검출부, 202: 주기 취득부, 210: 제 1 제어부, 211: 이용률 취득부, 212: 주파수 취득부, 213: 주파수 변경부, 220: 관리부, 221: 데이터 판독부, 222: 데이터 비교부, 223: 데이터 갱신부, 224: 테이블 작성부, 225: 파라미터값 산출부, 230: 제 2 취득부, 231: 요구 검출부, 232: 종료 검출부, 240: 제 2 제어부, 241: 명령 검출부, 242: 사이즈 취득부, 243: 사이즈 변경부, 244: 시각 취득부, 245: 빈도 취득부, 300: RTOS 정보 테이블, 301: 범용 OS 정보 테이블, 302: 임계값 테이블, 303: 튜닝 테이블.

Claims (13)

  1. 하드웨어와,
    실시간 오퍼레이팅 시스템을 통해서 상기 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 실시간 어플리케이션과, 각각 비실시간 오퍼레이팅 시스템을 통해서 상기 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 복수의 범용 어플리케이션이 실행되는 시운전 페이즈에 있어서, 상기 복수의 범용 어플리케이션의 각각에 의한 상기 하드웨어의 사용에 대한 정보인 범용 OS 정보를 취득하는 취득부와,
    범용 어플리케이션마다, 상기 취득부에 의해 취득된 범용 OS 정보에 근거하여, 상기 하드웨어의 사용을 제한하기 위한 조건이 만족되어 있는지 여부를 판정하고, 상기 조건이 만족되어 있다고 판정한 경우, 상기 실시간 어플리케이션과 상기 복수의 범용 어플리케이션이 실행되는 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션에 의한 상기 하드웨어의 사용을 제한하는 관리부
    를 구비하는 정보 처리 장치.
  2. 제 1 항에 있어서,
    상기 하드웨어를 복수 종류 구비하고,
    상기 취득부는, 상기 하드웨어의 종류마다, 상기 범용 OS 정보를 취득하고,
    상기 관리부는, 범용 어플리케이션 및 상기 하드웨어의 종류의 조합마다, 상기 범용 OS 정보에 근거하여, 상기 조건이 만족되어 있는지 여부를 판정하고, 상기 조건이 만족되어 있다고 판정한 경우, 상기 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션에 의한, 해당하는 종류의 상기 하드웨어의 사용을 제한하는 정보 처리 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 하드웨어에는, 프로세서가 포함되고,
    상기 취득부는, 상기 범용 OS 정보로서, 상기 프로세서의 사용률을 나타내는 정보를 취득하고,
    상기 관리부는, 범용 어플리케이션마다, 상기 범용 OS 정보에 나타나 있는 상기 프로세서의 사용률이 임계값 이상이면, 상기 프로세서에 대해 상기 조건이 만족되어 있다고 판정하는 정보 처리 장치.
  4. 제 3 항에 있어서,
    상기 관리부는, 상기 조건이 만족되어 있다고 판정한 경우, 상기 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션이 실행될 때에, 상기 프로세서의 주파수를 낮게 하는 정보 처리 장치.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 취득부는, 상기 범용 OS 정보로서, 상기 하드웨어의 사용 기간을 나타내는 정보를 취득하고,
    상기 관리부는, 범용 어플리케이션마다, 상기 범용 OS 정보에 나타나 있는 상기 하드웨어의 사용 기간이 상기 실시간 오퍼레이팅 시스템의 인터럽트(interrupt) 주기와 겹쳐져 있으면, 상기 조건이 만족되어 있다고 판정하는 정보 처리 장치.
  6. 제 5 항에 있어서,
    상기 관리부는, 상기 조건이 만족되어 있다고 판정한 경우, 상기 범용 OS 정보에 나타나 있는 상기 하드웨어의 사용 기간과 상기 실시간 오퍼레이팅 시스템의 인터럽트 주기의 겹침의 정도에 따라서, 해당하는 범용 어플리케이션에 의한 상기 하드웨어의 사용을 제한하는 방법을 변경하는 정보 처리 장치.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 하드웨어에는, 메모리가 포함되고,
    상기 취득부는, 상기 범용 OS 정보로서, 상기 메모리로의 DMA 전송의 실시 기간을 나타내는 정보를 취득하고,
    상기 관리부는, 범용 어플리케이션마다, 상기 범용 OS 정보에 나타나 있는 상기 메모리로의 DMA 전송의 실시 기간이 상기 실시간 오퍼레이팅 시스템의 인터럽트 주기와 겹쳐져 있으면, 상기 조건이 만족되어 있다고 판정하는 정보 처리 장치.
  8. 제 7 항에 있어서,
    상기 관리부는, 상기 조건이 만족되어 있다고 판정한 경우, 상기 범용 OS 정보에 나타나 있는 상기 메모리로의 DMA 전송의 실시 기간과 상기 실시간 오퍼레이팅 시스템의 인터럽트 주기의 겹침의 정도가 임계값 이상이면, 해당하는 범용 어플리케이션에 의한 상기 메모리로의 DMA 전송의 송신 사이즈를 작게 하고, 그렇지 않으면, 해당하는 범용 어플리케이션에 의한 상기 메모리로의 DMA 전송을 PIO 전송으로 변경하는 정보 처리 장치.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 하드웨어에는, 디스크가 포함되고,
    상기 취득부는, 상기 범용 OS 정보로서, 상기 디스크로의 액세스의 실시 기간을 나타내는 정보를 취득하고,
    상기 관리부는, 범용 어플리케이션마다, 상기 범용 OS 정보에 나타나 있는 상기 디스크로의 액세스의 실시 기간이 상기 실시간 오퍼레이팅 시스템의 인터럽트 주기와 겹쳐져 있으면, 상기 조건이 만족되어 있다고 판정하는 정보 처리 장치.
  10. 제 9 항에 있어서,
    상기 관리부는, 상기 조건이 만족되어 있다고 판정한 경우, 해당하는 범용 어플리케이션에 의한 상기 디스크로의 액세스의 블록 사이즈를 작게 하는 정보 처리 장치.
  11. 제 1 항에 있어서,
    상기 시운전 페이즈는, 복수회 반복되고,
    상기 관리부는, 상기 시운전 페이즈가 1회 종료될 때마다, 범용 어플리케이션마다, 종료된 페이즈에 있어서 상기 범용 OS 정보로서 상기 취득부에 의해 취득된 정보에 근거하여, 상기 조건이 만족되어 있는지 여부를 판정하고, 상기 조건이 만족되어 있다고 판정한 경우, 해당하는 범용 어플리케이션에 의한 상기 하드웨어의 사용을 제한하기 위한 파라미터를 조정하고, 상기 시운전 페이즈가 전부 종료된 후, 상기 실제 운용 페이즈에 있어서, 상기 파라미터를 이용하여, 해당하는 범용 어플리케이션에 의한 상기 하드웨어의 사용을 제한하는 정보 처리 장치.
  12. 취득부가, 실시간 오퍼레이팅 시스템을 통해서 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 실시간 어플리케이션과, 각각 비실시간 오퍼레이팅 시스템을 통해서 상기 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 복수의 범용 어플리케이션이 실행되는 시운전 페이즈에 있어서, 상기 복수의 범용 어플리케이션의 각각에 의한 상기 하드웨어의 사용에 대한 정보인 범용 OS 정보를 취득하고,
    관리부가, 범용 어플리케이션마다, 상기 취득부에 의해 취득된 범용 OS 정보에 근거하여, 상기 하드웨어의 사용을 제한하기 위한 조건이 만족되어 있는지 여부를 판정하고, 상기 조건이 만족되어 있다고 판정한 경우, 상기 실시간 어플리케이션과 상기 복수의 범용 어플리케이션이 실행되는 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션에 의한 상기 하드웨어의 사용을 제한하는 튜닝 방법.
  13. 하드웨어를 구비하는 컴퓨터로 하여금,
    실시간 오퍼레이팅 시스템을 통해서 상기 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 실시간 어플리케이션과, 각각 비실시간 오퍼레이팅 시스템을 통해서 상기 하드웨어를 사용하여 동작하는 어플리케이션 프로그램인 복수의 범용 어플리케이션이 실행되는 시운전 페이즈에 있어서, 상기 복수의 범용 어플리케이션의 각각에 의한 상기 하드웨어의 사용에 대한 정보인 범용 OS 정보를 취득하는 취득 순서와,
    범용 어플리케이션마다, 상기 취득 순서에 의해 취득된 범용 OS 정보에 근거하여, 상기 하드웨어의 사용을 제한하기 위한 조건이 만족되어 있는지 여부를 판정하고, 상기 조건이 만족되어 있다고 판정한 경우, 상기 실시간 어플리케이션과 상기 복수의 범용 어플리케이션이 실행되는 실제 운용 페이즈에 있어서, 해당하는 범용 어플리케이션에 의한 상기 하드웨어의 사용을 제한하는 관리 순서
    를 실행하게 하는, 기록 매체에 저장된 튜닝 프로그램.
KR1020207031064A 2018-05-07 2018-05-07 정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램 KR102251451B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/017667 WO2019215795A1 (ja) 2018-05-07 2018-05-07 情報処理装置、チューニング方法およびチューニングプログラム

Publications (2)

Publication Number Publication Date
KR20200128589A KR20200128589A (ko) 2020-11-13
KR102251451B1 true KR102251451B1 (ko) 2021-05-12

Family

ID=68467358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207031064A KR102251451B1 (ko) 2018-05-07 2018-05-07 정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램

Country Status (7)

Country Link
US (1) US11467944B2 (ko)
JP (1) JP6786010B2 (ko)
KR (1) KR102251451B1 (ko)
CN (1) CN112136110A (ko)
DE (1) DE112018007428T5 (ko)
TW (1) TW201947396A (ko)
WO (1) WO2019215795A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112020005887T5 (de) * 2020-02-06 2022-09-15 Mitsubishi Electric Corporation Einstellungsänderungseinrichtung, Einstellungsänderungsverfahren und Einstellungsänderungsprogramm
JP6929474B1 (ja) * 2020-05-01 2021-09-01 三菱電機株式会社 プログラム実行装置、プログラム実行方法及びコンピュータプログラム
US20230283618A1 (en) * 2022-03-01 2023-09-07 Western Digital Technologies, Inc. Detection of malicious operations for distributed cache

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030189943A1 (en) 2002-04-08 2003-10-09 International Business Machines Corporation Priority based bandwidth allocation within real-time and non-real-time traffic streams
US20090198766A1 (en) 2008-01-31 2009-08-06 Ying Chen Method and apparatus of dynamically allocating resources across multiple virtual machines
JP2010152513A (ja) 2008-12-24 2010-07-08 Renesas Electronics Corp ハイブリッドシステムおよび割込制御装置並びに割込制御方法
JP2015041199A (ja) 2013-08-21 2015-03-02 キヤノン株式会社 情報処理装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59178195A (ja) 1983-03-28 1984-10-09 Mitsubishi Metal Corp 球状黒鉛鋳鉄の溶接に使用する自動溶接ワイヤ
US6615166B1 (en) * 1999-05-27 2003-09-02 Accenture Llp Prioritizing components of a network framework required for implementation of technology
JP2001209561A (ja) * 2000-01-27 2001-08-03 Mitsubishi Electric Corp 異常処理方式及び異常処理方法
DE10144987A1 (de) * 2001-09-12 2003-07-24 Rexroth Indramat Gmbh Verfahren zur Steuerung und/oder Regelung von industriellen Prozessen
DE60323811D1 (de) * 2003-04-09 2008-11-13 Jaluna S A Betriebssysteme
US7272730B1 (en) * 2003-07-31 2007-09-18 Hewlett-Packard Development Company, L.P. Application-driven method and apparatus for limiting power consumption in a processor-controlled hardware platform
JP2007507779A (ja) * 2003-10-01 2007-03-29 ジャルナ エスアー オペレーティングシステム
US20050251806A1 (en) * 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
US7500244B2 (en) * 2004-06-30 2009-03-03 Intel Corporation Adaptive algorithm for selecting a virtualization algorithm in virtual machine environments
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US8112745B2 (en) * 2006-03-22 2012-02-07 Honeywell International Inc. Apparatus and method for capabilities verification and restriction of managed applications in an execution environment
JP4996929B2 (ja) 2007-01-17 2012-08-08 株式会社日立製作所 仮想計算機システム
JP5109748B2 (ja) 2008-03-26 2012-12-26 日本電気株式会社 仮想計算機システム及びパケット送信制御方法並びにそれに用いるネットワークインターフェースカード
JP2011192130A (ja) * 2010-03-16 2011-09-29 Fuji Xerox Co Ltd 制御装置、画像形成装置、及び制御プログラム
US8707449B2 (en) * 2010-12-16 2014-04-22 International Business Machines Corporation Acquiring access to a token controlled system resource
EP2833264B1 (en) 2012-03-29 2020-06-24 Hitachi, Ltd. Virtual computer schedule method
JP5725302B2 (ja) * 2012-08-10 2015-05-27 コニカミノルタ株式会社 画像形成装置
WO2014118969A1 (ja) 2013-02-01 2014-08-07 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
JP6705266B2 (ja) * 2016-04-07 2020-06-03 オムロン株式会社 制御装置、制御方法およびプログラム
US10452440B1 (en) * 2016-06-07 2019-10-22 PC Drivers Headquarters, Inc. Systems and methods of optimized tuning of resources
US20190303172A1 (en) 2016-11-16 2019-10-03 Mitsubishi Electric Corporation Information processing apparatus, device assignment method, and computer readable medium

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030189943A1 (en) 2002-04-08 2003-10-09 International Business Machines Corporation Priority based bandwidth allocation within real-time and non-real-time traffic streams
US20090198766A1 (en) 2008-01-31 2009-08-06 Ying Chen Method and apparatus of dynamically allocating resources across multiple virtual machines
JP2010152513A (ja) 2008-12-24 2010-07-08 Renesas Electronics Corp ハイブリッドシステムおよび割込制御装置並びに割込制御方法
JP2015041199A (ja) 2013-08-21 2015-03-02 キヤノン株式会社 情報処理装置

Also Published As

Publication number Publication date
US11467944B2 (en) 2022-10-11
KR20200128589A (ko) 2020-11-13
US20200409821A1 (en) 2020-12-31
JP6786010B2 (ja) 2020-11-18
DE112018007428T5 (de) 2021-01-07
WO2019215795A1 (ja) 2019-11-14
JPWO2019215795A1 (ja) 2020-09-17
TW201947396A (zh) 2019-12-16
CN112136110A (zh) 2020-12-25

Similar Documents

Publication Publication Date Title
CN107015862B (zh) 用于具有不同能力的核心的线程和/或虚拟机调度
KR102251451B1 (ko) 정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램
CN107463400B (zh) 移动应用的热更新方法及终端设备
US9164799B2 (en) Multiprocessor system
US20130138886A1 (en) Scheduler, multi-core processor system, and scheduling method
US8266621B2 (en) Information processing method, information processing apparatus, and server
CN108351840B (zh) 车辆控制装置
US20230315511A1 (en) Managing execution of data processing jobs in a virtual computing environment
US8954969B2 (en) File system object node management
US10613606B2 (en) Wireless component state based power management
US8671248B2 (en) Architecture support of memory access coloring
CN110209548B (zh) 服务控制方法、系统、电子设备及计算机可读存储介质
JP2009251871A (ja) 競合分析装置、競合分析方法、およびプログラム
US8707449B2 (en) Acquiring access to a token controlled system resource
CN116431358A (zh) 一种资源访问方法、装置、电子设备及存储介质
US20200174826A1 (en) Application code callbacks at regular intervals
US20090320036A1 (en) File System Object Node Management
KR20230063015A (ko) 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법
US20210149726A1 (en) Scheduling device, scheduling system, scheduling method, and non-transitory computer-readable medium
US20130024588A1 (en) Multicore processor system, computer product, and control method
JP5751372B2 (ja) データ処理システム、そのコンピュータプログラムおよびデータ処理方法
CN112540886A (zh) Cpu负荷值检测方法和装置
US20130061223A1 (en) System and method for caching optimization of guest operating systems for disributed hypervisor
CN114510324B (zh) 一种挂载有ceph卷的KVM虚拟机的磁盘管理方法及系统
JP2024071259A (ja) 計算機システム及びリソース割当制御方法

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant