KR101805462B1 - 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치 - Google Patents

스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치 Download PDF

Info

Publication number
KR101805462B1
KR101805462B1 KR1020170082846A KR20170082846A KR101805462B1 KR 101805462 B1 KR101805462 B1 KR 101805462B1 KR 1020170082846 A KR1020170082846 A KR 1020170082846A KR 20170082846 A KR20170082846 A KR 20170082846A KR 101805462 B1 KR101805462 B1 KR 101805462B1
Authority
KR
South Korea
Prior art keywords
service
thread
processing
processed
completed
Prior art date
Application number
KR1020170082846A
Other languages
English (en)
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 주식회사 티맥스소프트
Priority to KR1020170082846A priority Critical patent/KR101805462B1/ko
Priority to US15/655,789 priority patent/US10241833B2/en
Application granted granted Critical
Publication of KR101805462B1 publication Critical patent/KR101805462B1/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
    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

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

Abstract

본 발명에 따르면, 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키는 방법을 제공한다. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 컴퓨팅 장치는, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하는 단계, 상기 제2 서비스가 처리될 때, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 단계, 및 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 단계를 포함하는 방법을 제공한다.

Description

스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치{METHOD AND COMPUTING DEVICE FOR INCREASING THROUGHPUT OF SERVICES IN THREADS}
본 발명은 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치에 관한 것으로, 보다 상세하게는, 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하고, 상기 제2 서비스가 처리될 때, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하며, 상기 제2 서비스의 처리가 완료되면, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 방법 및 컴퓨팅 장치에 관한 것이다.
스레드(Thread)란, 프로세스 내에서 실행되는 흐름의 단위로서, 특정한 서비스 요청을 처리하는데 필요한 정보이다. 스레드에서는 특정한 서비스를 요청에 따라 처리하며 다른 스레드와 공유한다.
스레드에서 처리되는 서비스는 다른 서비스를 호출할 수 있으며, 기존의 서비스 호출 방식은 동기(Synchronous)방식과 비동기(Asynchronous)방식 두 가지가 존재한다.
동기 방식은 반드시 호출하는 서비스(Caller Service)가 호출된 서비스(Callee Service)의 작업이 끝마치기를 기다려야 하므로 호출하는 서비스를 처리하는 스레드는 호출된 서비스의 작업이 끝날 때까지 대기 상태이므로 비효율적인 측면이 있다.
비동기 방식은 호출된 서비스(Callee Service)가 수행되는 동안, 호출한 서비스(Caller Service)의 작업을 추가적으로 처리하는 방식으로, 도 1에서 볼 수 있듯이, 호출한 서비스를 처리하는 스레드는 다른 서비스를 블라킹(Blocking)하여 대기 상태에 놓일 수 있어 역시 비효율적인 측면이 있다.
이에 본 발명자는 스레드에서 기존의 서비스뿐만 아니라 다른 서비스를 처리할 수 있도록 하여 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치를 제안하고자 한다.
본 발명은 상술한 문제점을 모두 해결하는 것을 목적으로 한다.
또한, 본 발명은 호출된 서비스의 작업이 완료되기 전에 스레드에서 다른 서비스를 처리할 수 있도록 하여 서비스 처리량을 증가시키는 것을 다른 목적으로 한다.
또한, 본 발명은 제1 스레드에서 다른 서비스가 처리되는 동안 제2 스레드에서 호출된 서비스(Callee Service)의 처리가 완료되면, 중단되었던 호출한 서비스(Caller Service)를 다른 스레드에서 처리될 수 있도록 하여 서비스의 처리가 중단되지 않고 지속적으로 진행되도록 하는 것을 또 다른 목적으로 한다.
상기한 바와 같은 본 발명의 목적을 달성하고, 후술하는 본 발명의 특징적인 효과를 실현하기 위한, 본 발명의 특징적인 구성은 하기와 같다.
본 발명의 일 태양에 따르면, 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법에 있어서, 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 컴퓨팅 장치는, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하는 단계, 상기 제2 서비스가 처리될 때, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 단계, 및 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 단계를 포함하는 방법을 제공한다.
본 발명의 다른 태양에 따르면, 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 컴퓨팅 장치에 있어서, 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드 사이에서 작업 요청 전달을 지원하는 통신부; 및 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하고, 상기 제2 서비스가 처리될 때, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하며, 상기 제2 서비스의 처리가 완료되면, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 프로세서를 포함하는 장치를 제공한다.
본 발명에 의하면, 다음과 같은 효과가 있다.
본 발명은 호출된 서비스의 작업이 완료되기 전에 스레드에서 다른 서비스를 처리할 수 있도록 하여 서비스 처리량을 증가시키는 효과가 있다.
본 발명은 제1 스레드에서 다른 서비스가 처리되는 동안 제2 스레드에서 호출된 서비스(Callee Service)의 처리가 완료되면, 중단되었던 호출한 서비스(Caller Service)를 다른 스레드에서 처리될 수 있도록 하여 모든 스레드에서의 서비스 처리가 중단되지 않고 지속적으로 진행되도록 하는 효과가 있다.
도 1은 종래의 비동기 방식으로 서비스를 호출하는 프로세스를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 컴퓨팅 장치의 블록도이다.
도 3은 본 발명의 일 실시예에 따라 서비스를 호출하는 프로세스를 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따라 제1 서비스의 처리가 완료되기까지의 과정을 나타내는 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 2는 상기 본 발명의 일 실시예에 따른 컴퓨팅 장치(100)의 블록도이다.
먼저, 도 2에 도시된 바와 같이, 본 발명의 컴퓨팅 장치(100)는 통신부(110)와 프로세서(120)를 포함하고, 경우에 따라 도 2와는 달리 후술할 데이터베이스(130)도 포함할 수 있다.
여기서, 본 발명의 일 실시예에 따른 서비스의 처리를 관리하는 컴퓨팅 장치(100)는 디지털 기기로서, 프로세서를 탑재하여 연산 능력을 갖춘 디지털 기기라면 얼마든지 본 발명에 따른 컴퓨팅 장치(100)로서 채택될 수 있다.
통신부(110)는 작업 요청을 획득하고, 스레드 사이에서 작업 요청 전달을 수행할 수 있다. 예를 들어, 클라이언트로부터 소정의 요청이 있는 경우 통신부(110)는 이러한 작업 요청을 획득할 수 있고 또한, 제1 스레드에서 처리되는 제1 서비스의 완료를 위해 제2 서비스의 처리가 필요하다면, 제2 서비스를 호출하는 요청을 제2 스레드에 전달할 수 있다.
한편, 데이터베이스(130)는 컴퓨팅 장치(100)의 통신부(110)에 의해 접근이 가능할 수 있다. 후술할 처리 완료 정보 및 처리 중간 정보 등은 데이터베이스(130)에 저장될 수 있다.
이하에서는, 프로세서(120)의 역할과 함께 복수 개의 서비스가 복수 개의 스레드에서 처리되는 과정을 상세한 설명을 통하여 자세하게 알아보기로 한다.
이때, 복수 개의 서비스는 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드는 적어도 제1 스레드, 제2 스레드를 포함한다고 가정하고 서술하겠다.
도 3은 본 발명의 일 실시예에 따라 서비스를 호출하는 프로세스를 나타낸 도면이다.
제1 스레드에서 처리되고 있는 제1 서비스가 제2 서비스를 호출하면, 컴퓨팅 장치(100)는, 제2 서비스가 제2 스레드에서 처리되도록 지원할 수 있다.
도 3을 참조하면, 제1 스레드에서 서비스 A(이하 "제1 서비스"라 한다)를 처리하다가 서비스 B(이하 "제2 서비스"라 한다)를 호출하여 제2 스레드에서 제2 서비스가 처리되는 것을 확인할 수 있다.
또한, 제1 서비스의 처리를 중단하고 상기 중단된 제1 서비스의 이후 재개될중단된 부분의 정보를 데이터베이스(130) 또는 메모리에 저장할 수도 있다.
상기 중단된재개될 부분의 정보는 이후 제1 서비스가 재개될 때 필요한 정보로서, 상기 정보에는 제1 서비스의 나머지 파트가 처리되기 위한 진입점(Entry-Point)인 메소드(Method) 정보가 포함될 수 있다.
여기서, 메소드는 함수(Function)와 동일한 기능을 하며, 하나의 서비스에는 복수 개의 메소드가 포함될 수 있다. 특히, 더불어 본 특허에서 사용하는 서비스 모델에서는 이러한 메소드들 중 하나 이상의 메소드가 진입점이 될 수 있다. 진입점이라 함은 실제 서비스에서 사용하는 업무 로직이 구현된 내용을 실제 수행할 수 있도록 수행의 시작 지점을 가르키는 것이라 볼 수 있으며, 여러 개의 메소드가 진입점으로서 설정될 수 있다. 일반적인 경우에는 고정된 진입점을 통해 항상 서비스가 수행되도록 사용되지만, 제2 서비스를 호출하면서 자신의 진입점을 재설정할 수 있다. 제1 서비스에 포함된 적어도 하나의 메소드 중에서 제2 서비스를 호출하면서 처리가 중단된 지점의 메소드를 진입점인 메소드로 볼 수 있다.
참고로즉, 제1 서비스가 재개될 경우 제2 서비스를 호출할 때 지재설정한의 진입점인 서비스 객체의 메소드를 지정실행함으로써, 컴퓨팅 장치(100)는, 제2 서비스의 처리가 완료된 이후 상기 메소드로부터 제1 서비스를 재개할 수 있다.
위와 같이, 본 발명은 다른 서비스를 호출할 때 다음에 수행할 진입점을 지정하는 점에서, Callstack 을 이용하여 중단된 지점에서 다시 서비스를 실행하는 코루틴(Co-routine)과는 차이가 있다는 것을 확인할 수 있다.
일반적으로, 프로그램의 진입점인 메소드는 주로 main 메소드이나, 본 발명은 제1 서비스가 처음 시작될 때가 아니라 제1 서비스의 처리가 진행되던 중에 중단된 것을 상정하므로 main 메소드가 아닌 다른 특정 메소드가 진입점이 될 수 있다.
컴퓨팅 장치(100)의 프로세서(120)는, 데이터베이스(130)나 메모리에 저장된 정보로부터 진입점인 메소드를 획득할 수 있고, 이를 참조하여 제1 서비스의 나머지 파트가 제1 스레드에서 처리되도록 하거나 경우에 따라 제1 스레드를 제외한 다른 스레드에서 처리되도록 지원할 수 있다.
제1 스레드에서 처리될 지, 다른 스레드에서 처리될 지의 판단 기준에 대해서는 뒤에서 서술하겠다.
한편, 제2 서비스가 처리될 때, 컴퓨팅 장치(100)는, 제1 스레드로 하여금 제3 서비스를 처리하도록 지원할 수 있다.
도 3에서 볼 수 있듯이, 제2 스레드에서 제2 서비스가 처리되는 동안, 제1 스레드에서는 제3 서비스를 처리하는 것을 볼 수 있다.
물론, 도면에는 도시하지 않았지만, 변형 예로서, 제2 서비스가 호출되면, 제1 스레드에서는 제2 서비스의 처리 완료 정보와 관계없이 처리 가능한 제1 서비스의 적어도 일부를 처리한 이후에 제3 서비스를 처리할 수도 있다.
한편, 기존의 비동기 방식을 나타낸 도 1의 경우, 제2 스레드가 제2 서비스를 처리하는 동안, 제1 스레드는 제1 서비스의 추가적인 작업을 수행할 수 있을 뿐 제3 서비스와 같은 다른 기타 서비스를 처리할 수는 없다.
결국, 종래의 비동기 방식에 따르면, 제2 서비스의 처리가 완료되기 전에 처리가 가능한 제1 서비스 일부의 처리가 완료되면, 제1 스레드는 다른 서비스를 처리할 수 없고 제2 서비스의 처리가 완료될 때까지 대기하여야 한다.
상기와 같이 다른 서비스를 받아들이지 못하고 기다리는 것을 블라킹(Blocking)이라 하며, 블라킹 방식으로 기다리지 않는다는 점이 본 발명과 종래의 비동기 방식의 큰 차이점이다.
한편, 제2 서비스의 처리가 완료되면, 컴퓨팅 장치(100)는 일부 처리가 진행된 제1 서비스의 파트인 일부 처리 파트를 제외한 제1 서비스의 나머지 파트를 제2 서비스의 처리 완료 정보를 이용하여 처리할 수 있다.
구체적으로, 제2 서비스가 종료되면, 컴퓨팅 장치(100)는, 제1 서비스의 객체에 제2 서비스의 처리 완료 정보를 전달해주고, 제1 서비스가 다시 스케쥴링하여 작업이 재개될 수 있도록 할 수 있다.
여기서, 일부 처리 파트는 제2 서비스의 처리가 완료되기 전 제1 스레드가 제1 서비스에 대해 일부 처리한 부분이고, 나머지 파트는 제1 서비스의 일부 처리 파트를 제외한 부분을 의미한다.
또한, 제1 서비스의 나머지 파트가 처리되기 위해서는 호출된 제2 서비스가 처리된 후의 결과 정보가 필요하므로, 컴퓨팅 장치(100)는, 제2 서비스의 처리 완료 정보를 이용하여 (i) 제1 서비스의 나머지 파트를 제1 스레드에서 처리하도록 하거나 (ii) 제1 서비스의 나머지 파트를 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원할 수 있다.
만약, 제3 서비스의 처리가 완료되기 전에 제2 스레드에서 제2 서비스의 처리가 완료되면, 컴퓨팅 장치(100)는 제1 스레드를 제외한 다른 스레드로 하여금 제1 서비스를 처리하도록 지원할 수 있다.
구체적으로, 제1 스레드에서 제3 서비스를 처리하는 중인 상황에서 제2 스레드에서 제2 서비스의 처리가 완료되면, 제1 스레드에서는 제3 서비스를 계속 처리할 지 아니면 제1 서비스의 나머지 파트를 처리할지 판단할 수 있다. 이때, 이미 제1 스레드에서 처리되고 있는 제3 서비스를 그대로 제1 스레드에서 처리하도록 하고, 제1 서비스의 나머지 파트를 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 경우를 상정할 수도 있으나, 반드시 이에 한정되는 것은 아니다.
여기서, 다른 스레드는 제2 스레드를 포함하는 개념이며, 이 경우, 제2 서비스를 처리한 제2 스레드가 제2 서비스의 처리 완료 정보를 제1 스레드로 리턴하지 않는 대신 제1 서비스의 나머지 파트를 제1 스레드로부터 수신하여 처리할 수도 있다.
도 4는 본 발명의 일 실시예에 따라 제1 서비스의 처리가 완료되기까지의 과정을 나타내는 도면이다.
도 4를 참조하여 본 발명의 프로세스를 다시 정리하면, 제1 스레드에서 처리되고 있는 제1 서비스가 제2 서비스를 호출(S420)하면, 제2 스레드는 제2 서비스를 처리(S430)하고, 제1 스레드에서는 제1 서비스의 처리가 중단(미도시)될 수 있다.
제1 서비스의 처리를 수행하고 있지 않는 제1 스레드에서는 제3 서비스를 처리(S440)할 수 있다. 그런데, 제2 스레드에서 제2 서비스의 처리가 완료(S450)되었을 때, 제1 스레드에서 제3 서비스의 처리를 완료하였는지 여부를 판단(S460)할 수 있다.
제1 스레드에서 제3 서비스의 처리가 완료되었다면, 제1 스레드가 제2 서비스의 처리 완료 정보를 이용하여 제1 서비스의 나머지 파트를 처리(S470)할 수 있다.
반대로, 제1 스레드에서 제3 서비스의 처리가 완료되지 않았다면, 제1 스레드를 제외한 다른 스레드(제2 스레드, 제3 스레드 등)가 제2 서비스의 처리 완료 정보를 이용하여 제1 서비스의 나머지 파트를 처리(S480)할 수 있다.
이와 같이, 제1 서비스의 경우 제1 스레드에서 처리가 진행되다가 제2 서비스를 호출하면서 처리가 중단된 후 다시 재개될 것이다. 이와 같이 중단되기 전까지를 제1 서비스의 일부 처리 파트라 하고, 상기 일부 처리 파트를 처리하면서 획득한 정보를 처리 중간 정보라 일컫기로 한다.
제1 서비스가 중단된 이후 재개된 이후의 처리 대상인 부분을 제1 서비스의 나머지 파트라 일컫기로 한 것은 전술한 바와 같으며, 처리가 완료되면서 획득한 정보는 처리 완료 정보라고 일컬을 수 있다.
이하에서는, 처리 완료 정보와 처리 중간 정보가 각각 어느 스레드에서 획득되고 처리되는지를 구체적으로 살펴보겠다.
제2 서비스의 처리가 완료된 후 제1 서비스의 파트인 일부 처리 파트를 제외한 제1 서비스의 나머지 파트가 제1 스레드에서 처리되기 시작하면, 컴퓨팅 장치(100)는, 제2 서비스의 처리 완료 정보를 제1 스레드로 하여금 획득하도록 지원하는 프로세스를 수행할 수 있다.
이 경우는 제1 스레드에서 제3 서비스의 처리가 완료된 상태에서 제2 서비스의 처리가 완료된 경우에 해당하며, 컴퓨팅 장치(100)는 제1 스레드로 하여금 제1 서비스의 나머지 파트를 처리하도록 하기 위해 제2 서비스의 처리 완료 정보를 획득하도록 지원할 수 있다.
참고로, 제1 서비스의 처리가 완료되기 위해서는 제2 서비스의 처리가 필요하고, 이에 따라 제2 서비스의 처리 결과 값 등에 해당하는 처리 완료 정보는, 제1 서비스에서 변수 등에 해당하여 제1 서비스의 처리를 재개하는데 있어서 획득되어야 하는 필수 정보이다.
또한, 제2 서비스의 처리가 완료된 후, 제1 서비스의 나머지 파트가 제2 스레드에서 처리되면, 컴퓨팅 장치(100)는, 제1 서비스의 일부 처리 파트에 대한 처리 중간 정보를 제2 스레드로 하여금 획득하도록 지원하는 프로세스를 수행할 수 있다.
이 경우는 제1 스레드에서 처리되는 제3 서비스가 완료되기 전 제2 서비스의 처리가 완료되고, 제2 스레드에서 제2 서비스를 처리한 이후 다른 서비스를 처리하지 않는 경우를 상정한 것으로, 컴퓨팅 장치(100)는, 제1 서비스의 일부 처리 파트에 대한 처리 중간 정보를 제2 스레드로 하여금 획득하도록 지원할 수 있다.
마찬가지로, 제2 스레드가 제1 서비스의 나머지 파트를 처리하기 위해서는 제2 스레드가 이미 보유하고 있는 제2 서비스의 처리 완료 정보뿐만 아니라 제1 서비스의 일부 처리 파트에 대한 처리 중간 정보도 필요하기 때문이다.
또한, 제2 서비스의 처리가 완료된 후, 제1 서비스의 나머지 파트가 제1 스레드 및 제2 스레드를 제외한 다른 스레드에서 처리되기 시작하면, 컴퓨팅 장치(100)는, 제2 서비스의 처리 완료 정보 및 제1 서비스의 처리 중간 정보를 다른 스레드로 하여금 획득하도록 지원하는 프로세스를 수행할 수 있다.
이 경우는 제1 스레드에서 처리되는 제3 서비스가 완료되기 전 제2 서비스의 처리가 완료되고, 제1 서비스의 나머지 파트는 제1 스레드 및 제2 스레드가 아닌 다른 스레드에서 처리되는 상황을 상정한 것으로, 컴퓨팅 장치(100)는 제2 서비스의 처리 완료 정보 및 제1 서비스의 처리 중간 정보를 다른 스레드로 하여금 획득하도록 지원할 수 있다.
본 발명의 다른 실시예로서, 제2 스레드에서 제2 서비스의 처리가 완료된 이후, 제1 스레드에서 처리되고 있는 제3 서비스가 (i) 기설정된 제1 임계시간 내 처리될 것으로 판단되면, 컴퓨팅 장치(100)는, 제1 스레드로 하여금 제1 서비스를 처리하도록 지원하고, (ii) 기설정된 제1 임계시간 내 처리되지 않을 것으로 판단되면, 컴퓨팅 장치(100)는, 제1 스레드를 제외한 다른 스레드로 하여금 제1 서비스를 처리하도록 지원할 수 있다.
이는 제1 스레드에서 제3 서비스의 처리가 아직 남은 상태라도 제3 서비스의 처리가 길지 않은 소정의 시간인 제1 임계시간 내 처리될 것으로 판단되면, 컴퓨팅 장치(100)는, 제1 스레드로 하여금 제1 임계 시간 동안 제3 서비스를 처리 완료하도록 한 후 제1 서비스를 처리하도록 할 수 있다는 것이다.
반대로, 제3 서비스의 처리가 제1 임계시간 내 처리될 것으로 판단되지 않으면, 컴퓨팅 장치(100)는, 제2 스레드 또는 제3 스레드로 하여금 제1 서비스를 처리하도록 할 수 있다. 이때, 제1 스레드에서는 제3 서비스를 처리하고 있을 것이다.
본 발명의 또 다른 실시예로서, 복수 개의 서비스 사이에 우선순위가 존재하고, 제1 서비스가 제3 서비스보다 우선순위가 높은 상태라고 가정할 수 있다.
이때, 제3 서비스의 처리가 완료되기 전에 제2 스레드에서 제2 서비스의 처리가 완료되면, 컴퓨팅 장치(100)는, 제1 스레드로 하여금 제3 서비스의 처리를 중단하고 제1 서비스에 대한 처리를 재개하도록 지원할 수 있다.
구체적으로, 제2 스레드에서 제2 서비스의 처리가 완료될 때, 제1 스레드에서 제3서비스를 처리하고 있다고 하여도 제1 서비스의 우선순위가 제3 서비스의 우선순위보다 높으므로, 컴퓨팅 장치(100)는, 제3 서비스의 처리를 중단하고 제1 서비스의 나머지 파트에 대한 처리를 진행하도록 지원할 수 있다.
다만, 제1 스레드에서 처리되는 제1 서비스에 대한 처리가 재개되고 나서 (i) 기설정된 제2 임계시간 내 제1 서비스의 처리가 완료될 것으로 판단되면, 컴퓨팅 장치(100)는, 제1 스레드로 하여금 뒤이어 제3 서비스를 처리하도록 지원할 수 있다.
즉, 제1 스레드에서 제1 서비스의 나머지 파트에 대한 처리를 우선 진행하고, 완료되기까지 길지 않은 소정의 시간인 제2 임계시간 내 처리될 것으로 판단되면 제1 스레드는 제1 서비스의 처리를 완료한 후에 제3 서비스도 처리할 수 있다.
반면, (ii) 기설정된 제2 임계시간 내 처리가 완료될 것으로 판단되지 않으면, 컴퓨팅 장치(100)는, 제1 스레드를 제외한 다른 스레드로 하여금 제3 서비스를 처리하도록 지원할 수 있다.
제1 스레드에서 제1 서비스의 나머지 파트에 대한 처리가 제2 임계시간 내 완료되지 않을 것으로 판단되면, 제1 스레드는 제1 서비스를 처리하고, 다른 스레드는 제3 서비스를 처리하도록 할 수 있다.
한편, 데이터베이스(130)는 각 서비스에 대한 처리 예상 시간 정보를 저장하고 있다. 여기서, 처리 예상 시간 정보는 하나의 스레드에서 서비스가 처리되고 완료되기까지의 예상되는 시간으로서, 서비스에 포함된 메소드 등의 복잡도에 따라 달라질 수 있다.
이때, 컴퓨팅 장치(130)는 제2 스레드에서의 제2 서비스의 처리 속도, 데이터베이스(130)로부터 획득한 처리 예상 시간 정보 중 어느 하나를 참조하여, 복수 개의 서비스 중 제3 서비스를 결정하도록 지원할 수 있다.
구체적으로, 제2 스레드에서 처리되는 제2 서비스의 처리속도가 빠를 것으로 예상되면, 컴퓨팅 장치(100)는, 처리 예상 시간이 짧은 서비스를 제3 서비스로 선택하고 제2 서비스가 완료되기 전에 제3 서비스가 완료되도록 하여 제1 스레드에서 제1 서비스의 나머지 파트를 처리하도록 할 수 있다.
반대로, 제2 스레드에서 처리되는 제2 서비스의 처리속도가 느릴 것으로 예상되면, 컴퓨팅 장치(100)는, 처리 예상 시간이 어느 정도 긴 서비스를 제3 서비스로 선택하여도 제2 서비스가 완료되기 전에 제3 서비스가 완료되도록 할 수 있다.
한편, 컴퓨팅 장치(100)는, (i) 서비스의 처리 완료 정보 또는 (ii) 서비스의 일부 처리 파트에 대한 처리 중간 정보를 데이터베이스(130)에 직렬화(serialize)된 형태로 저장할 수 있다.
본 발명에서는 서비스의 처리 완료 정보 또는 처리 중간 정보를 직렬화된 형태로 저장함으로써 각종 변수 등의 데이터를 용이하게 저장하고, 필요에 따라 통신부(120)를 통해 손쉽게 전달이 가능하게 할 수 있다.
구체적으로, 제1 서비스를 수행하던 객체는 메모리, 혹은 데이터베이스(130)에 직렬화된 형태로 저장되어 있으므로, 제2 서비스의 처리가 완료된 후 제1 서비스의 처리가 재개될 때, 기존에 처리된 제1 서비스의 처리 중간 정보 등의 결과물을 그대로 이용할 수 있다.
물론, 직렬화된 형태로 저장될 뿐 아니라 상기 변수 등의 데이터를 단순 레퍼런스로 메모리에 저장할 수도 있다.
이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100: 컴퓨팅 장치
110: 통신부
120: 프로세서
130: 데이터베이스

