KR101116615B1 - 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 - Google Patents
자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 Download PDFInfo
- Publication number
- KR101116615B1 KR101116615B1 KR1020070030376A KR20070030376A KR101116615B1 KR 101116615 B1 KR101116615 B1 KR 101116615B1 KR 1020070030376 A KR1020070030376 A KR 1020070030376A KR 20070030376 A KR20070030376 A KR 20070030376A KR 101116615 B1 KR101116615 B1 KR 101116615B1
- Authority
- KR
- South Korea
- Prior art keywords
- resource
- consumer
- usage
- manager
- application
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013468 resource allocation Methods 0.000 claims description 72
- 238000007726 management method Methods 0.000 claims description 26
- 230000006870 function Effects 0.000 claims description 9
- 230000006378 damage Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5014—Reservation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/504—Resource capping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 자바 가상 머신 및 그 위에서 수행되는 애플리케이션에 대한 자원 관리 방법에 관한 것으로서, 이 방법은 임의의 자원을 고유하게 식별케 하는 자원 식별자를 정의하는 단계;쓰레드별로, 자원을 사용하는 자원 소비자를 생성하는 단계; 자원 식별자별로, 자원을 관리하는 적어도 하나 이상의 자원 관리자를 정의하고 자원 관리자들을 타입별로 자원 관리자 등록소에 저장하는 단계; 하나 이상의 자원 관리자 각각이, 애플리케이션 전체 및, 애플리케이션에 속한 쓰레드에 대해 생성된 자원 소비자의 자원 사용량을 산출하여 저장하는 단계; 및 사용량에 대해 통지하는 단계를 포함한다.
본 발명의 애플리케이션 및 애플리케이션 내의 쓰레드 별로 자원을 관리하는 장치 및 방법에 의해 자바 가상 머신에서 사용되는 자원에 대한 애플리케이션 및 쓰레드 별 사용량 파악 및 제어가 가능하게 되어, 궁극적으로 자원에 대한 공정한 소비를 가능하게 한다.
Description
도 1은 일반적인 자바 가상 머신의 구조도이다.
도 2는 종래의 컨테인먼트 구조를 도시한 것이다.
도 3은 자바 가상 머신이 사용된 양방향 디지털 데이터 방송 정보 기기의 구성도이다.
도 4는 전형적인 애플리케이션 모델을 수행하는 컨텐인먼트 구조를 통한 애플리케이션 실행 방법의 흐름도이다.
도 5는 컨테인먼트 구조상에서 자바 애플리케이션을 수행하면서 사용되는 자원의 할당 과정의 흐름도이다.
도 6은 본 발명의 자원 관리 시스템이 추가된 본 발명의 컨테인먼트 구조이다.
도 7은 도 6의 자원 관리 시스템의 상세 구성도이다.
도 8은 본 발명의 자원 관리 시스템에 따른 애플리케이션 수행 방법의 흐름도이다.
도 9는 자원 정책 결정자가 애플리케이션에게 자원 관리자를 할당하는 방법 의 흐름도이다.
도 10은 자바 가상 머신에서 생성되는 쓰레드 별로 자원 소비자를 할당하는 방법의 흐름도이다.
도 11은 생성된 자원 소비자를 자원 관리자에 등록하는 방법의 흐름도이다.
도 12는 자원 관리자에서 자원 요청을 처리하는 방법의 흐름도이다.
도 13은 자원 관리자에서 자원 소멸을 처리하는 방법의 흐름도이다.
본 발명은 전자기기 내에 애플리케이션 관리자가 상주하여 다수의 자바 애플리케이션을 실행/종료시키는 컨테인먼트 구조 (Containment Framework) 환경에서 각 애플리케이션 및 애플리케이션 내 쓰레드가 사용하는 자원을 관리하는 방법 및 장치에 대한 것이다.
자바 가상 머신 (Java virtual Machine)은 네트워크 환경에서 애플리케이션을 다운로드 받아 실행시킬 수 있는 장점이 있어, 여러 정보 기기에서 표준 애플리케이션 수행 환경으로 사용되고 있다.
도 1은 통상적인 자바 가상 머신의 대표적 구조를 도시한 것이다. 자바 가상 머신(101)은 기본적으로, 클래스를 탑재하는 클래스 로더 (Class Loader)(102), 클래스 수행 중 가상 머신 명령어들을 CPU의 기계어로 미리 변환해주어 속도를 향상시키는 JIT (Just-In-Time) 컴파일러(104), 클래스의 수행 코드를 실행하기 위한 구성 요소로서 가상 머신 명령어들을 인식하여 그 명령을 수행하는 인터프리터(Interpreter)(105), 및 수행시간에 자원 (resource) 관리를 담당하는 가비지 콜렉터 (Garbage Collector)(GC)(106)를 포함한다.
도 2는 애플리케이션 관리자가 상주하여 다수의 애플리케이션을 생성/종료 시키는 컨테인먼트 구조의 실시 예를 도시한 것이다. 컨테인먼트 구조는 OS (Operation System)(205), 자바 가상 머신(204), 애플리케이션을 동작 가능케 하는 미들웨어 (가령, OCAP, ACAP)(203), 애플리케이션의 라이프 사이클 (life cycle)을 관리하는 애플리케이션 관리자 (AM)(202), 자바 애플리케이션 1...n (206), 네이티브 (native) 애플리케이션(207)으로 구성된다.
도 3은 도 2의 컨테인먼트 구조가 포함된 가전 기기의 예로서, 디지털 데이터 방송 정보 기기를 도시한 것이다. 이 정보 기기는 CPU(303)와 디스플레이 프로세서(302) 그리고 프로그램을 실행에 필요한 주메모리(305) 그리고 외부 연결 포트 (USB port, Serial Port 등), 플래시 메모리, 이더넷, 하드 디스크 등의 부가 하드웨어(304)로 구성된다. 주메모리(305)에는 컨텐인먼트 구조가 소프트웨어로서 탑재된다.
자바 가상 머신에서 사용되는 자원은 자바 가상 머신 구현 방식 및 그 위에서 수행되는 자바 미들웨어 및 자바 애플리케이션의 종류에 따라 다양하다. 일반적으로 자바 가상 머신에서 자바 애플리케이션을 수행시 사용되는 대표적인 자원들의 예는, 파일, 소켓, 네이티브 메모리, 힙 메모리, CPU 점유율, CPU 수행 시간 등이 있다.
도4는 도 2의 컨텐인먼트 구조 내 애플리케이션 관리자(202)가 애플리케이션을 생성/종료시키는 작업의 개략적 흐름도를 도시한 것이다.
먼저, 애플리케이션 관리자는 새로운 애플리케이션에 대한 생성 요청을 받고(401 단계), 애플리케이션을 식별하기 위한 식별자를 생성(402 단계) 및 저장(403 단계)한다. 이어서, 해당 애플리케이션을 시작하고(404 단계), 애플리케이션의 라이프 사이클에 맞춰 스테이트(state)를 변경한 후 애플리케이션을 종료시킨다(405 단계). 이러한 종래의 애플리케이션 생성-종료 과정에서 애플리케이션 및 그 애플리케이션에 속한 쓰레드가 사용하는 자원을 추적하는 작업은 전혀 고려되고 있지 않음을 알 수 있다.
도 5는 도 2의 컨테인먼트 구조 내 자바 애플리케이션 수행시 이뤄지는 자원 할당/해제 과정의 흐름도이다. 최근 들어 각 애플리케이션의 완전한 독립성을 보장하는 MVM (Multitasking Virtual Machine) 기술이 도입되고 있는데, MVM에서는, 수행되는 각 애플리케이션마다 리소드들의 쿼터 (Quota)를 설정하는 것이 일반적이다. 그 방법은 각 MVM 솔루션 마다 다를 수 있으나 일반적인 수행 프로세스를 살펴보면, 특정 자원에 대한 할당 요청이 들어온 경우(501 단계), 현재 애플리케이션이 그 자원에 대해 사용 중인 량과 새로 요청된 자원 량의 합이 애플리케이션이 이 자원에 대해 소비할 수 있는 최대값을 넘어서는지 확인하고(502 단계) 만약 넘지 않는다면 요청된 만큼 자원 사용량을 증감하는 업데이트를 수행하고(504 단계) 업데이트 된 자원을 할당한다(505 단계). 만약 애플리케이션이 소비할 수 있는 최대치를 넘는 경우, 그 자원에 대한 할당 요청을 거부한다 (Exception 발생)(503 단 계).
이와 같이, 기존의 자바 플랫폼에서는 JVM (Java Virtual Machine)에서 실행되는 애플리케이션 및 애플리케이션에 속하는 쓰레드(thread; 프로그램의 최소 실행 단위)가 사용하는 각종 자원(CPU 시간, CPU 점유율, Socket, File, Native Memory등)에 대한 사용 현황 파악 및 사용 제한 설정을 위한 방법이 제공되지 않았다. 표준 자바 플랫폼에서 유일하게 제공되는 자원 사용 정보는 자바 힙(Heap) 메모리의 현재 사용량 및 사용 가능 최대값 뿐이다. 기존의 MVM (Multitasking Virtual Machine)환경에서 애플리케이션이 사용하는 자원에 대한 관리 방법은 애플리케이션마다 각 자원에 대해 쿼터를 설정하고 현재 사용량을 참작하는 것이나, 자원에 대한 쿼터 및 사용량에 대한 참작 정보가 애플리케이션 단위로 발생되기 때문에 각 쓰레드가 소비하는 자원 량을 알 수 없다는 한계가 있다. 또한, 애플리케이션의 자원 사용량 변화에 대한 통지(notification) 기능이 없기 때문에, 자원 사용량을 주기적으로 확인하지 않는 한 그 사용 정도를 알 수 없다. 마지막으로, 확장성을 보장하는 표준 자원 관리 방식이 제안되지 않아 각 시스템 마다 애드 혹 (Ad-hoc) 모드의 자원 관리 방식을 채택함으로써 자원 관리 호환성이 보장되지 않고 있다.
그러나, 최근 들어 애플리케이션 관리자를 사용하여 다수의 자바 애플리케이션을 동시에 수행되는 전자 기기(예: DTV, Settop box, Mobile Phone 등)가 증가하는 추세에서, 각 애플리케이션 및 애플리케이션에 속한 쓰레드가 사용하는 자원을 관리하는 일은, 한정된 자원을 공정하고 효율적으로 사용하기 위해 반드시 필요하 다.
본 발명의 목적은, 애플리케이션 및 애플리케이션 내의 쓰레드 별로 자원을 관리하는 장치 및 방법을 제공하는 데 있다.
본 발명에 따른 바람직한 실시예에 있어서, 자바 가상 머신 및 그 위에서 수행되는 애플리케이션에 대한 자원 관리 방법이 제공되고, 이 방법은, 임의의 자원을 고유하게 식별케 하는 자원 식별자를 정의하는 단계; 쓰레드별로, 자원을 사용하는 자원 소비자를 생성하는 단계; 자원 식별자별로, 자원을 관리하는 적어도 하나 이상의 자원 관리자를 생성하고 생성된 자원 관리자들을 자원 관리자 등록소에 저장하는 단계; 상기 하나 이상의 자원 관리자 각각이, 애플리케이션 전체 및, 애플리케이션에 속한 쓰레드에 대해 생성된 자원 소비자의 자원 사용량을 산출하여 저장하는 단계; 및 상기 사용량에 대해 통지하는 단계를 포함한다.
상기 자원 관리자는 상기 통지 기능과 관련해 통지를 보낼 자원 사용량 감시자 정보를 등록해 보관함이 바람직하다.
상기 애플리케이션의 자원 사용량 산출은, 특정 자원에 대한 모든 애플리케이션들의 총 자원 사용량을, 상기 자원 관리자가, 자원 관리자 등록소에서 특정 자원에 대해 저장된 모든 자원 관리자를 반납하게 호출한 후 각 자원 관리자의 사용량을 더하여 산출함이 바람직하다.
본 발명에 따른 바람직한 실시예에 있어서, 자바 가상 머신 및 그 위에서 수행되는 애플리케이션에 대한 자원 관리 시스템이 제공되고, 이 시스템은, 쓰레드별로 자원을 사용하는 자원 소비자를 생성하는 자원 소비자 관리부; 및 자원 소비자 관리부의 요청에 따라, 임의의 자원을 고유하게 식별케 하는 자원 식별자를 정의하고, 자원 식별자별로, 자원을 관리하는 적어도 하나 이상의 자원 관리자를 생성하고, 동일한 자원을 위한 자원 식별자와 자원 소비자에 대해 자원 사용 쿼터를 설정하는 자원 할당 정책 결정자를 포함하고, 상기 자원 관리자는, 애플리케이션 전체 및, 애플리케이션에 속한 쓰레드에 대해 생성된 자원 소비자의 자원 사용량을 산출하여 저장하고, 상기 사용량에 대해 통지하는 기능을 가진다.
상기 자원 식별자 및 자원 관리자는 자바 언어로 작성됨이 바람직하다.
상기 자원 할당 정책 결정자는, 프로그램 내에 설정된 자원 할당 정책에 대한 정보에 따라 형성되거나, 외부에서 그 정보를 읽어들여 생성될 수 있고, 네트워크 통신을 통해 자바 수행 시간 중에 실시간으로 변경될 수 있음이 바람직하다.
상기 자원 소비자 관리부는, 새로운 자원 소비자를 생성한 후 그 자원 소비자를 자원 할당 정책 결정자에 알려, 해당 자원 소비자와는 동일한 자원을 위한 자원 관리자에 등록시키거나 해당 자원에 대한 자원 소비자 쿼터를 설정하도록 함이 바람직하다.
상기 시스템은, 새로운 애플리케이션이 작동될 때 그 애플리케이션의 식별자를 생성하고, 자원 할당 정책 결정자에게 그 애플리케이션에 대한 자원 관리자 생성 또는 쿼터 설정 등의 자원 할당 정책 적용에 필요한 작업을 요청하는 애플리케이션 관리자를 더 포함함이 바람직하다.
본 발명의 바람직한 실시예에 따라, 자바 가상 머신 및 그 위에서 수행되는 애플리케이션에 대한 자원 관리자 시스템이 포함된 컨테인먼트 구조 (containment framework)하에서 애플리케이션 생성시 자원을 관리하는 방법이 제공되고, 이 방법은, 실행할 애플리케이션에 대한 고유 식별자를 생성하여 저장하는 단계; 자원을 고유하게 식별하는 자원 식별자들이 배열된 리스트로부터 최초 배열 위치에 든 자원 식별자를 불러오고, 최초 배열 위치에 든 자원 식별자가 존재할 때, 그 자원 식별자 (즉, 자원)에 대해 자원 관리자가 생성되고, 생성된 자원 관리자에 최대(Max) 사용 값 (쿼터)이 설정되고, 자원 관리자를, 등록된 자원 관리자들이 타입별로 저장되는 자원 관리자 등록소에 등록하고, 생성된 자원 관리자와 애플리케이션 식별자에 대한 정보를 저장하는, 자원 할당 정책을 설정하는 단계; 및 애플리케이션을 시동하고 라이프 사이클에 맞게 애플리케이션의 상태를 변경하는 단계를 포함한다.
본 발명의 바람직한 실시예에 따라 자바 가상 머신 상에서 수행되는 모든 쓰레드들을 각각의 자원 소비자로 취급하여 해당 쓰레드의 자원을 관리하는 방법이 제공되고, 이 방법은, 상기 쓰레드에 대해 수정된 자바 가상 머신 쓰레드를 생성하는 단계를 포함하고, 이 단계는, 어떤 쓰레드 객체의 start() 메소드를 호출하는 단계; 쓰레드 객체를 위한 자원 소비자 객체 할당을 요청하는 단계; 상기 요청에 따라 새로운 자원 소비자 객체를 생성하고 다음 그 쓰레드가 소속된 애플리케이션의 식별자를 가져오는 단계; 상기 생성된 자원 소비자 객체 및 애플리케이션 식별자 정보를 전하여 해당 자원 소비자에 대한 자원 할당 정책 설정을 요청하는 단계; 해당 자원 소비자에 대한 자원 할당 정책 설정이 끝난 후, 쓰레드 객체의 run() 함수를 수행하여, 네이티브 쓰레드를 생성하는 단계를 포함한다.
상기 자원 소비자 정보에 따라 해당 자원 소비자에 대해 자원 할당 정책을 설정하는 단계는, 자원 식별자들의 리스트로부터 배열상 최초의 자원 식별자를 요청하는 단계; 상기 최초의 자원 식별자 자리가 비어 있지 않으면, 그 자원에 대해 자원 소비자가 속한 애플리케이션 식별자를 가지고 그 자원에 대해 할당된 자원 관리자를 가져오는 단계; 상기 가져온 자원 관리자에 자원 소비자를 등록시키는 단계; 상기 자원 소비자가 사용 가능한 최대값을 설정하는 단계를 포함함이 바람직하다.
상기 각 자원 관리자는 자원 관리자 자신 및 추가되는 각 자원 소비자의 자원 사용량을 저장하는 내부 변수를 가지고, 사용 현황을 파악하기 위해, 자원 할당 및 반납(소멸) 시 현재 자원 소비자가 속한 자원 관리자를 자원 등록소로부터 가져와 사용량을 산출하고, 자원 할당 요청시 요청된 만큼 자원 관리자 및 자원 소비자의 사용량을 업데이트할 수 있음이 바람직하다.
상기 자원 관리자에서 자원 할당 요청을 처리하는 방식은, 자원 할당 요청이 들어왔을 때, 요청된 자원 량과 현재 자원 관리자의 자원 사용량의 합이 자원 관리자에 할당된 최대 자원 사용량을 넘는지 확인하는 단계; 최대 자원 사용량을 넘으면 자원 할당 실패를 리턴 하고, 최대 자원 사용량을 초과하지 않으면, 요청된 자원 량과 현재 자원 소비자가 사용하고 있는 자원 량의 합이 자원 소비자에게 할당된 자원 사용 최대값 (쿼터)를 넘는지 확인하는 단계; 요청된 자원 량과 현재 자원 소비자가 사용하고 있는 자원 량의 합이 자원 소비자에게 할당된 자원 사용 최대값을 초과하면, 자원 할당 실패를 리턴하고, 자원 소비자에 할당된 자원 사용 최대값을 초과하지 않으면, 자원 관리자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 관리자의 자원 사용량을 요청한 자원 량만큼 증가(현재 사용량 값)시키는 단계; 현재 사용량 값과 이전 사용량 값 사이에 자원 관리자에게 설정된 오버플로 문턱치 (Overflow Threshold)가 존재하는지 확인하고, 오버플로 문턱치가 존재하면, 각 오버플로 문턱치에 대해, 문턱치가 오버플로 됐음을 (Threshold Overflow) 통지하는 단계; 자원 소비자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 소비자의 자원 사용량을 요청한 자원 량만큼 증가(현재 사용량 값)시키는 단계; 현재 사용량 값과 이전 사용량 값 사이에 자원 소비자에게 설정된 오버플로 문턱치가 존재하는지 확인하고, 그러한 것이 존재하면 각 오버플로 문턱치에 대해 오버플로 되었음을 통지하는 단계; 및 자원 할당을 승인했음을 리턴해 실제 자원 할당이 이뤄지도록 하는 단계를 포함함이 바람직하다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들에 대해 보다 상세히 설명할 것이다.
도 6은 본 발명에 따른 자원 관리 시스템이 포함된 컨테인먼트 구조를 도시한 것이다.
도 6의 컨테인먼트 구조는 일반적인 구성요소들인, OS (Operation System)(606), 자바 가상 머신(605), 애플리케이션을 동작 가능케 하는 미들웨어 (가령, OCAP, ACAP)(603), 애플리케이션의 라이프 사이클 (life cycle)을 관리하는 애플리케이션 관리자 (AM)(602), 자바 애플리케이션 1...n (607), 네이티브 (native) 애플리케이션(608)을 포함하고, 본 발명에 따른 애플리케이션 및 애플리케이션 내 쓰레드 별로 자원을 관리하는 자원 관리 시스템(604)을 더 포함한다.
이와 같이 자원 관리 시스템이 포함된 컨테인먼트 구조가 도 3의 메모리(305) 등에 탑재되어, 애플리케이션 관리자가 애플리케이션의 라이프 사이클을 관리하는 모든 애플리케이션 모델에 대해 적용될 수 있다.
도 7은 도 6의 자원 관리 시스템(604)의 상세 구성도이다.
먼저, 각 자원 마다 고유한 자원 식별자(709)가 존재한다는 것을 전제한다. 자원 식별자(709)는 인터페이스 형식으로 제공되어 어떤 클래스가 자원 식별자 인터페이스를 구현하면 해당 클래스의 인스턴스(instance)는 자원 관리자 시스템에서 자원으로서 식별된다.
자원 관리자(706)는 애플리케이션 및 애플리케이션의 쓰레드가 사용하는 자원에 대한 현재 사용량 데이터를 저장하고, 설정된 쿼터를 확인하여 자원 재할당 여부를 결정한다. 또한 자원 사용량에 대한 통지 기능을 가지고 있어 등록된 자원 사용량을 감시하는 자원 사용량 감시자(708)에게 자원 사용량의 변화를 통지할 수 있다. 자원 관리자(706) 역시 자원 식별자(709)와 마찬가지로 인터페이스 형식으로 제공되어 이 인터페이스를 구현하는 클래스는 자원 관리자로서 취급된다. 자원 관리자(706)는 한 자원에 대해 여러 개가 생성될 수 있다. 자원 관리자(706)는 또한 고유의 할당 정책을 포함할 수 있다.
자원 관리자 등록소 (resource manager registry)(707)는 모든 자원 관리자(706)들의 등록을 행한다. 이때 자원 관리자 등록소(707)는 타입(type) 별로 자원 관리자들을 구분하여 보관한다. 모든 자원 관리자가 이곳에 보관되기 때문에, 자원 관리자를 얻기 원하는 특정 자원에 대한 모든 애플리케이션의 총 사용량은, 자원 관리자 등록소(707)에서 해당 자원에 대해 저장된 모든 자원 관리자를 반납하게 호출한 후 각 자원 관리자의 사용량을 더하여 산출된다.
자원 할당 정책 결정자(704)는 시스템에 정의된 모든 자원 식별자를 생성하며, 자원 식별자 리스트를 가진다. 또한 어떤 애플리케이션 혹은 그 안의 쓰레드에 할당할 쿼터를 결정한다. 즉, 자원 할당 정책 결정자(704)는 모든 자원 및 자원 관리자에 대한 생성 및 할당 정책을 총괄한다. 자원 할당 정책에 대한 설정 방식은 구현되는 객체에 따라 다를 수 있다. 예를 들어, 프로그램 내에 자원 할당 정책에 대한 정보가 저장되어 있거나 XML 파일 등을 통해 그 정보를 읽어들일 수 있고, 네트워크 통신을 통해 자바 수행 시간에 실시간으로 자원 할당 정책을 변경할 수 있다.
자원 소비자(705)는 자원을 소비하는 주체로서, 본 발명에서는 자바 가상 머신에서 생성되는 쓰레드가 그 소비 주체가 된다.
자원 소비자 관리부(701)는 새로운 자원 소비자가 생성된 후 그 자원 소비자를 자원 할당 정책 결정자(704)에 알려 해당 자원 소비자를 적절한 자원 관리자에 등록시키거나 해당 자원에 대해 자원 소비자에 쿼타를 설정하는 작업 등이 수행되게 한다. 또, 자원 소비자 관리부(701)는 자원 소비자가 소멸한 경우, 그 자원 소비자를 등록된 모든 자원 관리자들로부터 제거하는 기능 역시 수행한다.
애플리케이션(703) 관리자는 새로운 애플리케이션을 작동시켜야 할 때 그 애플리케이션의 식별자(702)를 생성하고, 자원 할당 정책 결정자(704)에게 그 애플리케이션에 대한 자원 관리자 생성 또는 쿼터 설정 등의 자원 할당 정책 적용에 필요 한 작업을 요청한다.
자원 관리자(706)의 상세한 구성 및 그 동작에 대해서는 도 14를 참조하여 후에 더 설명할 것이다.
도 8은 본 발명의 자원 관리자 시스템(혹은 구조)이 포함된 컨테인먼트 구조하에서 애플리케이션을 생성하는 과정의 흐름도를 도시한 것이다.
먼저, 애플리케이션을 초기화(801 단계)하고 해당 애플리케이션에 대한 고유 식별자를 생성(802 단계) 및 저장(803 단계)한다. 그 다음, 자원 할당 정책 결정자(703)에 상기 애플리케이션에 대한 자원 할당 정책 적용을 요청(804 단계) 한다. 804 단계는 종래의 애플리케이션 실행 과정에는 없던 것으로, 새로운 애플리케이션을 실행하기 이전에 애플리케이션에 대한 자원 할당 정책을 설정하는 단계이다. 그 자세한 내용은 이후에 설명할 것이다. 애플리케이션에 대한 자원 할당 정책 적용 요청 후, 애플리케이션을 시동하고(805 단계), 라이프 사이클에 맞게 애플리케이션의 상태를 변경한 후 최종적으로 종료시킨다(806 단계).
도 9는 도 8의 애플리케이션에 대해 자원 할당 정책을 설정하는 804 단계의 상세한 실시예이다.
먼저, 자원 할당 정책 결정자(704) 내 자원 식별자 리스트에 배열된 최초 자원 식별자가 요청된다(901 단계). 만약 이 최초 배열 위치에 든 자원 식별자(709)가 존재한다면 (902 단계), 즉 등록된 자원이 있으면 그 자원에 대해 자원 관리자(706)가 생성된다(903 단계). 생성된 자원 관리자에 최대(Max) 사용 값 (Quota;쿼터)이 설정된다(904 단계). 그 자원 관리자가 자원 관리자 등록소에 등록된 다(905 단계). 이어서, 생성된 자원 관리자와 애플리케이션 식별자에 대한 정보가 자원 할당 정책 결정자(704)의 내부 테이블에 저장된다(906 단계). 이 과정은 모든 등록된 자원에 대해 실행된다(902 - 907 단계).
도 9의 실시예는 모든 애플리케이션에 대해 등록된 모든 자원에 대해 쿼터를 설정하는 경우에 해당된다. 즉, 자원 할당 정책 결정자(704)의 정책에 따른 특정한 자원에 대해서만 자원 관리자를 생성하고 쿼터를 설정하는 것이 가능하며, 이러한 자원관리자 생성 및 쿼터 설정은 자원 할당 정책에 따라 다를 수 있다.
도 10은 자바 가상 머신 상에서 수행되는 모든 쓰레드들을 각각의 자원 소비자로 취급하기 위해 수정된 자바 가상 머신 쓰레드 생성 모듈의 수행 단계이다.
먼저, 어떤 쓰레드 객체의 start() 메소드가 호출되고(1001 단계), 자원 소비자 관리부(701)에 그 쓰레드 객체를 위한 자원 소비자 객체 할당이 요청된다(1002 단계). 자원 소비자 관리부(701)는 새로운 자원 소비자 객체를 생성하고 다음 그 쓰레드가 소속된 애플리케이션의 식별자를 가져온다(1003 단계). 자원 할당 정책 결정자(704)로 상기 생성된 자원 소비자 객체 및 애플리케이션 식별자 정보가 전해지면서 해당 자원 소비자에 대한 자원 할당 정책 설정을 요청한다(1004 단계). 해당 자원 소비자에 대한 자원 할당 정책 설정이 끝난 후, 쓰레드 객체의 run() 함수가 수행되고(1005 단계) 그 와중에 네이티브 쓰레드가 실행된다(1006 단계).
도 11은 도 10의 1004 단계에서 자원 할당 정책 결정자(704)가 넘겨받은 자원 소비자 정보에 따라 해당 자원 소비자에 대해 자원 할당 정책을 설정하는 실시 예이다.
먼저, 자원 할당 정책 결정자(704)가 가지고 있는 자원 식별자 리스트로부터 배열 상 최초의 자원 식별자가 요청된다(1101 단계). 만약, 이 자원 식별자 자리가 비어 있지 않다면 (1102 단계), 즉 등록된 자원이 있는 경우, 그 자원에 대해 자원 소비자가 속한 애플리케이션 식별자를 가지고 그 자원에 대해 할당된 자원 관리자를 가져온다(1103 단계). 이어서 자원 할당 정책 결정자(704)는, 그 자원 관리자에 자원 소비자를 등록시킨다(1104 단계). 그리고, 자원 소비자가 사용 가능한 최대값을 설정한다(1105 단계). 앞의 단계를 모든 등록된 자원에 대해 실행한다.
도 11의 실시 예는 모든 자원 소비자를, 모든 등록된 자원에 대해 자원 관리자에 추가시키고, 자원별 소비자가 사용할 수 있는 최대값 (쿼터)를 설정하는 경우에 해당한다. 즉, 자원 할당 정책 결정자의 정책에 따라 특정한 자원, 특정한 자원 소비자에 대해서 자원 관리자에 추가하고 쿼터를 설정하는 것이 가능하며, 자원 할당 정책에 따라 자원 관리자에 추가되는 내용 및 쿼터 설정 값이 다를 수 있다.
각 자원 관리자는 자원 관리자 자신 및 추가되는 각 자원 소비자의 자원 사용량을 저장하는 내부 변수를 가진다. 이 사용 현황을 파악하기 위해, 자원 할당 및 반납(소멸)하는 부분에서 현재 자원 소비자(쓰레드)가 속한 자원 관리자를 자원 등록소로부터 가져온다. 그리고나서, 확인된 그 관리자 및 현재 소비자의 자원 사용량을 업데이트 한다.
도 12는 자원 관리자(705)에서 자원 할당 요청을 처리하는 방법의 흐름도이 다.
먼저, 자원 할당 요청이 들어왔을 때, 요청된 자원 량과 현재 자원 관리자의 자원 사용량의 합이 자원 관리자에 할당된 최대 자원 사용량을 넘는지 확인한다(1201 단계). 만약 최대 자원 사용량을 넘어간다면 자원 할당 실패를 리턴 한다(1204 단계). 최대 자원 사용량을 초과하지 않으면, 요청된 자원 량과 현재 자원 소비자가 사용하고 있는 자원 량의 합이 자원 소비자에게 할당된 자원 사용 최대값 (쿼터)를 넘어서는지 확인한다(1202 단계). 요청된 자원 량과 현재 자원 소비자가 사용하고 있는 자원 량의 합이 자원 소비자에게 할당된 자원 사용 최대값을 초과하면, 자원 할당 실패를 리턴 한다(1204 단계). 1202 단계에서 자원 소비자에 할당된 자원 사용 최대값을 초과하지 않으면, 자원 관리자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 관리자의 자원 사용량을 요청한 자원 량만큼 증가시킨다(현재 사용량 값)(1203 단계). 현재 사용량 값과 이전 사용량 값 사이에 자원 관리자에게 설정된 오버플로 문턱치 (Overflow Threshold)가 존재하는지 확인한다 (1205 단계). 오버플로 문턱치가 존재하면, 각 오버플로 문턱치에 대해, 문턱치가 오버플로 됐음을 (Threshold Overflow) 통지한다(1206 단계). 이어서 자원 소비자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 소비자의 자원 사용량을 요청한 자원 량만큼 증가시킨다(현재 사용량 값)(1207 단계). 이어서, 현재 사용량 값과 이전 사용량 값 사이에 리소스 소비자에게 설정된 오버플로 문턱치가 존재하는지 확인하고(1208 단계), 그러한 것이 존재하면 각 오버플로 문턱치에 대해 오버플로 되었음을 통지한다(1209 단계). 마 지막으로, 자원 할당을 승인했음을 리턴 한다(1210 단계). 자원 할당 승인이 떨어진 후 실제 자원 할당이 이뤄진다.
도 13은 자원 관리자(706)에서 자원 소멸 처리를 수행하는 방법의 흐름도를 도시한 것이다.
자원에 대한 소멸(해제)요청이 왔을 때, 자원 관리자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 관리자의 자원 사용량에서 요청한 자원 량만큼을 감량한다(현재 사용량 값)(1301 단계). 이어서, 현재 사용량 값과 이전 사용량 값 사이에 자원 관리자에게 설정된 언더플로 문턱치 (Underflow Threshold)가 존재하는지 확인한다(1302 단계). 만약 언더플로 문턱치가 존재한다면, 각 언더플로 문턱치에 대해 언더플로가 일어났음을 통지 한다(1303 단계). 그리고 자원 소비자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 소비자의 자원 사용량에서 요청한 자원 량만큼을 감량한다(현재 사용량 값)(1304 단계). 그리고 나서 현재 사용량 값과 이전 사용량 값 사이에 자원 소비자에게 설정된 언더플로 문턱치가 존재하는지 확인한다(1305 단계). 언더플로 문턱치가 존재하면, 각 언더플로 문턱치에 대해 언더플로가 됐음을 통지 한다(1306 단계). 이 과정 후에 실제로 자원이 해제된다.
도 14는 도 7의 자원 관리자(706)의 상세 구성도이다.
자원 관리자(706)는 자원 식별자가 나타내는 하나의 자원에 대해 생성되기 때문에, 어떤 자원에 대한 자원 관리자인지를 식별하기 위해 자원 식별자 포인터(1404)를 포함한다. 임의의 자원 소비자가 자원 관리자의 쿼터를 공유하기를 원 할 때, 그 자원 소비자가 해당 자원 관리자에 등록된다. 등록된 자원 소비자들이 리스트 상에서 배열된다(1403). 자원 관리자(706)는 또한 자원 관리자 자신 및 등록된 자원 소비자 각각의 자원 사용량에 대한 정보를 보유해야 하므로, 자원 관리자 및 각 자원 소비자의 현재 사용량 정보의 레코드 배열(1405)을 포함한다. 자원 관리자(706)는 자원 사용량 감시자(708)가 배열된 리스트 (1402) 역시 포함한다. 자원 사용량 감시자(708)는 자원 관리자(706) 및 등록된 자원 소비자 각각에 대해 등록될 수 있는데, 사용량이 특정 값에 도달할 때 그 등록된 관련 자원 사용량 감시자로 통보가 이뤄진다.
본 발명에 따르면, 컨테인먼트 구조가 실행되는 자바 수행 환경에서 자원 관리자를 포함하는 자원 관리 구조를 통해 애플리케이션 및 그 애플리케이션에 속한 쓰레드 별로 자원 사용량 산출이 가능해 지고, 또 자원 사용량에 따른 알림(Notification) 기능이 가능하기 때문에 보다 정밀한 자원 할당이 이뤄질 수 있다. 또한, 본 발명의 자원 할당 정책 결정자를 네트워크를 통해 변경할 수 있도록 구현하면 자바 가상 머신이 수행되는 런타임 중에 자원 사용 정책을 수정할 수 있는 장점이 있다. 결국 본 발명을 통해, 기존 애플리케이션별 자원 관리보다 세밀한 쓰레드 레벨의 자원 관리를 통해 쓰레드별 자원 사용에 대한 확인 및 제한이 이뤄질 수 있게 된다. 또, 자원 관리자 등록소 같은 레지스트리를 포함함으로써 자원 관리자 접근을 단일화하여 자원 관리자에 대한 접근성을 강화하였다. 마지막으로, 자원 식별자, 자원 관리자 등을 자바 인터페이스로 제공하여 자원 및 자원 관리자에 대한 구현의 편이성을 제공하였다.
본 발명의 자원 관리자 및 자원 관리자 시스템 (Framework)은 자바 언어로 작성되어 다양한 플랫폼에 이식이 편리한 장점을 가지고 있고, 제3자로부터 제공되는 자원 관리가 가능한 확장성을 보장할 수 있다.
본 발명의 애플리케이션 및 애플리케이션 내의 쓰레드 별로 자원을 관리하는 장치 및 방법에 의해 자바 가상 머신에서 사용되는 자원에 대한 애플리케이션 및 쓰레드 별 사용량 파악 및 제어가 가능하게 되어, 궁극적으로 자원에 대한 공정한 소비를 가능하게 한다.
Claims (14)
- 자바 가상 머신 및 그 위에서 수행되는 애플리케이션에 대한 자원 관리 방법에 있어서,임의의 자원을 식별케 하는 자원 식별자를 정의하는 단계;자원 식별자별로, 자원을 관리하는 적어도 하나 이상의 자원 관리자를 생성하고 생성된 자원 관리자들을 자원 관리자 등록소에 저장하는 단계;상기 하나 이상의 자원 관리자 각각이, 애플리케이션 전체 및, 애플리케이션에 속한 쓰레드에 대해 생성된 자원 소비자의 자원 사용량을 산출하여 저장하는 단계를 포함함을 특징으로 하는 자원 관리 방법.
- 제1항에 있어서,쓰레드별로, 자원을 사용하는 자원 소비자를 생성하는 단계를 더 포함함을 특징으로 하는 자원 관리 방법.
- 제1항에 있어서, 상기 하나 이상의 자원 관리자 각각이, 애플리케이션 전체 및 애필리케이션에 속한 쓰레드에 대해 산출된 자원 소비자의 자원 사용량을 자원 사용량 감시자에 통지하는 단계를 더 포함하며,상기 하나 이상의 자원 관리자는 통지를 보낼 자원 사용량 감시자 정보를 등록해 보관함을 특징으로 하는 자원 관리 방법.
- 제1항에 있어서, 상기 애플리케이션의 자원 사용량 산출은,상기 애플리케이션의 특정 자원에 대한 모든 애플리케이션들의 총 자원 사용량을, 상기 자원 관리자가, 자원 관리자 등록소에서 특정 자원에 대해 저장된 모든 자원 관리자를 반납하게 호출한 후 각 자원 관리자의 사용량을 더하여 산출함을 특징으로 하는 자원 관리 방법.
- 자바 가상 머신 및 그 위에서 수행되는 애플리케이션에 대한 자원 관리 시스템에 있어서,쓰레드별로 자원을 사용하는 자원 소비자를 생성하는 자원 소비자 관리부; 및자원 소비자 관리부의 요청에 따라, 임의의 자원을 고유하게 식별케 하는 자원 식별자를 정의하고, 자원 식별자별로, 자원을 관리하는 적어도 하나 이상의 자원 관리자를 생성하고, 동일한 자원을 위한 자원 식별자와 자원 소비자에 대해 자원 사용 쿼터를 설정하는 자원 할당 정책 결정자를 포함하고,상기 자원 관리자는, 애플리케이션 전체 및, 애플리케이션에 속한 쓰레드에 대해 생성된 자원 소비자의 자원 사용량을 산출하여 저장하고, 상기 사용량에 대해 자원 사용량 감시자에 통지하는 기능을 가짐을 특징으로 하는 자원 관리 시스템.
- 제5항에 있어서, 상기 자원 식별자 및 자원 관리자는 자바 언어로 작성됨을 특징으로 하는 자원 관리 시스템.
- 제5항에 있어서, 상기 자원 할당 정책 결정자는, 프로그램 내에 설정된 자원 할당 정책에 대한 정보에 따라 형성되거나, 외부에서 그 정보를 읽어들여 생성될 수 있고, 네트워크 통신을 통해 자바 수행 시간 중에 실시간으로 변경될 수 있음을 특징으로 하는 자원 관리 시스템.
- 제5항에 있어서, 상기 자원 소비자 관리부는, 새로운 자원 소비자를 생성한 후 그 자원 소비자를 자원 할당 정책 결정자에 알려, 해당 자원 소비자와는 동일한 자원을 위한 자원 관리자에 등록시키거나 해당 자원에 대한 자원 소비자 쿼타를 설정하도록 함을 특징으로 하는 자원 관리 시스템.
- 제5항에 있어서,새로운 애플리케이션이 작동될 때 그 애플리케이션의 식별자를 생성하고, 자원 할당 정책 결정자에게 그 애플리케이션에 대한 자원 관리자 생성 또는 쿼터 설정 등의 자원 할당 정책 적용에 필요한 작업을 요청하는 애플리케이션 관리자를 더 포함함을 특징으로 하는 자원 관리 시스템.
- 자바 가상 머신 및 그 위에서 수행되는 애플리케이션에 대한 자원 관리자 시스템이 포함된 컨테인먼트 구조 (containment framework)하에서 애플리케이션 생성시 자원을 관리하는 방법에 있어서,실행할 애플리케이션에 대한 고유 식별자를 생성하여 저장하는 단계;자원을 고유하게 식별하는 자원 식별자들이 배열된 리스트로부터 최초 배열 위치에 든 자원 식별자를 불러오고, 최초 배열 위치에 든 자원 식별자가 존재할 때, 그 자원 식별자 (즉, 자원)에 대해 자원 관리자가 생성되고, 생성된 자원 관리자에 최대(Max) 사용 값 (쿼터)이 설정되고, 자원 관리자를, 등록된 자원 관리자들이 타입별로 저장되는 자원 관리자 등록소에 등록하고, 생성된 자원 관리자와 애플리케이션 식별자에 대한 정보를 저장하는, 자원 할당 정책을 설정하는 단계; 및애플리케이션을 시동하고 라이프 사이클에 맞게 애플리케이션의 상태를 변경하는 단계를 포함함을 특징으로 하는 자원 관리 방법.
- 자바 가상 머신 상에서 수행되는 모든 쓰레드들을 각각의 자원 소비자로 취급하여 해당 쓰레드의 자원을 관리하는 방법에 있어서,상기 쓰레드에 대해 수정된 자바 가상 머신 쓰레드를 생성하는 단계를 포함하고, 이 단계는,어떤 쓰레드 객체의 start() 메소드를 호출하는 단계;쓰레드 객체를 위한 자원 소비자 객체 할당을 요청하는 단계;상기 요청에 따라 새로운 자원 소비자 객체를 생성하고 다음 그 쓰레드가 소속된 애플리케이션의 식별자를 가져오는 단계;상기 생성된 자원 소비자 객체 및 애플리케이션 식별자 정보를 전하여 해당 자원 소비자에 대한 자원 할당 정책 설정을 요청하는 단계;해당 자원 소비자에 대한 자원 할당 정책 설정이 끝난 후, 쓰레드 객체의 run() 함수를 수행하여, 네이티브 쓰레드를 생성하는 단계를 포함함을 특징으로 하는 방법.
- 제11항에 있어서, 상기 자원 소비자 정보에 따라 해당 자원 소비자에 대해 자원 할당 정책을 설정하는 단계는,자원 식별자들의 리스트로부터 배열상 최초의 자원 식별자를 요청하는 단계;상기 최초의 자원 식별자 자리가 비어 있지 않으면, 그 자원에 대해 자원 소비자가 속한 애플리케이션 식별자를 가지고 그 자원에 대해 할당된 자원 관리자를 가져오는 단계;상기 가져온 자원 관리자에 자원 소비자를 등록시키는 단계;상기 자원 소비자가 사용 가능한 최대값을 설정하는 단계를 포함함을 특징으로 하는 자원 관리 방법.
- 제12항에 있어서, 각 자원 관리자는 자원 관리자 자신 및 추가되는 각 자원 소비자의 자원 사용량을 저장하는 내부 변수를 가지고, 사용 현황을 파악하기 위해, 자원 할당 및 반납(소멸) 시 현재 자원 소비자가 속한 자원 관리자를 자원 등록소로부터 가져와 사용량을 산출하고, 자원 할당 요청시 요청된 만큼 자원 관리자 및 자원 소비자의 사용량을 업데이트할 수 있음을 특징으로 하는 자원 관리 방법.
- 제13항에 있어서, 자원 관리자에서 자원 할당 요청을 처리하는 방식은,자원 할당 요청이 들어왔을 때, 요청된 자원 량과 현재 자원 관리자의 자원 사용량의 합이 자원 관리자에 할당된 최대 자원 사용량을 넘는지 확인하는 단계;최대 자원 사용량을 넘으면 자원 할당 실패를 리턴 하고, 최대 자원 사용량을 초과하지 않으면, 요청된 자원 량과 현재 자원 소비자가 사용하고 있는 자원 량의 합이 자원 소비자에게 할당된 자원 사용 최대값 (쿼터)를 넘는지 확인하는 단계;요청된 자원 량과 현재 자원 소비자가 사용하고 있는 자원 량의 합이 자원 소비자에게 할당된 자원 사용 최대값을 초과하면, 자원 할당 실패를 리턴하고, 자원 소비자에 할당된 자원 사용 최대값을 초과하지 않으면, 자원 관리자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 관리자의 자원 사용량을 요청한 자원 량만큼 증가(현재 사용량 값)시키는 단계;현재 사용량 값과 이전 사용량 값 사이에 자원 관리자에게 설정된 오버플로 문턱치 (Overflow Threshold)가 존재하는지 확인하고, 오버플로 문턱치가 존재하면, 각 오버플로 문턱치에 대해, 문턱치가 오버플로 됐음을 (Threshold Overflow) 통지하는 단계;자원 소비자의 현재 자원 사용량을 임시 변수에 저장하고(이전 사용량 값) 자원 소비자의 자원 사용량을 요청한 자원 량만큼 증가(현재 사용량 값)시키는 단계;현재 사용량 값과 이전 사용량 값 사이에 자원 소비자에게 설정된 오버플로 문턱치가 존재하는지 확인하고, 그러한 것이 존재하면 각 오버플로 문턱치에 대해 오버플로 되었음을 통지하는 단계; 및자원 할당을 승인했음을 리턴해 실제 자원 할당이 이뤄지도록 하는 단계를 포함함을 특징으로 하는 자원 관리 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070030376A KR101116615B1 (ko) | 2007-03-28 | 2007-03-28 | 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 |
US12/054,865 US8302103B2 (en) | 2007-03-28 | 2008-03-25 | System and method for managing resources of applications and threads performed on java virtual machine |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070030376A KR101116615B1 (ko) | 2007-03-28 | 2007-03-28 | 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080088041A KR20080088041A (ko) | 2008-10-02 |
KR101116615B1 true KR101116615B1 (ko) | 2012-03-07 |
Family
ID=39796569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070030376A KR101116615B1 (ko) | 2007-03-28 | 2007-03-28 | 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8302103B2 (ko) |
KR (1) | KR101116615B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210101111A (ko) * | 2020-02-07 | 2021-08-18 | 쿠팡 주식회사 | 실시간 가상 서버 성능 데이터의 중앙 집중화 및 진단을 위한 시스템 및 방법 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE47735E1 (en) | 2001-04-20 | 2019-11-19 | Progme Corporation | Audio/video program-related hyperlink printer |
KR101610830B1 (ko) | 2009-11-05 | 2016-04-11 | 삼성전자주식회사 | 어플리케이션 실행 장치 및 방법 |
US8862914B2 (en) | 2010-02-26 | 2014-10-14 | Microsoft Corporation | Virtual machine power consumption measurement and management |
US8831993B2 (en) * | 2010-03-19 | 2014-09-09 | Novell, Inc. | Techniques for sharing virtual machine (VM) resources |
US9003416B2 (en) * | 2010-09-29 | 2015-04-07 | International Business Machines Corporation | Predicting resource requirements for a computer application |
US8776061B2 (en) * | 2010-12-16 | 2014-07-08 | International Business Machines Corporation | Real-time distributed monitoring of local and global processor resource allocations and deallocations |
US8990823B2 (en) * | 2011-03-10 | 2015-03-24 | International Business Machines Corporation | Optimizing virtual machine synchronization for application software |
US9041860B2 (en) | 2011-05-31 | 2015-05-26 | Brian K. Buchheit | Simultaneously presenting an enhanced and primary stream associated with a digital television broadcast |
US8612990B1 (en) * | 2011-10-25 | 2013-12-17 | Google Inc. | Prioritized rate scheduler for a storage system |
US9223623B2 (en) * | 2012-03-28 | 2015-12-29 | Bmc Software, Inc. | Dynamic service resource control |
US8881149B2 (en) | 2012-04-11 | 2014-11-04 | International Business Machines Corporation | Control of java resource runtime usage |
US9158651B2 (en) | 2012-07-27 | 2015-10-13 | Hewlett-Packard Development Company, L.P. | Monitoring thread starvation using stack trace sampling and based on a total elapsed time |
US9092617B2 (en) * | 2012-11-08 | 2015-07-28 | Intel Corporation | Protecting systems from unauthorized access to system resources using browser independent web page technology |
CN104750558B (zh) * | 2013-12-31 | 2018-07-03 | 伊姆西公司 | 在分层配额系统中管理资源分配的方法和装置 |
CN103810029A (zh) * | 2014-02-08 | 2014-05-21 | 南开大学 | 一种基于虚拟机出租通用计算能力的系统及方法 |
US9703611B1 (en) * | 2014-03-21 | 2017-07-11 | Amazon Technologies, Inc. | Isolating resources for utilization by tenants executing in multi-tenant software containers |
US9781054B1 (en) * | 2014-07-25 | 2017-10-03 | Google Inc. | Quota-based resource scheduling |
US10516733B2 (en) * | 2014-11-25 | 2019-12-24 | Auth0, Inc. | Multi-tenancy via code encapsulated in server requests |
US9697046B2 (en) * | 2015-06-19 | 2017-07-04 | Vmware, Inc. | Managing resource reservations in a highly parallel application |
US9736671B2 (en) | 2016-01-18 | 2017-08-15 | International Business Machines Corporation | Data usage recommendation generator |
US10922089B2 (en) * | 2016-09-22 | 2021-02-16 | Groupon, Inc. | Mobile service applications |
CN106991013B (zh) * | 2017-04-18 | 2018-09-07 | 腾讯科技(深圳)有限公司 | 一种对资源请求进行处理的方法及装置 |
US10579511B2 (en) * | 2017-05-10 | 2020-03-03 | Bank Of America Corporation | Flexible testing environment using a cloud infrastructure—cloud technology |
US10073686B1 (en) * | 2017-08-10 | 2018-09-11 | Sap Se | Function serialization for inter-thread messaging |
CN108874546B (zh) * | 2018-06-26 | 2021-09-28 | 郑州云海信息技术有限公司 | 一种linux优化资源使用的系统及方法 |
US11356387B1 (en) * | 2020-12-14 | 2022-06-07 | Cigna Intellectual Property, Inc. | Anomaly detection for multiple parameters |
CN113312243B (zh) * | 2021-06-29 | 2024-07-05 | 胡学锋 | 一种资源监控方法及系统 |
US11843546B1 (en) * | 2023-01-17 | 2023-12-12 | Capital One Services, Llc | Determining resource usage metrics for cloud computing systems |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002259146A (ja) | 2000-05-15 | 2002-09-13 | Matsushita Electric Ind Co Ltd | アプリケーション実行装置及び方法 |
JP2003186683A (ja) | 2001-12-17 | 2003-07-04 | Canon Inc | 複数アプリケーション実行システム及び記憶媒体 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08249226A (ja) | 1995-03-08 | 1996-09-27 | Hitachi Ltd | メモリ資源の管理システム |
US6931544B1 (en) * | 1998-12-18 | 2005-08-16 | The Sco Group, Inc. | Method and apparatus for executing multiple JAVA(™) applications on a single JAVA(™) virtual machine |
US7293090B1 (en) * | 1999-01-15 | 2007-11-06 | Cisco Technology, Inc. | Resource management protocol for a configurable network router |
US6782408B1 (en) * | 1999-03-30 | 2004-08-24 | International Business Machines Corporation | Controlling a number of instances of an application running in a computing environment |
US20010042139A1 (en) * | 2000-03-31 | 2001-11-15 | Aprisma Management Technologies | Replicated resource management system for managing resources in a distributed application and maintaining a relativistic view of state |
US7024668B2 (en) * | 2000-05-15 | 2006-04-04 | Matsushita Electric Industrial Co., Ltd. | Application execution apparatus and method |
KR20020053516A (ko) | 2000-12-27 | 2002-07-05 | 오길록 | 자바 객체 트랜잭션 서비스 시스템에서의 자원관리자 등록장치 및 그 방법 |
US6910209B2 (en) * | 2001-04-30 | 2005-06-21 | Sun Microsystems, Inc. | Clean thread termination |
US7073177B2 (en) * | 2001-05-10 | 2006-07-04 | Sun Microsystems, Inc. | Resource managing system for changing resource consumption state of the lower priority resource entity to more restrictive state when resource reached critical level |
US20030083892A1 (en) * | 2001-11-01 | 2003-05-01 | Arun Ramachandran | Process for one-stop shopping of all available license deals available using a usage based licensing server data structure |
US7234144B2 (en) * | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
US20030172213A1 (en) * | 2002-03-06 | 2003-09-11 | GARCIA Enrique | Artificially intelligent arbitration system and process for optimizing multiple processes sharing a resource |
US7299468B2 (en) * | 2003-04-29 | 2007-11-20 | International Business Machines Corporation | Management of virtual machines to utilize shared resources |
US7389303B2 (en) * | 2003-06-30 | 2008-06-17 | Microsoft Corporation | Method and system for supporting multiple independent transactional resource managers on a single logical volume |
GB2412754B (en) * | 2004-03-30 | 2007-07-11 | Hewlett Packard Development Co | Provision of resource allocation information |
WO2006129819A1 (en) * | 2005-05-31 | 2006-12-07 | Matsushita Electric Industrial Co., Ltd. | Broadcast receiving terminal and program execution method |
KR101140522B1 (ko) | 2005-07-14 | 2012-04-30 | 에스케이플래닛 주식회사 | 객체 관리 시스템 및 방법 |
US7694082B2 (en) * | 2005-07-29 | 2010-04-06 | International Business Machines Corporation | Computer program and method for managing resources in a distributed storage system |
-
2007
- 2007-03-28 KR KR1020070030376A patent/KR101116615B1/ko not_active IP Right Cessation
-
2008
- 2008-03-25 US US12/054,865 patent/US8302103B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002259146A (ja) | 2000-05-15 | 2002-09-13 | Matsushita Electric Ind Co Ltd | アプリケーション実行装置及び方法 |
JP2003186683A (ja) | 2001-12-17 | 2003-07-04 | Canon Inc | 複数アプリケーション実行システム及び記憶媒体 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210101111A (ko) * | 2020-02-07 | 2021-08-18 | 쿠팡 주식회사 | 실시간 가상 서버 성능 데이터의 중앙 집중화 및 진단을 위한 시스템 및 방법 |
KR102309806B1 (ko) | 2020-02-07 | 2021-10-08 | 쿠팡 주식회사 | 실시간 가상 서버 성능 데이터의 중앙 집중화 및 진단을 위한 시스템 및 방법 |
US11544098B2 (en) | 2020-02-07 | 2023-01-03 | Coupang Corp. | Systems and methods for centralization and diagnostics for live virtual server performance data |
Also Published As
Publication number | Publication date |
---|---|
US8302103B2 (en) | 2012-10-30 |
KR20080088041A (ko) | 2008-10-02 |
US20080244576A1 (en) | 2008-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101116615B1 (ko) | 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 | |
US10915357B2 (en) | System and method for structuring self-provisioning workloads deployed in virtualized data centers | |
US11681562B2 (en) | Resource manager for managing the sharing of resources among multiple workloads in a distributed computing environment | |
US8141090B1 (en) | Automated model-based provisioning of resources | |
US8065676B1 (en) | Automated provisioning of virtual machines for a virtual machine buffer pool and production pool | |
CN106663035B (zh) | 用于资源隔离和消耗的系统、方法、介质和装置 | |
US8533701B2 (en) | Virtual machine image update service | |
US7203941B2 (en) | Associating a native resource with an application | |
US8881149B2 (en) | Control of java resource runtime usage | |
US20180146031A1 (en) | Life Cycle Management Method and Apparatus | |
US7840967B1 (en) | Sharing data among isolated applications | |
US11467874B2 (en) | System and method for resource management | |
AU2007281686A1 (en) | System and method for providing hardware virtualization in a virtual machine environment | |
JP2005534116A (ja) | 複数の消費者をもつコンピュータシステムで資源を動的に割当てて管理する方法 | |
US10728169B1 (en) | Instance upgrade migration | |
CN108141378B (zh) | Vnfd中的休眠vdu | |
US20070198723A1 (en) | Apparatus and method for managing resources in containment framework environment | |
CN109347716B (zh) | 消费者vnf的实例化方法及装置 | |
CN112000439A (zh) | 一种实现云原生应用管理虚拟机的方法 | |
CN109347661A (zh) | 消费者vnf的实例化方法及装置 | |
WO2023179387A1 (zh) | 云应用调度方法、装置、电子设备及存储介质 | |
KR101085763B1 (ko) | 멀티-프로세서 시스템에서의 메모리 할당 | |
US11868769B1 (en) | Automatically determining and modifying environments for running microservices in a performant and cost-effective manner | |
CN115964128A (zh) | 一种异构gpu资源管理和调度方法和系统 | |
KR101950484B1 (ko) | 안드로이드의 실시간 태스크 관리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160128 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170125 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180130 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |