KR20160147984A - 트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락킹 메커니즘을 지원하는 시스템 및 방법 - Google Patents

트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락킹 메커니즘을 지원하는 시스템 및 방법 Download PDF

Info

Publication number
KR20160147984A
KR20160147984A KR1020167033477A KR20167033477A KR20160147984A KR 20160147984 A KR20160147984 A KR 20160147984A KR 1020167033477 A KR1020167033477 A KR 1020167033477A KR 20167033477 A KR20167033477 A KR 20167033477A KR 20160147984 A KR20160147984 A KR 20160147984A
Authority
KR
South Korea
Prior art keywords
spin
tuning period
count
lock
current tuning
Prior art date
Application number
KR1020167033477A
Other languages
English (en)
Other versions
KR102239280B1 (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 KR20160147984A publication Critical patent/KR20160147984A/ko
Application granted granted Critical
Publication of KR102239280B1 publication Critical patent/KR102239280B1/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/073Error 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 in a memory management context, e.g. virtual memory or cache management
    • 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/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • 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/0793Remedial or corrective actions
    • 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
    • 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/54Interprogram communication

Abstract

시스템 및 방법이 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘(adaptive locking mechanism)을 지원할 수 있다. 상기 시스템은 복수의 프로세스들 중의 각각의 프로세스로 하여금 공유 메모리 내의 데이터에 대한 락을 획득하기 위해 하나 이상의 테스트 앤 세트(TAS: test-and-set) 동작들을 수행하게 할 수 있다. 그 다음, 시스템은 현재의 튜닝 주기(tuning period) 동안의 스핀 실패율(spin failed rate)을 획득하고, 스핀 실패는 프로세스가 허용된 최대수의 TAS 동작들의 라운드들을 수행한 후 락을 획득하지 못할 때 발생한다. 더욱이, 시스템은 상기 획득된 스핀 실패율에 기초하여 다음 튜닝 주기에 대한 스핀 카운트를 적응적으로 구성할 수 있고, 상기 스핀 카운트는 상기 다음 튜닝 주기 동안 허용되는 TAS 동작들의 라운드들의 최대 수를 특정한다.

Description

트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락킹 메커니즘을 지원하는 시스템 및 방법{SYSTEM AND METHOD FOR SUPPORTING ADAPTIVE SELF-TUNING LOCKING MECHANISM IN TRANSACTIONAL MIDDLEWARE MACHINE ENVIRONMENT}
저작권 공지
본 명세서에서 개시된 부분은 저작권 보호를 받는 내용을 포함한다. 저작권자는 미국특허상표청의 특허 파일 또는 기록에 나타난 대로 본 특허 문서 또는 특허 개시내용을 어느 누군가가 팩시밀리 재생하는 것은 반대하지 않지만, 그 밖의 모든 것은 저작권으로 보호된다.
관련 출원의 상호 참조
본 출원은 다음의 특허 출원들에 관계되며, 이들 각각은 본 명세서에 그 전체가 참조로서 포함된다.
2012년 3월 7일자로 출원된 발명의 명칭이 "SYSTEM AND METHOD FOR SUPPORTING A SELF-TUNING LOCKING MECHANISM IN A TRANSACTIONAL MIDDLEWARE MACHINE ENVIRONMENT"인 미국 특허 출원 제13/414,593호(대리인 사건 번호 ORACL-05255US1).
기술 분야
본 발명은 일반적으로, 컴퓨터 시스템들 및 미들웨어와 같은 소프트웨어에 관한 것이며, 특히 트랜잭셔널 미들웨어 머신 환경을 지원하는 것에 관한 것이다.
트랜잭셔널 미들웨어 시스템 또는 트랜잭션 지향 미들웨어(transaction oriented middleware)는 조직 내에서 다양한 트랜잭션들을 프로세싱할 수 있는 엔터프라이즈 어플리케이션 서버들을 포함한다. 고성능 네트워크 및 멀티프로세서 컴퓨터들과 같은 신기술들의 발전에 따라, 트랜잭셔널 미들웨어의 성능을 더 향상시킬 필요가 존재한다. 이들이 본 발명의 실시예들이 해결하고자 하는 일반적인 영역들이다.
트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘(adaptive locking mechanism)을 지원할 수 있는 시스템들 및 방법들이 본 명세서에 기술된다. 상기 시스템은 복수의 프로세스들 중의 각각의 프로세스로 하여금 공유 메모리 내의 데이터에 대한 락을 획득하기 위해 하나 이상의 테스트 앤 세트(TAS: test-and-set) 동작들을 수행하게 할 수 있다. 그 다음, 시스템은 현재의 튜닝 주기(tuning period) 동안의 스핀 실패율(spin failed rate)을 획득하고, 스핀 실패는 프로세스가 허용된 최대수의 TAS 동작들의 라운드들을 수행한 후 락을 획득하지 못할 때 발생한다. 더욱이, 시스템은 상기 획득된 스핀 실패율에 기초하여 다음 튜닝 주기에 대한 스핀 카운트를 적응적으로 구성할 수 있고, 상기 스핀 카운트는 상기 다음 튜닝 주기 동안 허용되는 TAS 동작들의 라운드들의 최대 수를 특정한다.
도 1은 본 발명의 실시예에 따른 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경의 예를 도시한다.
도 2는 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락 메커니즘을 지원하는 예를 도시한다.
도 3은 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락 메커니즘을 지원하기 위한 예시적인 순서도를 도시한다.
도 4는 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 스핀 카운트 값(spin count value)을 동적으로 증가시키는 예를 도시한다.
도 5는 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 스핀 카운트 값을 동적으로 감소시키는 예를 도시한다.
도 6은 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 스핀 카운트 값을 변경되지 않은 채로 유지하는 예를 도시한다.
도 7은 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 로드 서지 보호(load surge protection)와 함께 스핀 카운트를 구성하는 예를 도시한다.
도 8은 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 로드 서지 보호와 함께 스핀 카운트를 구성하기 위한 예시적인 흐름도를 도시한다.
트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락킹 메커니즘을 지원하는 시스템 및 방법이 본 명세서에 기술된다.
본 발명의 실시예에 따르면, 시스템은 빠르게 프로비져닝되고(provisioned) 요구에 따라(on demand) 스케일링할 수 있는 대량의 병렬 인-메모리 그리드(massively parallel in-memory grid)를 포함하는 완전한 자바 EE 어플리케이션 서버 컴플렉스를 제공하기 위하여, 웹로직과 같은 어플리케이션 서버 또는 미들웨어 환경과 함께 고성능 하드웨어, 예컨대 64-비트 프로세서, 고성능 대용량 메모리 및 리던던트 인피니밴드 및 이더넷 네트워킹의 조합을 포함한다. 실시예에 따르면, 시스템은 어플리케이션 서버 그리드, 저장 영역 네트워크 및 인피니밴드(IB) 네트워크를 제공하는 풀(full), 하프(half) 또는 쿼터 랙(quarter rack) 또는 다른 구성으로서 디플로이(deploy)될 수 있다. 미들웨어 머신 소프트웨어는 예컨대, 웹로직 서버, JRockit 또는 핫스팟 JVM, 오라클 리눅스 또는 솔라리스 및 오라클 VM과 같은 어플리케이션 서버, 미들웨어 및 다른 기능을 제공할 수 있다. 실시예에 따르면, 시스템은 IB 네트워크를 통해 서로 통신하는 복수의 컴퓨트 노드들, IB 스위치 게이트웨이 및 저장 노드들 또는 유닛들을 포함할 수 있다. 랙 구성으로서 구현될 때, 랙의 사용되지 않은 부분들은 비어진 채로 있거나 또는 필러들에 의해 점유될 수 있다.
본 발명의 실시예에 따르면, "선 오라클 엑사로직" 또는 "엑사로직"으로 여기서 지칭되는, 시스템은 오라클 미들웨어 SW 수트 또는 웹로직과 같은 미들웨어 또는 어플리케이션 서버 소프트웨어를 호스팅하기 위한 디플로이가 용이한(easy-to-deploy) 솔루션이다. 여기에서 서술된 것처럼, 일 실시예에 따라, 상기 시스템은, 하나 이상의 서버들, 저장 유닛들, 저장 네트워킹을 위한 IB 패브릭, 및 미들웨어 애플리케이션을 호스팅하기 위해 요구되는 모든 다른 컴포넌트들을 포함하는 "박스 내 그리드"이다. 중요한 성능은, 예를 들어, 리얼 애플리케이션 클러스터들 및 엑사로직 오픈 저장소를 사용하여 대량의 병렬 그리드 아키텍쳐를 활용함으로써 모든 타입들의 미들웨어 애플리케이션들에 대해 전달될 수 있다. 상기 시스템은 선형 I/O 확장성을 갖는 개선된 성능을 전달하고, 사용하고 관리하기 단순하며, 미션에 중대한 이용가능성 및 신뢰성을 전달한다.
본 발명의 실시예에 따르면, 턱시도(Tuxedo)는 고성능 분산 비즈니스 어플리케이션들의 구성, 실행 및 어드미니스트레이션이 이루어지게 하는 소프트웨어 모듈들의 세트이며, 다수의 멀티-티어 어플리케이션 개발 툴들에 의해 트랜잭셔널 미들웨어로서 이용되어 왔다. 턱시도는 분산 컴퓨팅 환경들에서 분산 트랜잭션 프로세싱을 관리하기 위해 이용될 수 있는 미들웨어 플랫폼이다. 이는 엔터프라이즈 레거시 어플리케이션들을 언로킹하고 이들을 서비스 지향 아키텍쳐로 확장하면서도 비제한된 스케일러빌리티 및 표준 기반 상호운용성을 제공하는 입증된 플랫폼이다.
본 발명의 실시예에 따르면, 턱시도 시스템과 같은 트랜잭셔널 미들웨어 시스템은 엑사로직 미들웨어 머신과 같은 복수의 프로세서들을 갖는 고속 머신들 및 인피니밴드(IB) 네트워크와 같은 고성능 네트워크 연결의 장점을 취할 수 있다.
락 메커니즘들
도 1은 본 발명의 실시예에 따른 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경의 예를 도시한다. 도 1에 도시된 바와 같이, 트랜잭셔널 미들웨어 환경(100)은 동시적인 트랜잭션(concurrent transaction)들(즉, 프로세스들(111 내지 115) 상의 트랜잭션들) 이 존재할 때, 공유 메모리(101), 예컨대, 턱시도 환경에서 BB(bulletin board) 내의 다양한 트랜잭션 데이터(102)를 보호하기 위해 락 메커니즘(103)을 이용할 수 있다.
본 발명의 실시예에 따르면, 트랜잭셔널 미들웨어 환경(100)은 효과적인 락킹 메커니즘을 구현하기 위해 어토믹 TAS(Test-And-Set)(104) 어셈블리 컴포넌트를 이용함으로써 멀티-프로세서 머신들의 장점을 취할 수 있다. 추가적으로, 트랜잭셔널 어플리케이션의 프로세스는 필요한 경우 데이터(102)의 락을 획득하기 위해 운영 체제(OS)에 의해 제공되는 세마포어 메커니즘(107)을 이용할 수 있다.
예를 들어, 프로세스(111)가 데이터(102)의 락을 얻길 원할 때, 프로세스(111)는 다수의 라운드들 동안 TAS 동작을 수행할 수 있다. 시스템은 허용되는 TAS 동작들의 라운드들의 최대 수인 스핀 카운트(105)를 특정할 수 있다.
도 1에 도시된 바와 같이, 스핀 카운트(105)에 도달하기 전에 락(103)이 이용가능해지면, 프로세스(111)는 OS에 의해 제공되는 세마포어(107) 메커니즘보다 훨씬 적은 비용으로 락(103)을 획득할 수 있다.
그렇지 않으면, 프로세스(111)가 허용된 TAS 동작들의 라운드들의 최대 수만큼 수행된 후 락(103)이 이용가능하지 않으면, 프로세스(111)는 세마포어(107)에서 블록킹될 수 있고, 락 소유자가 락(103)을 해제할 때까지 대기할 수 있다. 예를 들어, 세마포어(107)에서 블록킹된 락 요청들은 큐, 예컨대 세마포어 대기 큐(106)에 놓여질 수 있다.
추가적으로, 세마포어(107)에서 블록킹된 락 요청들은 TAS 어셈블리 컴포넌트(104)에 기초한 락 요청들보다 높은 우선순위를 가질 수 있다. 따라서, 락 유지자(holder)는 세마포어 대기 큐(106)가 비지 않는 한, 먼저 세마포어 대기 큐(106) 내의 프로세스에 대한 락(103)을 해제할 것이다.
적응적 셀프 -튜닝 메커니즘
도 2는 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락 메커니즘을 지원하는 예를 도시한다. 도 2에 도시된 바와 같이, 트랜잭셔널 미들웨어 환경(200)은 동시적인 트랜잭션들(즉, 프로세스들(211 내지 215) 상의 트랜잭션들)이 존재할 때 공유 메모리(201) 내의 다양한 트랜잭션 데이터(202)를 보호하기 위해 락 메커니즘(203)을 이용할 수 있다.
예를 들어, 프로세스들(211 내지 215)이 데이터(202)의 락(203)을 얻길 원할 때, 프로세스(211 내지 215) 각각은 다수의 라운드들 동안 TAS(204) 동작을 수행할 수 있다. 시스템은 허용된 TAS 동작들의 라운드들의 최대 수인 스핀 카운트(205)를 특정할 수 있다. 본 발명의 실시예에 따르면, 턱시도 구성 파일에서 SPINCOUNT 파라미터와 같은 메타데이터는 스핀 카운트(205)에 대한 디폴트 값 및/또는 초기 값을 특정하기 위해 이용될 수 있다.
도 2에 도시된 바와 같이, 스핀 카운트(205)에 도달하기 전에 락(203)이 이용가능해지면, 프로세스(예컨대, 프로세스들(211 내지 222 및 214 내지 215) 중 하나)는 OS에 의해 제공되는 세마포어 메커니즘보다 훨씬 적은 비용으로 락(203)을 획득할 수 있다.
그렇지 않으면, 스핀 카운트(205)에 도달하기 전에 락(203)이 이용가능해지지 않으면(즉, 스핀 실패가 발생하면), 프로세스(예컨대, 프로세스(213))는 세마포어에서 블록킹되고 락 소유자가 락(203)을 해제시키고 이를 깨울(wake up)때까지 대기하도록 구성될 수 있다.
더욱이, 스핀 카운트 값(205)은 공유 메모리(201)에 저장될 수 있다. 턱시도 데몬 프로세스와 같은 특별한 프로세스는 이전의 튜닝 주기에서 수집된 동작 정보에 따라 스핀 카운트 값(205)을 주기적으로 튜닝(또는 변경)할 수 있다. 예를 들어, 턱시도 데몬은 디폴트로 5초 마다 한번 타겟 스핀 카운트 값을 갱신할 수 있다.
하나의 실시예에 따르면, 서로 다른 알고리즘들이 스핀 카운트(205) 값을 계산 및 구성하기 위해 이용될 수 있다. 예를 들어, 현재의 튜닝 주기 동안 CPU 아이들 비(CPU idle ratio)가 충분할 때, 단순한 알고리즘(simple algorithm)(206)은 스핀 실패율(208)이 타겟보다 높으면(즉, 너무 많은 TAS(204) 동작들이 현재의 튜닝 주기에서 락(203)을 획득하지 못했고 세마포어로 스위치됨), 스핀 카운트(205) 값을 증가시킬 수 있다. 더욱이, 단순한 알고리즘은 CPU 아이들 비가 너무 높으면 스핀 카운트(205) 값을 감소시킬 수 있다.
단순한 알고리즘(206)이 구현하기 용이하지만, 단순한 알고리즘(206)은 실제 리소스 관리자(RM), 예컨대 오라클 데이터베이스에서 실행될 때 여러가지 문제들에 직면할 수 있다. 예를 들어, 단순한 알고리즘(206)은 스핀 실패비(spin failed ratio)가 기준 이하(sub-standard)인 한 스핀 카운트 값(205)을 증가시킬 것이기 때문에 극도로 높은 스핀 카운트 값(205)을 생성할 수 있다. 또한, 단순한 알고리즘(206)은 스핀 카운트 값(205)을 증가시키기 위해 이 단순한 알고리즘(206)에 의해 취해지는 단계가 너무 거대해지는 경향을 가지며 스핀 카운트 값(205)이 튜닝의 몇 라운드들에서 상한에 도달할 수 있기 때문에 스핀 카운트 값(205)을 정밀하게 튜닝하지 못할 수 있다. 추가적으로, 단순한 알고리즘(206)은 큰 스핀 카운트 값(205)을 생성할 수 있고, 이는 실제 RM에서 실행될 때 시스템에서 악화된 스루풋(worse throughput)을 실제로 야기한다. 더욱이, 단순한 알고리즘(206)은 아이들 CPU 비가 충분히 높을 때 스핀 카운트 값(205)을 감소시키지 않을 수 있다. 더욱이, 단순한 알고리즘(206)이 실제 RM 환경에 상응하게 본래 디폴트 스핀 카운트 값(205) 및 스핀 실패율(205)의 디폴트 타겟을 구성하는 것은 어려울 수 있다.
대안적으로, 시스템은 실시간으로 스핀 카운트(205) 값을 동적으로 계산하기 위해 적응적 알고리즘(207)을 이용할 수 있다. 적응적 알고리즘(207)은 단순한 알고리즘(206)을 이용하여 시스템이 실제 리소스 관리자(RM), 예컨대 오라클 데이터베이스에서 실행될 때 발생할 수 있는 다양한 문제들을 회피할 수 있다.
본 발명의 실시예에 따르면, 적응적 알고리즘(207)은 양호한 튜닝을 유지함으로써 양호하지 않은 튜닝(bad tuning)을 방지할 수 있다. 예를 들어, 적응적 알고리즘(207)은 마지막 양호한 튜닝 주기로부터의 스핀 카운트 값(205) 및 스핀 실패율(208)을 저장할 수 있다.
각각의 튜닝 주기(210)에 대해, 시스템은 현재의 스핀 실패율(208)이 저장된 마지막 양호한 스핀 실패비보다 양호한지를 체크할 수 있다. 현재의 스핀 실패율(208)이 마지막 양호한 스핀 실패비보다 양호하면, 시스템은 현재의 튜닝 주기(210)를 양호한 튜닝으로서 고려할 수 있다. 그 다음, 시스템은 현재의 스핀 카운트 값(205) 및 현재의 스핀 실패율(208)을 캐싱할 수 있다. 한편, 현재의 스핀 실패율이 튜닝 후 증가되면(즉, 악화되면), 시스템은 다음 튜닝 주기(210) 동안 저장된 마지막 양호한 스핀 카운트 값(205)을 이용할 수 있다.
따라서, 트랜잭셔널 미들웨어 환경(200)은 대량의(massive) 동시적인 트랜잭션들 시나리오들을 지원하며 고 스루풋을 달성할 수 있다.
도 3은 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락 메커니즘을 지원하기 위한 예시적인 순서도를 도시한다. 도 3에 도시된 바와 같이, 단계(301)에서, 각각의 프로세스는 공유 메모리 내의 데이터에 대한 락을 획득하기 위해 하나 이상의 TAS 동작들을 수행할 수 있다. 추가적으로, 단계(302)에서, 시스템은 현재의 튜닝 주기 동안의 스핀 실패율을 획득할 수 있고, 스핀 실패는 프로세스가 허용된 최대 수의 TAS 동작들의 라운드들을 수행한 후 락을 획득하지 못할 때 발생한다. 더욱이, 단계(303)에서, 시스템은 획득된 스핀 실패율에 기초하여 다음 튜닝 주기에 대해 스핀 카운트 값을 적응적으로 구성할 수 있고, 스핀 카운트는 다음 튜닝 주기에 대해 허용된 TAS 동작들의 라운드들의 최대 수를 특정한다.
타겟 스핀 카운트 값을 동적으로 계산하기 위한 적응적 알고리즘
본 발명의 실시예에 따르면, 시스템은 실시간으로 타겟 스핀 카운트 값을 동적으로 결정하기 위해 적응적 알고리즘을 이용할 수 있다. 또한, 시스템은 하드웨어 구성 및 어플리케이션 시나리오의 컨텍스트에서 타겟 스핀 카운트 값을 계산할 수 있다.
예를 들어, 턱시도 환경에서, 시스템은 아래에서 보여지는 함수를 콜함으로써 스핀 카운트 값을 계산할 수 있다.
static int_calc_spintuning(_TCADEF)
턱시도에서, 어플리케이션은 (RESOURCE 섹션에서 파라미터 SCANUNIT을 이용하여 구성될 수 있는) 각각의 스캔 유닛과 같은 각각의 튜닝 주기에서 상기 함수를 콜할 수 있다.
추가적으로 아래에서 보여지는 바와 같이, 시스템은 CPU 비들을 검색하는 역할을 하는 다른 함수를 콜할 수 있다.
static int getCPUrate(int type, float* rate, int size)
상기 함수에 대한 구현은 플랫폼-의존적(platform-dependent)일 수 있다. 예를 들어, 상기 함수는 엑사로직 엘라스틱 클라우드(리눅스 64비트) 플랫폼에서의 file/proc/stat 툴들과 같은 시스템 툴들을 통해 CPU 비들을 획득할 수 있다. 대안적으로, 상기 함수는 SPARC SuperCluster (Sparc 64비트)에서의 kstat 라이브러리와 같은 시스템 라이브러리들을 통해 CPU 비들을 획득할 수 있다.
도 4는 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 스핀 카운트 값을 동적으로 증가시키는 예를 도시한다. 도 4에 도시된 바와 같이, 적응적 알고리즘은 적절할 때 스핀 카운트를 동적으로 증가시킬 수 있다.
단계(401)에서, 시스템은 현재의 아이들 CPU가 충분한지, 즉 현재의 튜닝 주기 동안의 아이들 CPU 율이 사용자가 구성한 최소 아이들 CPU 율보다 높은지를 체크할 수 있다. 또한, 단계(402)에서, 시스템은 현재의 스핀 실패비가 사용자가 구성한 타겟 미만인지를 체크할 수 있다.
그 다음, 적응적 알고리즘은, 현재의 아이들 CPU가 충분할 때 또는 현재의 튜닝 주기 동안의 현재의 스핀 실패비가 사용자가 구성한 타겟을 이미 충족할 때 스핀 카운트를 증가시키지 않기로 결정할 수 있다.
그렇지 않으면, 단계(403)에서, 적응적 알고리즘은 현재의 스핀 실패비가 저장된 마지막 양호한 스핀 실패비보다 양호한지를 체크할 수 있다. 또한, 단계(404)에서, 적응적 알고리즘은 현재의 스핀 실패비가 튜닝 없이 악화되는지를 체크할 수 있다.
그 결과, 단계(405)에서, 시스템은 현재의 튜닝 주기 동안의 스핀 실패비가 마지막 양호한 스핀 실패비보다 작으면 또는 현재의 튜닝 주기 동안의 스핀 실패비가 튜닝 없이 악화되면 스핀 카운트를 증가시킬 수 있다.
마지막으로, 단계(406)에서, 시스템은 다음 튜닝 주기로 진행할 수 있고, 이는 프로세스가 다음 튜닝 주기 동안 상기 단계들(401 내지 405)을 반복하도록 할 수 있다.
턱시도에서, 시스템은 스핀 카운트의 증가를 결정하기 위해 다음의 알고리즘을 이용할 수 있다(즉, 다음 튜닝 주기 동안 튜닝된 SPINCOUTNT를 계산).
튜닝된 SPINCOUNT +=
(SPINCOUNT * base_factor) * min(max_times,(아이들 CPU 비/사용자 CPU 비))
상기 알고리즘은 SPINCOUTNT의 증가를 정밀하게 튜닝하기 위해 두 가지 인자들을 이용할 수 있는 바, 이는 현재의 SPINCOUTNT 값 및 아이들 CPU 비/사용자 CPU 비의 값에 좌우된다. 현재의 SPINCOUTNT의 기여도(contribution)를 감소시키기 위해 이용되는 제1 인자, base_factor는 1보다 작다. 제2 인자, max_times는 아이들 CPU 비/사용자 CPU 비의 상한으로서 이용될 수 있다.
추가적으로, 가능한 SPINCOUTNT 값의 범위는 여러 간격들로 분할될 수 있다. 아래의 표 1은 여러 간격들의 예시적인 분할을 보여준다.
SPINCOUTNT 간격 [하한, 8*1024] [8*1024,
64*1024]
[64*1024,
512*1024]
[512*1024, 상한]
Base_factor 1.0 0.75 0.5 0.25
max_times 1.0 1.0 1.0 1.0
상기 표 1에 도시된 바와 같이, 서로 다른 간격들이 base_factor 및 max_times 값으로 구성될 수 있다. SPINCOUTNT가 일반적으로 타겟 값에 도달할 수 있게 하기 위해, base_factor 및 max_times에 대한 값들은 SPINCOUTNT가 커짐에 따라 작아지도록 설정될 수 있다.
도 5는 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 스핀 카운트 값을 동적으로 감소시키는 예를 도시한다. 도 5에 도시된 바와 같이, 적응적 알고리즘은 적절할 때 스핀 카운트를 동적으로 감소시킬 수 있다.
단계(501)에서, 적응적 알고리즘은 어플리케이션이 아이들한지를 체크할 수 있다. 또한, 단계(502)에서, 적응적 알고리즘은 현재의 아이들 CPU 비가 한계보다 크고 사용자 CPU 비가 충분한지를 체크할 수 있으며, 단계(503)에서, 적응적 알고리즘은 현재의 스핀 카운트가 충분히 긴 시간 주기 동안 변경되지 않은 채(또는 안정된 채)로 유지되어 왔는지를 체크할 수 있다.
그 다음, 단계(504)에서, 알고리즘은 어플리케이션이 아이들하면 스핀 카운트를 감소시킬 수 있다. 예를 들어, 턱시도는 SPINCOUNT 값을 감소시키기 위해 아래의 공식을 이용할 수 있다.
튜닝된 SPINCOUNT -= 튜닝된 SPINCOUNT >> 3
상기 알고리즘을 이용하여, 턱시도는 어플리케이션이 아이들해지면, 높은 SPINCOUNT 값을 본래의 SPINCOUNT 값에 자동으로 되돌릴 수 있다.
또한, 단계(504)에서, 알고리즘은 현재의 아이들 CPU 비가 (사용자에 의해 구성된) 한계보다 크고 사용자 CPU 비가 충분하면 스핀 카운트를 감소시킬 수 있다. 예를 들어, 턱시도는 SPINCOUNT 값을 감소시키기 위해 아래의 공식을 이용할 수 있다.
튜닝된 SPINCOUNT = 튜닝된 SPINCOUNT >> 2
추가적으로, 단계(504)에서, 알고리즘은 현재의 SPINCOUNT가 충분히 긴 시간 주기 동안 안정된 상태로 유지된 경우, 스핀 카운트를 감소시킬 수 있다. 예를 들어, 턱시도는 SPINCOUNT 값을 감소시키기 위해 아래의 공식을 이용할 수 있다.
튜닝된 SPINCOUNT -= 튜닝된 SPINCOUNT >> 3
상기 알고리즘을 이용하여, 턱시도는 SPINCOUNT 값이 긴 안정된 시간 후 감소되게 한다. 따라서, 턱시도는 로드가 가벼워질 때 높은 SPINCOUNT가 적절한 값에 자동으로 되돌아가게 할 수 있다.
마지막으로, 단계(505)에서, 시스템은 다음 튜닝 주기로 진행될 수 있는 바, 이는 프로세스가 다음 튜닝 주기 동안 상기 단계들(501 내지 504)을 다시 반복하게 할 수 있다.
도 6은 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 스핀 카운트 값을 변경되지 않은 채로 유지하는 예를 도시한다. 도 6에 도시된 바와 같이, 적응적 알고리즘은 서로 다른 시나리오들에서 스핀 카운트 값을 변경되지 않은 채로 유지할 수 있다.
단계(601)에서, 적응적 알고리즘은 현재의 스핀 실패비가 요건을 충족하는지를 체크할 수 있다. 또한, 단계(602)에서, 적응적 알고리즘은 현재의 스핀 카운트가 튜닝 시 상한 또는 하한에 도달하는지를 체크할 수 있고, 단계(603)에서 적응적 알고리즘은 현재의 스핀 실패비가 안정되게 유지되는지를 체크할 수 있다.
그 다음, 단계(604)에서, 알고리즘은 현재의 스핀 실패비가 요건을 만족하면 또는 현재의 SPINCOUNT가 튜닝 시 상한 또는 하한에 도달하면 또는 현재의 스핀 실패비가 안정되게 유지되면 스핀 카운트를 변경되지 않은 채로 유지할 수 있다.
로드 서지 보호와 함께 스핀 카운트를 구성
도 7은 본 발명의 실시예에 따른 적응적 셀프-튜닝 락 메커니즘을 지원하는 트랜잭셔널 미들웨어 머신 환경에서 로드 서지 보호와 함께 스핀 카운트를 구성하는 예를 도시한다. 도 7에 도시된 바와 같이, 트랜잭셔널 미들웨어 환경(700)은 동시적인 트랜잭션들(즉, 프로세스들(711 내지 715) 상의 트랜잭션들)이 존재할 때 공유 메모리(701) 내의 다양한 트랜잭션 데이터(702)를 보호하기 위해 락(703)을 이용할 수 있다.
더욱이, 트랜잭셔널 미들웨어 환경(700)은 효과적인 락킹 메커니즘을 구현하기 위해 어토믹 TAS(Test-And-Set)(704) 어셈블리 컴포넌트를 이용할 수 있다. 추가적으로, 시스템은 스핀 실패가 발생할 때 세마포어 대기 큐(706)에 프로세스(예컨대, 프로세스들(711 내지 713))을 놓아 둘 수 있다.
도 7에 도시된 바와 같이, 세마포어 대기 큐(706)에서 대기하는 프로세스들(711 내지 713)에 의한 락 요청들은 TAS 어셈블리 컴포넌트(704)에 기초한 프로세스들(714 내지 715)에 의한 락 요청들보다 높은 우선순위를 가질 수 있다.
따라서, 락 유지자는 먼저, 세마포어 대기 큐(706) 내의 프로세스들(711 내지 713)에 대한 락(703)을 해제할 수 있고, 프로세스들(714 내지 715)은 세마포어 대기 큐(706)가 비지 않는 한 락(703)에 액세스할 수 없다.
본 발명의 실시예에 따르면 시스템은 세마포어 대기 큐(706)의 길이가 시간에 따라 달라질 수 있기 때문에 실시간으로 스핀 카운트 값을 동적으로 결정할 수 있다.
도 7에 도시된 바와 같이, 시스템은 TAS 어셈블리 컴포넌트(704)를 이용하는 프로세스들(714 내지 715)에 추가적 스핀들을 적용할 수 있다. 예를 들어, 턱시도에서, 시스템은 실시간으로 실제 이용된 스핀 카운트(즉, 이용된 SPINCOUTNT)를 결정하기 위해 다음 알고리즘을 이용할 수 있다.
이용된 SPINCOUNT = 튜닝된 SPINCOUNT + 추가적스핀 * 세마포어 대기 큐의 깊이(depth)
상기에서 보여지는 바와 같이, 이용된 SPINCOUNT를 계산할 때, 턱시도는 세마포어 대기 큐의 현재 깊이를 고려할 수 있다. 세마포어 대기 큐가 깊어질수록, 이용된 SPINCOUNT가 크게 설정될 수 있다.
본 발명의 실시예에 따르면, 로드 서지가 트랜잭셔널 미들웨어 머신 환경(700)에서 발생할 때, TAS 어셈블리 컴포넌트(704)에서 스핀 실패들의 갑작스런 증가가 존재할 수 있는 바, 이는 더 많은 프로세스들이 세마포어 대기 큐(706)에서 락(703)을 대기하게 할 수 있다.
TAS 어셈블리 컴포넌트(704)를 이용하는 프로세스들(714 내지 715)에 추가적 스핀들을 적용함으로써, 시스템은 세마포어 큐가 깊어질 때 스핀 실패비를 감소시킬 수 있다. 더욱이, 시스템 내의 로드가 결국 가벼워지면, 세마포어 대기 큐(706)의 길이는 짧아진다. 따라서, 실제로 이용된 스핀 카운트는 튜닝 주기 내에서 실시간으로 감소될 수 있다.
도 8은 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 로드 서지 보호와 함께 스핀 카운트를 구성하기 위한 예시적인 흐름도를 도시한다. 도 8에 도시된 바와 같이, 단계(801)에서, 스핀 실패를 갖는 프로세스는 공유 메모리 내의 데이터의 락의 해제를 세마포어 대기 큐에서 대기할 수 있다. 그 다음, 단계(802)에서, 프로세스는 락 소유자가 데이터의 락을 해제할 때 공유 메모리 내의 데이터에 액세스할 수 있다. 더욱이, 단계(808)에서, 시스템은 세마포어 대기 큐가 비어있지 않을 때 TAS 동작을 수행하는 각각의 프로세스에 추가적 스핀 카운트들을 적용할 수 있다.
본 발명은 본 발명의 교시들에 따라 프로그램된 하나 이상의 프로세서들, 메모리 및/또는 컴퓨터 판독가능 저장 매체들을 포함하여 하나 이상의 종래의 범용 또는 특수용 디지털 컴퓨터, 컴퓨팅 디바이스, 머신 또는 마이크로프로세서를 이용하여 편리하게 구현될 수 있다. 적절한 소프트웨어 코딩이 소프트웨어 분야의 숙련자들에게 분명할 바와 같이 본 발명의 교시들에 기초하여 숙련된 프로그래머들에 의해 쉽게 준비될 수 있다.
일부 실시예들에서, 본 발명의 특징들은 컴퓨터 프로그램 물을 포함하는 바, 상기 컴퓨터 프로그램 물은 명령어들이 저장된/본 명세서의 프로세스들 중 어느 것을 수행하도록 컴퓨터를 프로그래밍하기 위해 이용될 수 있는 저장 매체 또는 컴퓨터 판독가능 매체(매체들)이다. 저장 매체는 이들로만 한정되는 것은 아니지만, 플로피 디스크(disk)들, 광학 디스크(disc)들, DVD, CD-ROM들, 마이크로드라이브 및 자기-광학 디스크(disk)들을 포함하는 어떤 타입의 디스크, ROM들, RAM들, EPROM들, EEPROM들, DRAM들, VRAM들, 플래시 메모리 디바이스들, 자기 또는 광학 카드들, (분자 메모리 IC들을 포함하는)나노시스템들 또는, 명령어들 및/또는 데이터를 저장하기에 적절한 어떤 타입의 매체 또는 디바이스를 포함할 수 있다.
본 발명의 상기 설명은 예시 및 설명을 목적으로 제공되었다. 본 설명은 완전한 것(exhaustive)으로 의도 또는 정확히 개시된 형태들로만 본 발명을 제한하고자 의도된 것이 아니다. 본 발명의 범주 및 범위는 상기 설명된 예시적인 실시예들 중 어느 것에 의해 제한되어서는 안된다. 많은 수정들 및 변형들이 이 기술분야의 숙련자에게 분명할 것이다. 수정들 및 변형들은 개시된 특징들의 어떤 관련 조합을 포함한다. 위 실시예들은 본 발명의 원리 및 이의 실용적 응용을 가장 잘 설명하기 위해 선택 및 기술되었으며, 그럼으로써 이 기술분야의 숙련자들은 본 발명에 대한 다양한 실시예들 및 고려되는 특별한 사용에 적합한 다양한 수정들을 이해할 수 있다. 본 발명의 범위는 다음의 특허 청구 범위 및 이의 균등물에 의해 한정되어야 함이 의도된다.

Claims (20)

  1. 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘(adaptive locking mechanism)을 지원하는 방법으로서,
    복수의 프로세스들 중의 각각의 프로세스에 의해, 공유 메모리 내의 데이터에 대한 락을 획득하기 위해 하나 이상의 테스트 앤 세트(TAS: test-and-set) 동작들을 수행하는 단계와;
    현재의 튜닝 주기(tuning period) 동안의 스핀 실패율(spin failed rate)을 획득하는 단계 - 스핀 실패는 프로세스가 허용된 최대수의 TAS 동작들의 라운드들을 수행한 후 락을 획득하지 못할 때 발생함 - 와; 그리고
    상기 획득된 스핀 실패율에 기초하여 다음 튜닝 주기에 대한 스핀 카운트를 적응적으로 구성하는 단계를 포함하며, 상기 스핀 카운트는 상기 다음 튜닝 주기 동안 허용되는 TAS 동작들의 라운드들의 최대 수를 특정하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 TAS 동작들을 수행하기 위해 어셈블리 컴포넌트를 이용하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  3. 제1항에 있어서,
    메타데이터를 이용하여 상기 스핀 카운트를 사전 구성하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  4. 제1항에 있어서,
    상기 현재의 튜닝 주기 동안의 아이들 CPU 율(idle CPU rate)이 사용자가 구성한 최대 아이들 CPU 율보다 높은지 그리고 상기 현재의 튜닝 주기 동안의 스핀 실패비(spin failed ratio)가 사용자가 구성한 타겟을 충족하는지를 결정하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  5. 제4항에 있어서,
    상기 현재의 튜닝 주기 동안의 아이들 CPU 율(idle CPU rate)이 사용자가 구성한 최대 아이들 CPU 율보다 높고 상기 현재의 튜닝 주기 동안의 스핀 실패비가 사용자가 구성한 타겟을 충족하지 않을 때,
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 마지막 양호한 스핀 실패비(a last good spin failed ratio)보다 양호하거나,
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 튜닝 없이 악화되면,
    상기 스핀 카운트를 증가시키는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  6. 제5항에 있어서,
    가능한 스핀 카운트 값들에 대한 범위를 여러 간격들로 분할하는 단계와; 그리고
    각각의 다른 간격에서의 튜닝된 스핀 카운트 값을 계산하기 위해 서로 다른 공식을 이용하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  7. 제1항에 있어서,
    어플리케이션이 아이들한 상태(idle)인 경우와,
    아이들 CPU 비가 사용자가 미리 구성한 최대 아이들 CPU 율보다 높고 사용자 CPU 비가 충분한 경우와, 그리고
    상기 스핀 카운트가 일정 시간 기간 동안 안정된 상태(stable)로 유지된 경우 중 적어도 하나의 경우에,
    상기 스핀 카운트를 감소시키는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  8. 제1항에 있어서,
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 요건을 충족하는 경우와,
    상기 현재의 튜닝 주기 동안의 스핀 카운트가 상한 또는 하한에 도달하는 경우와, 그리고
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 안정된 상태로 유지되는 경우 중 적어도 하나의 경우에,
    상기 스핀 카운트를 유지(keep)하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  9. 제1항에 있어서,
    스핀 실패를 갖는 프로세스를 통해, 세마포어 대기 큐(semaphore waiting queue)에서 상기 공유 메모리 내의 상기 데이터의 락의 해제를 대기하는 단계와; 그리고
    락 소유자가 상기 데이터의 락을 해제할 때, 상기 공유 메모리 내의 상기 데이터에 액세스하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  10. 제9항에 있어서,
    상기 세마포어 대기 큐가 비어있지 않을 때, 상기 TAS 동작을 수행하는 각각의 프로세스에 추가적 스핀 카운트들을 적용하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 방법.
  11. 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템으로서,
    하나 이상의 프로세서들과;
    복수의 프로세스들 - 상기 복수의 프로세스들 중 각각의 프로세스는 공유 메모리 내의 데이터에 대한 락을 획득하기 위해 하나 이상의 테스트 앤 세트(TAS) 동작들을 수행하는 동작을 함 - 과;
    상기 하나 이상의 프로세서들에서 실행되는 트랜잭셔널 서버를 포함하고, 상기 트랜잭셔널 서버는,
    현재의 튜닝 주기 동안의 스핀 실패율을 획득 - 스핀 실패는 프로세스가 허용된 최대수의 TAS 동작들의 라운드들을 수행한 후 락을 획득하지 못할 때 발생함 - 하고; 그리고
    상기 획득된 스핀 실패율에 기초하여 다음 튜닝 주기에 대한 스핀 카운트를 적응적으로 구성하는 동작을 하며, 상기 스핀 카운트는 상기 다음 튜닝 주기 동안 허용되는 TAS 동작들의 라운드들의 최대 수를 특정하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  12. 제11항에 있어서,
    상기 하나 이상의 TAS 동작들을 수행하기 위해 어셈블리 컴포넌트가 이용되는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  13. 제11항에 있어서,
    상기 스핀 카운트는 메타데이터를 이용하여 사전 구성되는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  14. 제11항에 있어서,
    관리 컴포넌트가 상기 현재의 튜닝 주기 동안의 아이들 CPU 율이 사용자가 구성한 최대 아이들 CPU 율보다 높은지 그리고 상기 현재의 튜닝 주기 동안의 스핀 실패비가 사용자가 구성한 타겟을 충족하는지를 결정하는 동작을 하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  15. 제14항에 있어서,
    상기 현재의 튜닝 주기 동안의 아이들 CPU 율이 사용자가 구성한 최대 아이들 CPU 율보다 높고 상기 현재의 튜닝 주기 동안의 스핀 실패비가 사용자가 구성한 타겟을 충족하지 않을 때, 상기 관리 컴포넌트는:
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 마지막 양호한 스핀 실패비보다 양호하거나,
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 튜닝 없이 악화되면,
    상기 스핀 카운트를 증가시키는 동작을 하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  16. 제15항에 있어서,
    가능한 스핀 카운트 값들에 대한 범위가 여러 간격들로 분할되고, 상기 관리 컴포넌트는 각각의 다른 간격에서의 튜닝된 스핀 카운트 값을 계산하기 위해 서로 다른 공식을 이용하는 동작을 하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  17. 제11항에 있어서,
    상기 관리 컴포넌트는:
    어플리케이션이 아이들한 상태인 경우와,
    아이들 CPU 비가 사용자가 미리 구성한 최대 아이들 CPU 율보다 높고 사용자 CPU 비가 충분한 경우와, 그리고
    상기 스핀 카운트가 일정 시간 기간 동안 안정된 상태(stable)로 유지된 경우 중 적어도 하나의 경우에,
    상기 스핀 카운트를 감소시키는 동작을 하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  18. 제11항에 있어서,
    상기 관리 컴포넌트는:
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 요건을 충족하는 경우와,
    상기 현재의 튜닝 주기 동안의 스핀 카운트가 상한 또는 하한에 도달하는 경우와, 그리고
    상기 현재의 튜닝 주기 동안의 스핀 실패비가 안정된 상태로 유지되는 경우 중 적어도 하나의 경우에,
    상기 스핀 카운트를 유지하는 동작을 하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  19. 제11항에 있어서,
    상기 관리 컴포넌트는:
    스핀 실패를 갖는 프로세스를 세마포어 대기 큐(semaphore waiting queue)에 상기 공유 메모리 내의 상기 데이터의 락의 해제를 대기하도록 놓아 두고;
    락 소유자가 상기 데이터의 락을 해제할 때, 상기 공유 메모리 내의 상기 데이터에 액세스하고; 그리고
    상기 세마포어 대기 큐가 비어있지 않을 때, 상기 TAS 동작을 수행하는 프로세스들에 추가적 스핀 카운트들을 적용하는 동작을 하는 것을 특징으로 하는 트랜잭셔널 미들웨어 머신 환경에서 적응적 락킹 메커니즘을 지원하는 시스템.
  20. 명령어들이 저장된 비일시적 머신 판독가능 저장 매체로서, 상기 명령어들은 실행될 때, 시스템으로 하여금 단계들을 수행하게 하고, 상기 단계들은:
    복수의 프로세스들 중의 각각의 프로세스에 의해, 공유 메모리 내의 데이터에 대한 락을 획득하기 위해 하나 이상의 테스트 앤 세트(TAS) 동작들을 수행하는 단계와;
    현재의 튜닝 주기 동안의 스핀 실패율을 획득하는 단계 - 스핀 실패는 프로세스가 허용된 최대수의 TAS 동작들의 라운드들을 수행한 후 락을 획득하지 못할 때 발생함 - 와; 그리고
    상기 획득된 스핀 실패율에 기초하여 다음 튜닝 주기에 대한 스핀 카운트를 적응적으로 구성하는 단계를 포함하며, 상기 스핀 카운트는 상기 다음 튜닝 주기 동안 허용되는 TAS 동작들의 라운드들의 최대 수를 특정하는 것을 특징으로 하는 비일시적 머신 판독가능 저장 매체.
KR1020167033477A 2014-04-30 2014-04-30 트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락킹 메커니즘을 지원하는 시스템 및 방법 KR102239280B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/076594 WO2015165073A1 (en) 2014-04-30 2014-04-30 System and method for supporting adaptive self-tuning locking mechanism in transactional middleware machine environment

Publications (2)

Publication Number Publication Date
KR20160147984A true KR20160147984A (ko) 2016-12-23
KR102239280B1 KR102239280B1 (ko) 2021-04-13

Family

ID=54355309

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033477A KR102239280B1 (ko) 2014-04-30 2014-04-30 트랜잭셔널 미들웨어 머신 환경에서 적응적 셀프-튜닝 락킹 메커니즘을 지원하는 시스템 및 방법

Country Status (5)

Country Link
US (1) US9846603B2 (ko)
JP (1) JP6446475B2 (ko)
KR (1) KR102239280B1 (ko)
CN (1) CN106471486B (ko)
WO (1) WO2015165073A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017131624A1 (en) * 2016-01-26 2017-08-03 Hewlett Packard Enterprise Development Lp A unified lock
US10740158B2 (en) * 2018-05-02 2020-08-11 EMC IP Holding Company LLC Synchronization object aborting systems and methods
CN110309024B (zh) * 2019-04-23 2023-07-18 网宿科技股份有限公司 数据处理系统及其执行数据处理任务的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090328053A1 (en) * 2004-06-04 2009-12-31 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295262A (en) * 1991-05-16 1994-03-15 International Business Machines Corporation Read-only access without blocking via access vectors
JP2853608B2 (ja) 1995-05-30 1999-02-03 日本電気株式会社 並列処理システムのファイルアクセス制御方式
US6119115A (en) * 1998-03-12 2000-09-12 Microsoft Corporation Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment
US6148300A (en) * 1998-06-19 2000-11-14 Sun Microsystems, Inc. Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
US6549961B1 (en) 1999-10-27 2003-04-15 Infineon Technologies North America Corporation Semaphore access in a multiprocessor system
US6687904B1 (en) * 1999-11-22 2004-02-03 Sun Microsystems, Inc. Method and apparatus for selecting a locking policy based on a per-object locking history
US6681228B2 (en) 2001-11-01 2004-01-20 Verisign, Inc. Method and system for processing query messages over a network
CA2374290A1 (en) * 2002-03-01 2003-09-01 Ibm Canada Limited-Ibm Canada Limitee Updating spin counters for spin latches
US7051026B2 (en) * 2002-07-31 2006-05-23 International Business Machines Corporation System and method for monitoring software locks
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
GB0518516D0 (en) * 2005-09-10 2005-10-19 Ibm Managing a resource lock
CN101546275B (zh) 2008-03-26 2012-08-22 中国科学院微电子研究所 一种获取多处理器硬件信号量的方法
CN101256509B (zh) * 2008-04-07 2010-09-01 中兴通讯股份有限公司 一种锁机制的加锁方法、解锁方法和实现方法
US8191046B2 (en) * 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
US8392925B2 (en) * 2009-03-26 2013-03-05 Apple Inc. Synchronization mechanisms based on counters
US8495311B2 (en) * 2009-06-25 2013-07-23 International Business Machines Corporation Updating shared variables atomically
US9575985B2 (en) * 2009-12-07 2017-02-21 Novell, Inc. Distributed lock administration
US8782352B2 (en) * 2011-09-29 2014-07-15 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment
US9354945B2 (en) * 2012-10-12 2016-05-31 International Business Machines Corporation Managing a lock to a resource shared among a plurality of processors
US9772888B2 (en) * 2013-04-10 2017-09-26 Wind River Systems, Inc. Semaphore with timeout and lock-free fast path for message passing architectures

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090328053A1 (en) * 2004-06-04 2009-12-31 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing

Also Published As

Publication number Publication date
WO2015165073A1 (en) 2015-11-05
KR102239280B1 (ko) 2021-04-13
JP2017515234A (ja) 2017-06-08
CN106471486B (zh) 2019-05-17
JP6446475B2 (ja) 2018-12-26
US9846603B2 (en) 2017-12-19
US20150317191A1 (en) 2015-11-05
CN106471486A (zh) 2017-03-01

Similar Documents

Publication Publication Date Title
US9389907B2 (en) System and method for providing a distributed transaction lock in a transactional middleware machine environment
US9559977B2 (en) System and method for supporting a dynamic resource broker in a transactionial middleware machine environment
US8954391B2 (en) System and method for supporting transient partition consistency in a distributed data grid
US10198271B2 (en) System and method for booting application servers in parallel
CN105874433B (zh) 用于支持分布式数据网格中的异步调用的系统和方法
US8914588B2 (en) System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment
US20140245309A1 (en) System and method for transforming a queue from non-blocking to blocking
US20160070494A1 (en) Highly performant reliable message storage using in-memory replication technology
US10243869B2 (en) System and method for providing a distributed queue in a distributed data grid
US9116761B2 (en) System and method for preventing single-point bottleneck in a transactional middleware machine environment
US9846603B2 (en) System and method for supporting an adaptive self-tuning locking mechanism in a transactional middleware machine environment
CN105830029B (zh) 用于在计算环境中支持自适应忙等待的系统和方法
US20140245312A1 (en) System and method for supporting cooperative concurrency in a middleware machine environment

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