Claims (20)

  1. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법에 있어서,
    (a) 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 컴퓨팅 장치는, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하는 단계,
    (b) 상기 제2 서비스가 처리될 때, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 단계, 및
    (c) 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 (a) 단계에서 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 단계
    를 포함하되,
    상기 (a) 단계에서,
    상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 컴퓨팅 장치는, 상기 제1 서비스의 처리를 중단하고, 상기 중단된 제1 서비스의 이후 중단된재개될 부분의 정보를 데이터베이스 또는 메모리에 저장하며,
    상기 (c) 단계에서,
    상기 제1 서비스의 상기 나머지 파트가 처리되기 위한 진입점(Entry-Point)인 메소드(Method)가 상기 중단재개될 부분의 정보에 포함되는 상태에서, 상기 (a) 단계에서 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 상기 나머지 파트가 처리될 때,
    상기 컴퓨팅 장치는, 상기 데이터베이스 또는 상기 메모리로부터 획득한 상기 메소드를 참조하여 상기 제1 서비스의 상기 나머지 파트가 상기 제1 스레드에서 처리되도록 하거나 상기 제1 스레드를 제외한 다른 스레드에서 처리되도록 지원하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 제3 서비스의 처리가 완료되기 전에 상기 제2 스레드에서 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하는 것을 특징으로 하는 방법.
  3. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법에 있어서,
    (a) 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 컴퓨팅 장치는, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하는 단계,
    (b) 상기 제2 서비스가 처리될 때, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 단계, 및
    (c) 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 (a) 단계에서 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 단계
    를 포함하되,
    상기 제3 서비스의 처리가 완료되기 전에 상기 제2 스레드에서 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하고,
    상기 제2 스레드에서 상기 제2 서비스의 처리가 완료된 이후, 상기 제1 스레드에서 처리되고 있는 상기 제3 서비스가 (i) 기설정된 제1 임계시간 내 처리될 것으로 판단되면, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하고, (ii) 상기 기설정된 제1 임계시간 내 처리되지 않을 것으로 판단되면, 상기 컴퓨팅 장치는, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하는 것을 특징으로 하는 방법.
  4. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법에 있어서,
    (a) 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 컴퓨팅 장치는, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하는 단계,
    (b) 상기 제2 서비스가 처리될 때, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 단계, 및
    (c) 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 (a) 단계에서 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 단계
    를 포함하되,
    상기 복수 개의 서비스 사이에 우선순위가 존재하고, 상기 제1 서비스가 상기 제3 서비스보다 우선순위가 높은 상태에서,
    상기 제3 서비스의 처리가 완료되기 전에 상기 제2 스레드에서 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스의 처리를 중단하고 상기 제1 서비스에 대한 처리를 재개하도록 지원하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 제1 스레드에서 처리되는 상기 제1 서비스에 대한 처리가 재개되고 나서 (i) 기설정된 제2 임계시간 내 처리가 완료될 것으로 판단되면, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하고, (ii) 상기 기설정된 제2 임계시간 내 처리가 완료될 것으로 판단되지 않으면, 상기 컴퓨팅 장치는, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 것을 특징으로 하는 방법.
  6. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법에 있어서,
    (a) 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 컴퓨팅 장치는, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하는 단계,
    (b) 상기 제2 서비스가 처리될 때, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 단계, 및
    (c) 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 (a) 단계에서 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 단계
    를 포함하되,
    상기 (c) 단계에서,
    (i) 상기 제2 서비스의 처리가 완료된 후, 상기 (a) 단계에서 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트가 상기 제1 스레드에서 처리되기 시작하면, 상기 컴퓨팅 장치는, 상기 제2 서비스의 처리 완료 정보를 상기 제1 스레드로 하여금 획득하도록 지원하는 프로세스, (ii-1) 상기 제2 서비스의 처리가 완료된 후, 상기 제1 서비스의 나머지 파트가 상기 제2 스레드에서 처리되면, 상기 컴퓨팅 장치는, 상기 제1 서비스의 상기 일부 처리 파트에 대한 처리 중간 정보를 상기 제2 스레드로 하여금 획득하도록 지원하는 프로세스, (ii-2) 상기 제2 서비스의 처리가 완료된 후, 상기 제1 서비스의 나머지 파트가 상기 제 1 스레드 및 상기 제2 스레드를 제외한 다른 스레드에서 처리되기 시작하면, 상기 컴퓨팅 장치는, 상기 제2 서비스의 상기 처리 완료 정보 및 상기 제1 서비스의 상기 처리 중간 정보를 상기 다른 스레드로 하여금 획득하도록 지원하는 프로세스 중 어느 하나를 수행하는 것을 특징으로 하는 방법.
  7. 삭제
  8. 삭제
  9. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법에 있어서,
    (a) 상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 컴퓨팅 장치는, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하는 단계,
    (b) 상기 제2 서비스가 처리될 때, 상기 컴퓨팅 장치는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 단계, 및
    (c) 상기 제2 서비스의 처리가 완료되면, 상기 컴퓨팅 장치는, 상기 (a) 단계에서 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 단계
    를 포함하되,
    각 서비스에 대한 처리 예상 시간 정보를 데이터베이스 또는 메모리에 저장하고 있는 상태에서,
    상기 (b) 단계는,
    상기 컴퓨팅 장치는, 상기 제2 스레드에서의 상기 제2 서비스의 처리 속도, 상기 데이터베이스 또는 상기 메모리로부터 획득한 상기 처리 예상 시간 정보 중 어느 하나를 참조하여, 상기 복수 개의 서비스 중 상기 제3 서비스를 결정하도록 지원하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서
    상기 컴퓨팅 장치는, (i) 상기 서비스의 처리 완료 정보 또는 (ii) 상기 서비스의 일부 처리 파트에 대한 처리 중간 정보를 데이터베이스 또는 메모리에 직렬화(serialize)된 형태로 저장하는 것을 특징으로 하는 방법.
  11. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 컴퓨팅 장치에 있어서,
    상기 복수 개의 스레드 사이에서 작업 요청 전달을 지원하는 통신부; 및
    상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하고,
    상기 제2 서비스가 처리될 때, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하며,
    상기 제2 서비스의 처리가 완료되면, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 프로세서를 포함하되,
    상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 프로세서는, 상기 제1 서비스의 처리를 중단하고, 상기 중단된 제1 서비스의 이후 재개될중단된 부분의 정보를 상기 통신부를 통해 데이터베이스 또는 메모리에 저장하며,
    상기 제1 서비스의 상기 나머지 파트가 처리되기 위한 진입점(Entry-Point)인 메소드(Method)가 상기 재개될중단된 부분의 정보에 포함되는 상태에서, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 상기 나머지 파트가 처리될 때,
    상기 프로세서는, 상기 데이터베이스 또는 상기 메모리로부터 획득한 상기 메소드를 참조하여 상기 제1 서비스의 상기 나머지 파트가 상기 제1 스레드에서 처리되도록 하거나 상기 제1 스레드를 제외한 다른 스레드에서 처리되도록 지원하는 것을 특징으로 하는 장치.
  12. 제11항에 있어서,
    상기 제3 서비스의 처리가 완료되기 전에 상기 제2 스레드에서 상기 제2 서비스의 처리가 완료되면, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하는 것을 특징으로 하는 장치.
  13. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 컴퓨팅 장치에 있어서,
    상기 복수 개의 스레드 사이에서 작업 요청 전달을 지원하는 통신부; 및
    상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하고,
    상기 제2 서비스가 처리될 때, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하며,
    상기 제2 서비스의 처리가 완료되면, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 프로세서를 포함하되,
    상기 제3 서비스의 처리가 완료되기 전에 상기 제2 스레드에서 상기 제2 서비스의 처리가 완료되면, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하고,
    상기 제2 스레드에서 상기 제2 서비스의 처리가 완료된 이후, 상기 제1 스레드에서 처리되고 있는 상기 제3 서비스가 (i) 기설정된 제1 임계시간 내 처리될 것으로 판단되면, 상기 프로세서는, 상기 제1 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하고, (ii) 상기 기설정된 제1 임계시간 내 처리되지 않을 것으로 판단되면, 상기 프로세서는, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제1 서비스를 처리하도록 지원하는 것을 특징으로 하는 장치.
  14. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 컴퓨팅 장치에 있어서,
    상기 복수 개의 스레드 사이에서 작업 요청 전달을 지원하는 통신부; 및
    상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하고,
    상기 제2 서비스가 처리될 때, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하며,
    상기 제2 서비스의 처리가 완료되면, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 프로세서를 포함하되,
    상기 복수 개의 서비스 사이에 우선순위가 존재하고, 상기 제1 서비스가 상기 제3 서비스보다 우선순위가 높은 상태에서,
    상기 제3 서비스의 처리가 완료되기 전에 상기 제2 스레드에서 상기 제2 서비스의 처리가 완료되면, 상기 프로세서는, 상기 제1 스레드로 하여금 상기 제3 서비스의 처리를 중단하고 상기 제1 서비스에 대한 처리를 재개하도록 지원하는 것을 특징으로 하는 장치.
  15. 제14항에 있어서,
    상기 제1 스레드에서 처리되는 상기 제1 서비스에 대한 처리가 재개되고나서 (i) 기설정된 제2 임계시간 내 처리가 완료될 것으로 판단되면, 상기 프로세서는, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하고, (ii) 상기 기설정된 제2 임계시간 내 처리가 완료될 것으로 판단되지 않으면, 상기 프로세서는, 상기 제1 스레드를 제외한 다른 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하는 것을 특징으로 하는 장치.
  16. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 컴퓨팅 장치에 있어서,
    상기 복수 개의 스레드 사이에서 작업 요청 전달을 지원하는 통신부; 및
    상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하고,
    상기 제2 서비스가 처리될 때, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하며,
    상기 제2 서비스의 처리가 완료되면, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 프로세서를 포함하되,
    (i) 상기 제2 서비스의 처리가 완료된 후, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트가 상기 제1 스레드에서 처리되기 시작하면, 상기 프로세서는, 상기 제2 서비스의 처리 완료 정보를 상기 제1 스레드로 하여금 획득하도록 지원하는 프로세스, (ii-1) 상기 제2 서비스의 처리가 완료된 후, 상기 제1 서비스의 나머지 파트가 상기 제2 스레드에서 처리되면, 상기 프로세서는, 상기 제1 서비스의 상기 일부 처리 파트에 대한 처리 중간 정보를 상기 제2 스레드로 하여금 획득하도록 지원하는 프로세스, (ii-2) 상기 제2 서비스의 처리가 완료된 후, 상기 제1 서비스의 나머지 파트가 상기 제 1 스레드 및 상기 제2 스레드를 제외한 다른 스레드에서 처리되기 시작하면, 상기 프로세서는, 상기 제2 서비스의 상기 처리 완료 정보 및 상기 제1 서비스의 상기 처리 중간 정보를 상기 다른 스레드로 하여금 획득하도록 지원하는 프로세스 중 어느 하나를 수행하는 것을 특징으로 하는 장치.
  17. 삭제
  18. 삭제
  19. 복수 개의 서비스가 적어도 제1 서비스, 제2 서비스, 제3 서비스를 포함하고, 복수 개의 스레드가 적어도 제1 스레드, 제2 스레드를 포함한다고 할 때, 상기 복수 개의 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 컴퓨팅 장치에 있어서,
    상기 복수 개의 스레드 사이에서 작업 요청 전달을 지원하는 통신부; 및
    상기 제1 스레드에서 처리되고 있는 상기 제1 서비스가 상기 제2 서비스를 호출하면, 상기 제2 서비스가 상기 제2 스레드에서 처리되도록 지원하고,
    상기 제2 서비스가 처리될 때, 상기 제1 스레드로 하여금 상기 제3 서비스를 처리하도록 지원하며,
    상기 제2 서비스의 처리가 완료되면, 일부 처리가 진행된 상기 제1 서비스의 파트인 일부 처리 파트를 제외한 상기 제1 서비스의 나머지 파트를 상기 제2 서비스의 처리 완료 정보를 이용하여 (i) 상기 제1 스레드에서 처리하도록 하거나 (ii) 상기 제1 스레드를 제외한 다른 스레드에서 처리하도록 지원하는 프로세서를 포함하되,
    각 서비스에 대한 처리 예상 시간 정보를 데이터베이스 또는 메모리에 저장하고 있는 상태에서,
    상기 프로세서는, 상기 제2 스레드에서의 상기 제2 서비스의 처리 속도, 상기 데이터베이스 또는 상기 메모리로부터 획득한 상기 처리 예상 시간 정보 중 어느 하나를 참조하여, 상기 복수 개의 서비스 중 상기 제3 서비스를 결정하도록 지원하는 것을 특징으로 하는 장치.
  20. 제11항에 있어서
    상기 프로세서는, (i) 상기 서비스의 처리 완료 정보 또는 (ii) 상기 서비스의 일부 처리 파트에 대한 처리 중간 정보를 데이터베이스 또는 메모리에 직렬화(serialize)된 형태로 저장하는 것을 특징으로 하는 장치.
KR1020170082846A 2017-06-29 2017-06-29 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치 KR101805462B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170082846A KR101805462B1 (ko) 2017-06-29 2017-06-29 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치
US15/655,789 US10241833B2 (en) 2017-06-29 2017-07-20 Method and computing device for increasing throughputs of services processed by threads

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170082846A KR101805462B1 (ko) 2017-06-29 2017-06-29 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR101805462B1 true KR101805462B1 (ko) 2018-01-10

Family

ID=60998475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170082846A KR101805462B1 (ko) 2017-06-29 2017-06-29 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치

Country Status (2)

Country Link
US (1) US10241833B2 (ko)
KR (1) KR101805462B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102051302B1 (ko) * 2018-06-22 2019-12-03 주식회사 티맥스 소프트 서비스 처리 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100791437B1 (ko) * 2002-12-31 2008-01-04 인터내셔널 비지네스 머신즈 코포레이션 멀티스레드 어플리케이션에서 스레드 실행을 관리하기위한 방법 및 장치
KR101076910B1 (ko) * 2004-07-09 2011-10-25 마이크로소프트 코포레이션 객체 지향 언어로의 병행 프로그램 구현
JP2013080509A (ja) 2012-12-27 2013-05-02 Renesas Electronics Corp マルチスレッドプロセッサ
US20130298137A1 (en) 2011-01-07 2013-11-07 Fujitsu Limited Multi-task scheduling method and multi-core processor system
KR101638136B1 (ko) 2015-05-14 2016-07-08 주식회사 티맥스 소프트 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4564901A (en) * 1983-07-21 1986-01-14 Burroughs Corporation Method of performing a sequence of related activities via multiple asynchronously intercoupled digital processors
US9298504B1 (en) * 2012-06-11 2016-03-29 Amazon Technologies, Inc. Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system
JP2015064676A (ja) * 2013-09-24 2015-04-09 株式会社東芝 情報処理装置、半導体装置、情報処理方法およびプログラム
US9986036B2 (en) * 2015-07-16 2018-05-29 Ge Aviation Systems, Llc Apparatus and method of operating a system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100791437B1 (ko) * 2002-12-31 2008-01-04 인터내셔널 비지네스 머신즈 코포레이션 멀티스레드 어플리케이션에서 스레드 실행을 관리하기위한 방법 및 장치
KR101076910B1 (ko) * 2004-07-09 2011-10-25 마이크로소프트 코포레이션 객체 지향 언어로의 병행 프로그램 구현
US20130298137A1 (en) 2011-01-07 2013-11-07 Fujitsu Limited Multi-task scheduling method and multi-core processor system
JP2013080509A (ja) 2012-12-27 2013-05-02 Renesas Electronics Corp マルチスレッドプロセッサ
KR101638136B1 (ko) 2015-05-14 2016-07-08 주식회사 티맥스 소프트 멀티 스레드 구조에서 작업 분배 시 스레드 간 락 경쟁을 최소화하는 방법 및 이를 사용한 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102051302B1 (ko) * 2018-06-22 2019-12-03 주식회사 티맥스 소프트 서비스 처리 방법

Also Published As

Publication number Publication date
US20190004856A1 (en) 2019-01-03
US10241833B2 (en) 2019-03-26

Similar Documents

Publication Publication Date Title
US8984123B2 (en) Rejuvenation processing device, rejuvenation processing system, computer program, and data processing method
US8589925B2 (en) Techniques for switching threads within routines
CN109064327B (zh) 一种智能合约处理方法、装置及设备
US9430283B2 (en) Information processing apparatus and job scheduling method
US20120023495A1 (en) Rejuvenation processing device, rejuvenation processing system, computer program, and data processing method
EP3139269A1 (en) Interrupt messages processing method, virtual machine monitor and interrupt controller
US9189293B2 (en) Computer, virtualization mechanism, and scheduling method
CN109660569B (zh) 一种多任务并发执行方法、存储介质、设备及系统
US9411660B2 (en) Lock control apparatus and lock control method
JP2010272076A (ja) マルチプロセッサシステム
CN106325974B (zh) 一种虚拟化io性能优化方法及系统
CN113282436A (zh) 事件处理方法、装置、设备以及存储介质
KR101805462B1 (ko) 스레드에서 처리되는 서비스 처리량을 증가시키기 위한 방법 및 컴퓨팅 장치
US8146085B2 (en) Concurrent exception handling using an aggregated exception structure
KR20130041540A (ko) 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치
US11928529B2 (en) High-throughput BPF map manipulations with uprobes
US20150160968A1 (en) Freezing a call stack
JP2007172611A (ja) 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法)
US8896610B2 (en) Error recovery operations for a hardware accelerator
WO2023125359A1 (zh) 一种任务处理的方法及装置
US9372723B2 (en) System and method for conditional task switching during ordering scope transitions
US10949367B2 (en) Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof
JP6751231B2 (ja) ジョブスケジューラ試験プログラム、ジョブスケジューラ試験方法及び並列処理装置
CN110764710A (zh) 低延迟高iops的数据访问方法与存储系统
CN111152215B (zh) 一种应用的控制方法及机器人

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant