KR101103905B1 - 수신한 리퀘스트에 따라 동작하는 서버 장치 - Google Patents

수신한 리퀘스트에 따라 동작하는 서버 장치 Download PDF

Info

Publication number
KR101103905B1
KR101103905B1 KR1020097024128A KR20097024128A KR101103905B1 KR 101103905 B1 KR101103905 B1 KR 101103905B1 KR 1020097024128 A KR1020097024128 A KR 1020097024128A KR 20097024128 A KR20097024128 A KR 20097024128A KR 101103905 B1 KR101103905 B1 KR 101103905B1
Authority
KR
South Korea
Prior art keywords
identification information
storage area
request
information storage
pieces
Prior art date
Application number
KR1020097024128A
Other languages
English (en)
Other versions
KR20100019453A (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 KR20100019453A publication Critical patent/KR20100019453A/ko
Application granted granted Critical
Publication of KR101103905B1 publication Critical patent/KR101103905B1/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

[과제] 리퀘스트에 따른 처리의 할당을 지금까지보다 효율화한다.
[해결 수단] 클라이언트 장치로부터 수신한 리퀘스트에 따라 동작하는 서버 장치로서, 시스템 메모리 공간에, 클라이언트 장치로부터 수신한 리퀘스트를 그 식별 정보에 대응지어 저장하고 있는 리퀘스트 저장 영역을 갖고, 또한, 유저 메모리 공간에, 처리 대기의 리퀘스트의 식별 정보를 저장하기 위한 식별 정보 저장 영역을 갖는, 저장 장치와, 상기 식별 정보 저장 영역에 저장되어 있는 식별 정보 조각의 수가 미리 정해진 기준수 이하로 감소한 것을 조건으로, 상기 리퀘스트 저장 영역으로부터 하나 이상의 처리 대기의 리퀘스트를 검색하여, 그 식별 정보를 상기 식별 정보 저장 영역에 저장하는 식별 정보 저장 유닛와, 서로 병렬로 동작하여, 상기 식별 정보 저장 영역으로부터 식별 정보를 취득할 수 있는 것을 조건으로, 그 식별 정보에 의해 식별되는 리퀘스트를 상기 리퀘스트 저장 영역으로부터 취득하여, 그 리퀘스트에 따른 처리를 행하는 복수의 리퀘스트 프로세서를 포함하는 서버 장치를 제공한다.

Description

수신한 리퀘스트에 따라 동작하는 서버 장치{SERVER DEVICE OPERATING IN RESPONSE TO RECEIVED REQUEST}
본 발명은 수신한 리퀘스트에 따라 동작하는 서버 장치에 관한 것이다. 특히, 본 발명은 수신한 복수의 리퀘스트에 따라 복수의 처리부가 병렬로 동작하는 서버 장치에 관한 것이다.
최근, 웹 서버를 이용한 비즈니스는 더욱더 활발해지고 있어, 웹 서버에 요구되는 기능도 고도하고 복잡해지고 있다. 예를 들면, 웹 서버는 다수의 리퀘스트를 동시 병행적으로 수신하는 경우가 있다. 이들에 효율적으로 대응하기 위해, 대규모 웹 서버는, 복수의 CPU를 포함하고 있고, 오퍼레이팅 시스템 상에서 복수의 스레드(thread)를 동작시키며, 그 각각에 각 리퀘스트를 할당하여, 병렬로 처리시키고 있다.
[비특허 문헌 1] Winsock에 대해. 홈 페이지 URL 「http://e-words.jp/w/Winsock.html」(2007년 4월 18일 검색)
발명의 개시
발명이 해결하려고 하는 과제
웹 서버에 의해 리퀘스트를 효율적으로 처리하기 위하여는, 스레드가 소정의 리퀘스트의 처리를 끝내고 나서 다음 리퀘스트의 처리를 개시할 때까지의 대기 시간(이후, 아이들 시간이라 칭함)을 단축하거나, 혹은 아이들 시간을 없애는 것이 유효하다. 이것을 실현하기 위하여, 각 스레드는, 전회의 리퀘스트의 처리를 끝내면 즉시, 수신 완료로 미처리인 리퀘스트를 검색하면 좋다고 생각된다. 그러나, 복수의 스레드의 각각이 다른 스레드와는 독립적으로 이러한 리퀘스트를 검색했을 경우에, 효율이 나쁜 경우가 있다.
구체적으로는, 웹 서버에 한정하지 않고 서버 장치가 클라이언트 장치와의 사이에서 TCP/IP 프로토콜 등에 준거해 통신하는 경우에, 소켓 인터페이스로서 알려져 있는 인터페이스를 이용하는 경우가 많다. 예를 들면, BSD계의 UNIX 오퍼레이팅 시스템 전용으로 개발된 Socket 인터페이스나 윈도우즈 오퍼레이팅 시스템의 Winsock 인터페이스 등이 잘 알려져 있다(비특허 문헌 1을 참조).
이 소켓 인터페이스에 있어서, 클라이언트 장치로부터 수신한 리퀘스트는 오퍼레이팅 시스템이나 디바이스 드라이버 등의 기능에 의해, 파일 디스크립터라 불리는 식별 정보에 대응지어져 시스템 메모리 공간에 저장된다. 각 스레드는, 수신 완료이면서 미처리의 리퀘스트를 검색하려고 하는 경우에, 이 시스템 메모리 공간을 스캔하여, 개개의 파일 디스크립터에 대응하는 리퀘스트를 판독하고, 그 리퀘스트가 수신 완료이면서 미처리인지 판단해야만 한다.
이 검색에는 시스템 메모리 공간으로의 액세스가 필요하기 때문에, 시스템 콜의 호출이 필요해지는 경우가 많다. 또한, 각 스레드가 이 검색을 독립하여 행하면 1개의 리퀘스트가 복수의 스레드에 할당되어 버리는 등의 문제가 있기 때문에, 이 검색을 위하여는 다른 스레드와의 사이의 배타 제어를 행하는 것이 바람직하다(이 배타 제어도 시스템 콜의 기능으로서 실현되고 있는 경우가 많음). 이 때문에, 각 스레드가 독립적으로 이러한 검색을 행하면 처리에 시간이 걸려, 웹 서버 전체로서의 성능을 오히려 저하시켜 버릴 우려가 있다.
이에 대해, 어느 특정한 스레드만이 그 외의 스레드에 리퀘스트를 할당하기 위해 이러한 검색을 행함으로써, 시스템 콜에 필요한 처리 시간을 단축하는 것도 생각할 수 있다. 단, 이 특정한 스레드의 처리는 웹 서버 본래의 리퀘스트에 따른 처리는 아니기 때문에, 너무 빈번히 동작하면 웹 서버 전체로서의 처리 능력을 오히려 저하시켜 버린다. 한편으로, 이 특정한 스레드의 동작 빈도를 너무 저하시키면, 리퀘스트가 수신이 완료되었음에도 불구하고 그것을 다른 스레드에 할당하지 못하여, 아이들 시간을 증가시켜 버린다.
그래서 본 발명은, 상기의 과제를 해결할 수 있는 서버 장치, 방법 및 프로그램을 제공하는 것을 목적으로 한다. 이 목적은 특허 청구의 범위에서의 독립항에 기재된 특징의 조합에 의해 달성된다. 또한 종속항은 본 발명의 더욱 유리한 구체적인 예를 규정한다.
과제를 해결하기 위한 수단
상기 과제를 해결하기 위하여, 본 발명의 일 측면에서는, 클라이언트 장치로부터 수신한 리퀘스트에 따라 동작하는 서버 장치로서, 시스템 메모리 공간에 클라이언트 장치로부터 수신한 리퀘스트를 그 식별 정보에 대응지어 저장하고 있는 리퀘스트 저장 영역을 갖고, 또한, 유저 메모리 공간에 처리 대기의 리퀘스트의 식별 정보를 저장하기 위한 식별 정보 저장 영역을 갖는 저장 장치와, 상기 식별 정보 저장 영역에 저장되어 있는 식별 정보의 수가 미리 정해진 기준수 이하로 감소한 것을 조건으로, 상기 리퀘스트 저장 영역으로부터 1 이상의 처리 대기의 리퀘스트를 검색하고, 그 식별 정보를 상기 식별 정보 저장 영역에 저장하는 식별 정보 저장부와, 서로 병렬로 동작하여 상기 식별 정보 저장 영역으로부터 식별 정보를 취득할 수 있는 것을 조건으로, 그 식별 정보에 의해 식별되는 리퀘스트를 상기 리퀘스트 저장 영역으로부터 취득하여, 그 리퀘스트에 따른 처리를 행하는 복수의 요구 처리부를 포함하는 서버 장치, 해당 서버 장치에 의해 리퀘스트를 처리하는 방법, 및, 해당 서버 장치로서 컴퓨터를 기능시키는 프로그램을 제공한다.
또한, 상기한 발명의 개요는, 본 발명의 필요한 특징의 모두를 열거한 것이 아니라, 이러한 특징 그룹의 서브 콤비네이션도 또한 본 발명이 될 수 있다.
이하, 발명의 실시예를 통하여 본 발명을 설명하지만, 이하의 실시예는 특허 청구의 범위에 따른 발명을 한정하는 것이 아니고, 또한 실시예 내에서 설명되어 있는 특징의 조합 모두가 발명의 해결 수단에 필수라고는 할 수 없다.
도 1은 정보 시스템(10)의 전체 구성을 나타낸다. 정보 시스템(10)은 복수의 클라이언트 장치(15)와 서버 장치(20)를 포함한다. 복수의 클라이언트 장치(15)는 통신 네트워크를 거쳐서 서버 장치(20)에 접속되어 있다. 그리고, 복수의 클라이언트 장치(15) 각각은 그 이용자의 지시 등에 따라 서버 장치(20)에 대해 리퀘스트를 송신한다. 서버 장치(20)가 웹 서버인 경우에 있어서, 이 리퀘스트는 예를 들면 HTTP 리퀘스트이다. 그리고, 서버 장치(20)는 이 리퀘스트에 따른 처리를 행하고, 그 처리 결과로서 예를 들면 새롭게운 웹페이지를 생성하여, HTTP 리스폰스에 포함하여 클라이언트 장치(15)에 답신한다.
서버 장치(20)는 컴퓨터에 의해 실현되어 그 하드웨어 구성의 적어도 일부로서 저장 장치(200)와 하나 이상의 CPU(210)와 통신 인터페이스(220)를 갖는다. 저장 장치(200)는 이 컴퓨터를 서버 장치(20)로서 기능시키기 위한 프로그램 및 데이터를 저장하고 있다. 적어도 하나의 CPU(210)는 이러한 프로그램 및 데이터를 판독하여 정보 처리를 행한다. 통신 인터페이스(220)는 프로그램에 근거하여 동작하는 CPU(210)의 지시에 근거하여, 복수의 클라이언트 장치(15)와의 사이에서 통신을 행한다.
본 실시예에 따른 서버 장치(20)는 이러한 CPU(210)의 처리 능력을 유효하게 활용하여, 다수의 리퀘스트를 동시 병행적으로 수신한 경우에도 그들을 효율적으로 처리하는 것을 목적으로 한다.
도 2는 본 실시예에 따른 서버 장치(20)의 제 1 구성예의 개요를 나타낸다. 서버 장치(20)는 저장 장치(200)의 시스템 메모리 공간에 리퀘스트 저장 영역(205A)을 갖고, 저장 장치(200)의 유저 메모리 공간에 식별 정보 저장 영역(205B)을 갖는다. 시스템 메모리 공간은 오퍼레이팅 시스템 또는 각종 디바이스 드라이버에 의해 관리된 메모리 영역이다. 이 시스템 메모리 공간에 액세스하기 위하여는, 많은 경우 오퍼레이팅 시스템 등이 제공하는 소정의 시스템 콜을 호출할 필요가 있다. 시스템 메모리 공간에 저장된 데이터는 하드웨어나 오퍼레이팅 시스템 자체의 동작과 밀접하게 관련되어 있어, 유저 프로그램에 의한 자유로운 액세스를 허락하면 서버 장치(20)의 동작에 지장을 초래하기 때문이다.
리퀘스트 저장 영역(205A)은 클라이언트 장치(15)로부터 수신한 리퀘스트를 그 식별 정보에 대응지어 저장하고 있다. 리퀘스트는, 예를 들면, 클라이언트 장치(15)가 서버 장치(20)에 요구하는 처리의 내용을 나타내는 것이다. 일례로서 이 리퀘스트는 요구하는 처리를 실행하기 위한 서비스 프로그램의 소재 및 거기에 부여되는 파라미터이다. 서비스 프로그램의 소재란, 예를 들면, 경로명, 파일명, 확장자 등을 포함하여, URL(Uniform Resource Locator)이라 불린다. 오퍼레이팅 시스템 및 통신용의 디바이스 드라이버는, 서버 장치(20)가 클라이언트 장치(15)로부터 리퀘스트를 수신하면, 그 리퀘스트를 이 리퀘스트 저장 영역(205A)에 순차 저장한다. 저장하는 리퀘스트의 수는 운영하는 웹 사이트의 규모에 따라서 다르지만, 수만으로부터 수십만에 이르는 경우도 있다.
리퀘스트에 대응하는 식별 정보는, 그 리퀘스트나 거기에 대응하는 리스폰스를 주고받기 위한 접속(커넥션이라고도 불림)을 식별하기 위한 정보이다. 일례로 서 Socket 인터페이스를 이용해 TCP/IP 접속을 행하는 경우에 있어서, 이 식별 정보는 파일 디스크립터라고 불리며, 유저 프로그램이 리퀘스트를 처리하거나 리스폰스를 답신하거나 하는 경우에 이용된다. 도면에서는 이러한 파일 디스크립터를, fd1, fd2, fd3,…, fdN 등의 기호로 나타낸다. 접속이 확립되어 있어도 리퀘스트가 도착하지 않은 경우에는, (예를 들어 클라이언트 장치(15)측의 처리가 완료되어 있지 않은 경우나, 그 전의 리퀘스트를 서버 장치(20)에서 처리하고 있는 경우임), 파일 디스크립터만이 리퀘스트 저장 영역(205A)에 저장되어 있고 거기에 대응하는 리퀘스트는 저장되어 있지 않다.
한편으로, 유저 메모리 공간은 유저 프로그램에 의해 시스템 콜을 호출하지 않고 액세스 가능한 메모리 영역이다. 식별 정보 저장 영역(205B)은 이 유저 메모리 공간에 처리 대기의 리퀘스트의 식별 정보를 저장하기 위하여 마련되어 있다. 식별 정보 저장 영역(205B)은 선입선출(FIFO : First In First Out)의 큐이며, 식별 정보 저장부(215)에 의해 저장된 식별 정보를 말미에 저장하고, 선두로부터 요구 처리부(218-1~n)에 대해 식별 정보를 공급한다. 처리 대기의 리퀘스트는, 예를 들어, 서버 장치(20)가 수신이 완료된 상태이지만 아직 후술하는 요구 처리부(218)에 의하여 처리가 개시되어 있지 않은 리퀘스트이다. 따라서, 파일 디스크립터가 리퀘스트 저장 영역(205A)에 저장되어 있지만 거기에 대응하는 리퀘스트가 저장되어 있지 않은 경우에, 식별 정보 저장 영역(205B)은 그 파일 디스크립터를 저장하지 않는다. 한편, 식별 정보 저장 영역(205B)은 일단 저장했지만 이미 어느 하나의 요구 처리부(218)에 의해 취득되어 처리가 개시된 리퀘스트의 식별 정보는 저장하고 있지 않다.
서버 장치(20)는 적어도 1개의 CPU(210)의 제어에 의하여 동작하는 식별 정보 저장부(215) 및 요구 처리부(218-1~n)를 갖는다. 식별 정보 저장부(215) 및 요구 처리부(218-1~n)의 실현 방법의 개요는 이하와 같다. 오퍼레이팅 시스템은 프로그래머나 유저의 시점에서는 마치 CPU와 같이 동작하는 스레드라고 하는 실행 주체를 복수 동작시키고 있다. 그 실체는 프로그램을 차례차례 실행하기 위한 프로그램 카운터, 프로그램이 처리중인 데이터가 저장되는 저장 장치(200) 내의 위치를 기록하기 위한 스택 포인터, 프로그램이 처리중인 데이터를 저장하기 위한 레지스터, 및, 그 프로그램 전용으로7에 준비된 유저 메모리 공간 내의 저장 영역이다.
그리고, 오퍼레이팅 시스템은 복수의 CPU(210) 각각을 어느 하나의 스레드에 할당하여, 각 스레드에 의해 실제로 프로그램을 실행시킨다. 프로그램이 비교적 저속인 입출력 디바이스의 처리 완료를 기다리는 경우나, 다른 스레드의 소정의 동작의 완료를 기다리는 경우 등에는, 오퍼레이팅 시스템은 그 스레드에 할당하고 있던 CPU를 다른 스레드에 할당함으로써, CPU의 능력을 처리 완료 대기에 낭비하는 것을 피해 CPU를 유효하게 활용한다. 즉, 스레드란, CPU의 수와 동시 병행적으로 동작하는 프로그램의 수가 다른 경우에 CPU를 유효하게 활용하고, 또한, 입출력 완료 대기 시간을 유효하게 활용하기 위하여, CPU의 동작을 가상화한 실행 주체이다.
이와 같이 스레드가 처리 대기로 되어 CPU를 다른 스레드에 할당하는 것을, 스레드의 블로킹(blocking) 또는 스레드의 블로킹 동작이라고 한다. 스레드의 블로킹은, 구체적으로는 예를 들면 그 CPU의 프로그램 카운터, 스택 포인터, 및, 레 지스터의 값을 처리 완료 대기 스레드에 대응하여 미리 정해진 저장 영역에 저장한 후에, 해당 다른 스레드의 프로그램 카운터, 스택 포인터, 및, 레지스터의 값을 그 CPU의 프로그램 카운터, 스택 포인터, 및 레지스터에 저장함으로써 실현된다. 스레드의 블로킹은 오퍼레이팅 시스템에 의해 신속히 처리되지만, 처리에 어느 정도의 시간은 걸리기 때문에, 블로킹의 횟수가 적은 쪽이 처리의 효율이 향상된다.
본 실시예에 따른 식별 정보 저장부(215) 및 요구 처리부(218-1~n)의 각각은, 서로 다른 복수의 스레드의 각각에 의해 실현된다. 즉, 오퍼레이팅 시스템이 각 CPU(210)를 식별 정보 저장부(215) 및 요구 처리부(218-1~n) 중 어느 하나에 할당해 동작시킨다. CPU(210)가 복수이면 이러한 각부는 병렬로 동작한다. 또한, CPU(210)의 수가 식별 정보 저장부(215) 및 요구 처리부(218-1~n)의 총수에 못 미친 경우에, (CPU(210)의 처리 능력을 가능한 한 활용하려고 하면 많은 경우에는 이와 같이 되지만), 소정의 스레드가 너무 빈번히 동작하면, 다른 스레드의 동작을 방해할 수 있다.
다음에, 이와 같이 하여 실현되는 식별 정보 저장부(215) 및 요구 처리부(218-1~n)의 기능에 대해 설명한다. 식별 정보 저장부(215)는 리퀘스트 저장 영역(205A)으로부터 하나 이상의 처리 대기의 리퀘스트를 검색하여, 그 식별 정보를 식별 정보 저장 영역(205B)에 저장한다. 도 2의 예에서는 파일 디스크립터 fd1 및 fd3이 검색되어, 식별 정보 저장 영역(205B)에 저장된다. 바람직하게는, 식별 정보 저장부(215)는 미리 정해진 수를 상한수로 하여 하나 이상의 리퀘스트를 리퀘스트 저장 영역(205A)으로부터 일괄 검색하기 위한 시스템 콜을 발행하고, 그 결과로 서 얻어진 식별 정보를 식별 정보 저장 영역(205B)에 저장한다. 일례로서 이 시스템 콜은 Socket 인터페이스의 pollset 시스템 콜이다. 이에 의해, 리퀘스트를 1개씩 검색하는 것에 비해 처리를 효율화할 수 있다.
요구 처리부(218-1~n)는 서로 병렬로 동작한다. 단, 이와 같이 동작하는 것은, 이미 설명해 온 바와 같이, CPU(210)의 수가 적어도 2개 이상이며 충분히 많은 것이 전제가 된다. 그리고, 요구 처리부(218-1~n)의 각각은 FIFO 큐인 식별 정보 저장 영역(205B)의 선두로부터 식별 정보를 취득하는 것을 시도한다. 1개의 리퀘스트를 복수의 요구 처리부(218)에서 중복으로 처리해 버리는 것을 막기 위해, 이 식별 정보의 취득에는 배타 제어가 필요하다. 단, 이 배타 제어는 유저 메모리 공간의 저장 영역을 대상으로 하기 때문에, 시스템 콜의 발행은 불필요하고, 매우 고속 처리로서 실현된다. 예를 들어, compare_and_swap이라 불리는 명령을 포함한 수개의 명령으로서, CPU에 따라서는 수개의 사이클로부터 수십개의 사이클로 실행 가능한 명령열에 의해 실현되며, 시스템 콜의 발행 등에 비하면 매우 고속으로 처리된다.
배타 제어에 대해 배타권을 획득하고, 더욱이 식별 정보 저장 영역(205B)이 비어 있지 않은(적어도 1개의 식별 정보를 저장하고 있는 것을 말함, 이하 동일) 경우에는 식별 정보의 취득에 성공한다. 또한 취득이란, 대상이 되는 정보를 판독한 다음, 그 정보를 그 후에 판독 불능이 되도록 하는(예를 들면 소거하는) 것을 말하는 것으로서, 이후 「판독」등의 용어와 구별해 이용한다. 식별 정보를 취득할 수 있는 것을 조건으로, 요구 처리부(218-1~n)의 각각은 그 식별 정보에 의해 식별되는 리퀘스트를 리퀘스트 저장 영역(205A)으로부터 취득한다. 리퀘스트의 취득에는, 시스템 메모리 공간에 대한 액세스가 필요하기 때문에, 많은 경우에 시스템 콜의 발행이 필요하다. 단, 식별 정보를 취득할 수 있는 시점에서 그 리퀘스트를 독점적으로 취득할 수 있는 것은 보증되어 있으므로, 이 시스템 콜에 대해 리퀘스트를 취득할 수 없어서 스레드가 블로킹되지는 않는다.
그리고, 요구 처리부(218-1~n)의 각각은 취득한 그 리퀘스트에 따른 처리를 행한다. 예를 들면, 요구 처리부(218-1~n)는, 리퀘스트에 따른 처리를 행하는 것으로서, 미리 작성된 Java 프로그램에 의해 실현되어, 그 Java 프로그램을 Java 가상 머신에 의해 실행시킴으로써, 리퀘스트에 따른 처리를 행한다. 필요에 따라서, 요구 처리부(218-1~n)의 각각은, 처리 결과를 예를 들면 새롭게운 웹페이지에 포함해 HTTP 리스폰스로서 클라이언트 장치(15)에 답신한다. 답신의 처리도 TCP/IP에 준거한 통신이기 때문에 파일 디스크립터가 이용된다.
이상, 도 2를 참조해 설명한 제 1 구성예에 있어서는, 처리 대기의 리퀘스트를 식별하는 식별 정보를 유저 메모리 공간에 저장하고, 그것을 1개의 스레드만이 수시 갱신함으로써, 요구 처리부(218-1~n)를 실현하는 다수의 스레드가 시스템 메모리 공간으로의 액세스에 대해 경합하는 것을 방지한다. 이 결과, 스레드가 블로킹될 가능성을 저감하고, 또한, 시스템 콜의 발행 횟수나 빈도를 저감하여, 본래 처리에 소비되는 CPU(210)의 이용률을 향상시킬 수 있다.
그렇지만, 식별 정보 저장부(215)가 너무 빈번히 동작하면, CPU(210)를 그 동작을 위하여 소비한 나머지, 리퀘스트에 따른 본래의 처리를 행하는 요구 처리부(218)의 동작을 저해할 우려가 있다. 한편, 식별 정보 저장부(215)의 동작 빈도가 너무 낮으면, 리퀘스트 저장 영역(205A)에 처리 대기의 리퀘스트가 있음에도 불구하고 식별 정보 저장 영역(205B)에 그 식별 정보가 저장되지 않아, 요구 처리부(218)의 아이들 시간을 증가시키거나, 혹은, 요구 처리부(218)를 실현하는 스레드(워커 스레드(worker thread)라고 부름)를 빈번히 블로킹시킬 우려가 있다. 이에 대해, 이하에 설명하는 제 2 구성예에 의하면, 식별 정보 저장부(215)를 상황에 따라 적당한 빈도로 실행시킴으로써, 식별 정보 저장부(215)에 의해 본래 처리를 저해하지 않게 하면서도 식별 정보 저장 영역(205B)을 비우지 않도록 하고, 더욱이 빈도 조정의 처리도 또한 리퀘스트에 따른 본래의 처리를 가능한 한 저해하지 않게 할 수 있다.
도 3은 본 실시예에 따른 서버 장치(20)의 제 2 구성예의 개요를 나타낸다. 서버 장치(20)가, 리퀘스트 저장 영역(205A)과, 식별 정보 저장 영역(205B)과, 식별 정보 저장부(215)와, 요구 처리부(218-1~n)를 갖는 것, 및 그 처리 기능 및 실현 방법에 대하여는 도 2에 말한 것과 마찬가지이기 때문에, 이하 일부의 차이점을 제외하고 설명을 생략한다. 한편, 제 2 구성예에서의 서버 장치(20)는 제 1 구성예에서의 서버 장치(20)에 더해지고, 더욱이 서버 장치(20)의 유저 메모리 공간에 상태 저장 영역(205C)을 갖는다.
상태 저장 영역(205C)은 식별 정보 저장 영역(205B) 상태를 저장하기 위하여 마련되어 있다. 그리고, 그 상태는 식별 정보 저장부(215)가 식별 정보 저장 영역(205B)에 저장한 식별 정보의 수 및 요구 처리부(218-1~n)가 식별 정보 저장 영역(205B)으로부터 취득한 식별 정보의 수 중 적어도 한쪽에 근거한다. 적어도 요구 처리부(218)(예를 들면 여기에서는 요구 처리부(218-n)라 함, 모든 요구 처리부(218)의 각각으로서도 좋음)는, 상술한 처리에 의하여 식별 정보 저장 영역(205B)으로부터 식별 정보를 취득한 것에 따라, 취득한 식별 정보의 수에 근거하여 상태 저장 영역(205C)에 저장된 상태를 갱신함과 동시에, 식별 정보 저장부(215)에 대해 동작의 개시를 지시할지 여부를 판단한다.
구체적으로는, 우선, 요구 처리부(218-n)는 식별 정보 저장 영역(205B)으로부터 식별 정보를 취득한 결과, 식별 정보 저장 영역(205B)에 저장되어 있는 식별 정보의 수가, 미리 정해진 기준수 이하로 감소했는지 여부를 판단한다. 이 판단은, 식별 정보 저장 영역(205B)을 스캔하여 식별 정보의 수를 카운트하는 것에 의하여 실현되어도 괜찮지만, 상태 저장 영역(205C)에 액세스하여 식별 정보 저장 영역(205B) 내의 식별 정보를 카운트하고 있는 카운터를 참조함으로써, 신속한 처리로서 실현된다. 그리고, 요구 처리부(218-n)는, 식별 정보의 수가 기준수 이하로 감소한 경우에, 식별 정보 저장부(215)에 동작의 개시를 지시한다. 또한, 이 처리와 함께, 상술한 요구 처리부(218)와 마찬가지로 요구 처리부(218-n)는 취득한 식별 정보에 의해 식별되는 리퀘스트를 취득하여, 거기에 따른 처리를 행한다.
식별 정보 저장부(215)는, 어느 하나의 요구 처리부(218)(예를 들면, 요구 처리부(218-n))로부터 지시를 받아 동작을 개시한다. 즉 동작을 개시할 경우에는, 식별 정보의 수에 대한 소정의 조건, 예를 들면, 식별 정보 저장 영역(205B)에 저장되어 있는 식별 정보의 수가 기준수 이하로 감소했다고 하는 조건이 충족되어 있다. 그리고, 식별 정보 저장부(215)는, 리퀘스트 저장 영역(205A)으로부터 하나 이상의 처리 대기의 리퀘스트를 검색하고, 그러한 식별 정보를 FIFO 큐인 식별 정보 저장 영역(205B)의 말미에 순차 저장한다. 그리고, 식별 정보 저장부(215)는 식별 정보를 식별 정보 저장 영역(205B)에 새롭게 저장한 것에 따라 새롭게 저장한 식별 정보의 수에 근거하여 식별 정보 저장 영역(205B)에 저장된 상태를 갱신한다.
이상, 도 3을 참조해 설명한 제 2 구성예에 의하면, 식별 정보 저장 영역(205B)의 식별 정보가 기준수 이하로 감소하여 비는 것과 같은 경우에, 또한, 비기 전에, 식별 정보 저장부(215)를 동작시켜, 식별 정보 저장 영역(205B)을 식별 정보로 채울 수 있으므로, 요구 처리부(218-1~n)를 실현하는 워커 스레드의 아이들 시간, 혹은 워커 스레드의 블로킹 횟수를 저감할 수 있다. 또한, 그처럼 식별 정보 저장부(215)의 동작 개시를 식별 정보 저장 영역(205B) 상태에 근거하여 결정함으로써, 요구 처리부(218-1~n)가 모두 처리 계속중인 경우에는 식별 정보 저장부(215)는 일절 동작하지 않고, 서버 장치(20) 전체로서 본래 처리의 성능을 향상할 수 있다. 또한, 식별 정보 저장부(215)의 동작을 개시시켜야할 것인지 여부는 요구 처리부(218)가 새롭게운 리퀘스트의 처리를 개시하려고 하는 경우에만, 그 개시를 하기 위한 처리 과정에서 판단하므로, 식별 정보 저장부(215)의 동작 빈도의 조정에 필요한 CPU(210) 자원도 최소한으로 할 수 있다. 또한, 기준수의 결정 방법에 따라서는 처리의 효율을 한층 높일 수도 있다. 이하, 도 4 이후를 참조해 기준수의 결정 방법 및 거기에 적합한 상태 저장 영역(205C)의 갱신 방법에 대해 설명한다.
도 4는 본 실시예에 따른 식별 정보 저장부(215)의 동작을 나타내는 플로우차트이다. 서버 장치(20)가 기동하거나 또는 서버 장치(20)가 리셋되면, 서버 장치(20)는 식별 정보 저장부(215)를 실현하기 위한 스레드를 생성한다(S400). 식별 정보 저장부(215)는, 이와 같이 스레드가 생성된 경우나, 후에 S450으로서 설명하는 바와 같이 동작의 개시를 지시받았을 경우에 동작을 개시하여, 리퀘스트 저장 영역(205A)에서 하나 이상의 처리 대기의 리퀘스트를 검색한다(S410). 이것은, 상술한 폴셋(pollset) 시스템 콜의 인수(引數 ; argument)에, 검색하는 리퀘스트의 상한수(엄밀하게는 리퀘스트를 구체화한 데이터의 패킷 사이즈)를 인수로서 부여하여 발행하는 것에 의해 실현된다. 또한, 식별 정보 저장부(215)가 자바(Java) 프로그램에 의해 실현되어 있는 경우에는, 이 시스템 콜의 발행시에 JNI(Java Native Interface)가 이용된다. 또한, 많은 경우에 리퀘스트 저장 영역(205A)의 전부 또는 일부에 대한 배타 액세스권의 획득이 필요하다. 이에 의해, 동작의 개시를 나타내는 한 번의 지시에 대하여, 혹은, 첫회의 스레드 생성 1회에 대하여, 이 상한수를 상한으로 하는 복수의 식별 정보가 일괄(collectively) 검색된다.
그리고, 식별 정보 저장부(215)는, 검색된 리퀘스트의 식별 정보를 FIFO 큐인 식별 정보 저장 영역(205B)의 말미에 순차 저장한다(S420). 이 저장에도 식별 정보 저장 영역(205B)에 대한 배타 액세스권의 획득이 필요하지만, 요구 처리부(218)는 식별 정보 저장 영역(205B)의 선두를 액세스하는 데 대해 식별 정보 저장부(215)는 그 말미를 액세스하므로, 많은 경우 배타 액세스권의 획득은 성공한다. 또한, 배타 액세스권은 유저 메모리 공간에 대한 것이기 때문에, 그 처리도 매우 신속하게 완료된다. 그리고, 식별 정보 저장부(215)는 식별 정보를 식별 정보 저장 영역(205B)에 새롭게 저장한 것에 따라 새롭게 저장한 식별 정보의 수에 근거하여 상태 저장 영역(205C)에 저장된 상태를 갱신한다(S430).
다음에, 식별 정보 저장부(215)는 리퀘스트의 수신 대기 상태에 있던 다른 스레드를 기동시킨다(S440). 예를 들면, 본 실시예의 제어에도 불구하고 식별 정보 저장 영역(205B)이 비어 다른 워커 스레드가 블로킹되어 있는 경우도 있을 수 있다(예를 들면 후술의 S510). 이 때문에, 식별 정보 저장부(215)는 블로킹되어 있는 그러한 워커 스레드의 검출을 시도하고, 검출된 경우에는 그 워커 스레드를 기동시킨다. 기동된 워커 스레드는 후에 도 5를 참조해 설명하는 바와 같이, 리퀘스트의 취득을 시도한 후에 거기에 따른 처리를 행한다.
다음에, 식별 정보 저장부(215)는, 검색된 식별 정보의 수가 미리 정해진 상기의 상한수와 동일한지 어떤지를 판단한다(S445). 이 상한수는, 서버 장치(20)와 클라이언트 장치(15) 사이의 접속수에 비해 매우 작고, 예를 들면 수십 정도로서 좋다. 이것은, 리퀘스트의 검색에 필요로 하는 시스템 콜의 오버헤드, 예를 들면, 식별 정보 저장 영역(205B)의 저장 용량, 초기화나 직렬화에 필요로 하는 시간 등의 제약 때문이다. 상한수와 식별 정보의 수가 동일하다고 하는 것은, 처리 대기이면서 미검색의 리퀘스트가 존재할 수 있다는 것이다. 이 때문에, 식별 정보 저장부(215)는, 식별 정보의 수가 상한수와 동일한 것을 조건으로(S445 : 예), S410으로 처리를 복귀하여 즉시 리퀘스트를 검색시킨다.
한편, 검색된 식별 정보의 수가 상한수 미만이면(S445 : 아니오), 식별 정보 저장부(215)는, 동작을 개시하는 지시를 워커 스레드, 즉 여기에서는 요구 처리부(218-1~n)의 어느 하나로부터 받을 때까지 대기한다(S450). 이 지시는 후의 S550으로서 설명하는 처리에 의하여 발행되는 것이다. 또한, 바람직하게는, 식별 정보 저장부(215)는, 대기 개시 전에, 혹은 그와 동시에, 식별 정보 저장부(215)를 실현하는 스레드에 할당된 CPU(210)의 제어를, 다른 스레드에 할당하기 위하여 오퍼레이팅 시스템에 반환하는 처리를 행한다. 이 처리의 상세한 것에 대하여는, 현재의 오퍼레이팅 시스템의 기능으로서 알려진 것이기 때문에 설명을 생략한다.
도 5는 본 실시예에 따른 요구 처리부(218-1)의 동작을 나타내는 플로우차트이다. 요구 처리부(218-2~n)의 각각 대해도 요구 처리부(218-1)와 대략 동일하게 동작한다. 여기에서는 그것들을 대표해 요구 처리부(218-1)에 대해 그 동작을 설명한다. 요구 처리부(218-1)는 스레드 풀(thread pool)로부터 선택된 스레드를 할당되면 동작을 개시한다. 스레드 풀이란 서버 장치(20)의 기동시 또는 리셋시에 미리 생성된 스레드의 집합이다. 오퍼레이팅 시스템 또는 미들웨어는, 이러한 스레드 풀을 미리 생성해 두고, 그것의 일부를 적당하게 요구 처리부(218)을 실현하기 위한 프로그램을 실행하기 위하여 할당해도 괜찮다. 또한, 이 대신에 요구 처리부(218-1)는 서버 장치(20)의 기동시 또는 리셋시에 즉시 동작을 개시하고, 그 후에도 계속 동작해도 좋다. 즉, 도 5를 참조해 설명하는 동작은, 요구 처리부(218-1)를 실현하는 워커 스레드가 어떻게 기동되는 지에 관계없이, 요구 처리부(218-1)를 실현하는 워커 스레드에 의한 요구 처리부(218-1)로서의 동작을 나타내고 있다.
요구 처리부(218-1)는, 동작을 개시하면, 우선, 리퀘스트 저장 영역(205A)에 대한 액세스의 배타권을 획득하는 것이 아니라, 상술한 처리에 의하여 식별 정보 저장 영역(205B)으로부터 식별 정보의 취득을 시도한다(S510). 식별 정보 저장 영역(205B)은 유저 메모리 공간에 마련되어 있으므로 시스템 콜의 발행은 불필요하다. 단, 식별 정보 저장 영역(205B)의 액세스에는 배타 액세스권의 취득이 필요한 경우가 있다. 이 취득의 처리는 상술한 바와 같이 매우 신속하게 완료된다. 여기서, 식별 정보의 취득에 실패했을 경우(실패했다라고 하는 것은, 단 한번만 식별 정보의 취득을 시행해 취득하지 못한 경우라도 좋고, 미리 정해진 횟수의 시행이 연속하여 실패한 경우라도 괜찮음), 요구 처리부(218-1)는 처리 대기의 리퀘스트가 새롭게 수신될 때까지 대기한다. 이 대기는 도 4의 S440에 의하여 해제된다.
다음에, 요구 처리부(218-1)는, 취득한 식별 정보의 수에 근거하여 상태 저장 영역(205C)에 저장된 상태를 갱신한다(S520). 요구 처리부(218-1)가 스스로 처리하는 리퀘스트를 취득하는 경우에 있어서, 취득하는 식별 정보의 수는 1개이다. 다음에, 요구 처리부(218-1)는, 식별 정보 저장부(215)에 대해 동작의 개시를 지시할지 여부를 판단한다(S530). 조건이 성립된 경우에(S540 : 예), 요구 처리부(218-1)는 식별 정보 저장부(215)에 동작의 개시를 지시한다(S550). 이 지시는 상술한 S450의 수신 대기에 대한 것이다. 식별 정보를 취득할 수 있었으므로, 다음에, 요구 처리부(218-1)는 취득한 그 식별 정보에 의해 식별되는 리퀘스트를 리퀘스트 저장 영역(205A)으로부터 취득한다(S560). 리퀘스트의 취득을 위하여, 요구 처리부(218-1)는 취득한 그 식별 정보에 의해 식별되는 리퀘스트를 저장하는 리퀘스트 저장 영역(205A) 내의 영역의 배타권을 획득한다.
리퀘스트의 취득에는, 시스템 메모리 공간에 대한 액세스가 필요하므로, 많은 경우에 시스템 콜의 발행이 필요하다. 단, 식별 정보를 취득할 수 있는 시점에서 그 리퀘스트를 독점적으로 취득할 수 있는 것은 보증되어 있으므로, 이 시스템 콜에 대해 리퀘스트를 취득할 수 없어서 워커 스레드가 블로킹되지는 않는다. 이 때문에, 요구 처리부(218-1)는, 예를 들면, 스레드를 블로킹시키는 기능을 생략해 고속으로 동작 가능한 전용의 시스템 콜을 발행해도 괜찮다. 스레드를 블로킹시키는 기능이란, 예를 들어, 취득하려고 하는 리퀘스트가 이미 처리 대기 상태가 되어 있는지 여부를 체크해 처리 대기 상태가 아니면 스레드를 블로킹시키는 기능, 또는, 취득하려고 하는 리퀘스트를 저장하는 저장 영역으로의 배타권을 획득해 획득할 수 없으면 스레드를 블로킹시키는 기능을 말한다. 그리고, 요구 처리부(218-1)는 취득한 그 리퀘스트에 따른 처리를 행한다(S570). 처리 완료 후에는, 요구 처리부(218-1)는 즉시 S510으로 처리를 복귀하여 다른 식별 정보의 취득을 시도한다.
도 6은, S430, S520, 및 S530에서의 동작의 상세를 나타낸다. S430에서 구체적으로는, 식별 정보 저장부(215)가 새롭게 식별 정보 저장 영역(205B)에 저장한 식별 정보의 수를 상태 저장 영역(205C)에 저장한다(S600). 또한, S520에서 구체적으로는, 요구 처리부(218-1)가 S600에서 저장된 그 식별 정보의 수로부터 1을 감소시킨다. 또한, S530에서 구체적으로는, 요구 처리부(218-1)는 상태 저장 영역(205C)에 저장된 식별 정보의 수가 0인지 어떤지를 판단한다(S620). 이에 의해, 전회에 식별 정보 저장부(215)에 의해 식별 정보가 식별 정보 저장 영역(205B)에 저장되고 나서, 식별 정보 저장 영역(205B)으로부터 취득한 식별 정보의 총수가, 전회에 식별 정보 저장 영역(205B)에 저장된 식별 정보의 수에 도달했는지가 판단된다.
식별 정보의 수가 0이면(S620 : 예), 요구 처리부(218-1)는 조건 성립이라고 판단해(S630), 상태 저장 영역(205C)에 저장한 식별 정보의 수를 초기치로 리셋한다(S650). 즉, 이 경우의 상기 미리 정해진 기준수란, 식별 정보 저장부(215)가 전회에 식별 정보를 식별 정보 저장 영역(205B)에 저장한 경우에 있어서의, 그 저장의 직전에서의 식별 정보 저장 영역(205B) 내의 식별 정보의 수가 된다. 한편, 식별 정보의 수가 0이 아니면(S620 : 아니오), 요구 처리부(218-1)는 조건 불성립이라고 판단한다(S640).
이상, 도 6의 예에 의하면, 전회에 저장한 수의 식별 정보가 이미 취득된 경우에 식별 정보 저장부(215)를 동작시킴으로써, 리퀘스트에 의존한 처리량의 편향에 관계없이 식별 정보 저장 영역(205B) 내의 식별 정보의 수를 안정적으로 추이시켜, 식별 정보 저장 영역(205B)이 비는 것을 막을 수 있다.
식별 정보 저장부(215)가 동작하는 타이밍은 다른 기준에 의하여 결정되어도 괜찮다. 다른 기준을 이용하는 경우에 대해 변형예로서 이후 차례차례 설명해 간다.
도 7은 본 실시예의 제 1 변형예에 대하여, S430, S520, 및 S530에서의 동작의 상세를 나타낸다. S430에서 구체적으로는, 식별 정보 저장부(215)가 새롭게 식별 정보 저장 영역(205B)에 식별 정보를 저장한 것에 따라, 리퀘스트를 검색하기 위하여 지정한 그 리퀘스트의 상한수를 상태 저장 영역(205C)에 저장한다(S700). 또한, S520에서 구체적으로는, 요구 처리부(218-1)가 S600에서 저장된 그 식별 정보의 상한수로부터 1을 감소시킨다. 또한, S530에서 구체적으로는, 요구 처리부(218-1)가 상태 저장 영역(205C)에 저장된 식별 정보의 수가 0인지 어떤지를 판단한다(S720). 이에 의해, 전회에 식별 정보 저장부(215)에 의해 식별 정보가 식별 정보 저장 영역(205B)에 저장되고 나서, 식별 정보 저장 영역(205B)으로부터 취득한 식별 정보의 총수가 상기의 상한수에 도달했는지가 판단된다.
식별 정보의 수가 0이면(S720 : 예), 요구 처리부(218-1)는 조건 성립이라고 판단해(S730), 상태 저장 영역(205C)에 저장한 식별 정보의 수를 초기치로 리셋한다(S750). 한편, 식별 정보의 수가 0이 아니면(S720 : 아니오), 요구 처리부(218-1)는 조건 불성립이라고 판단한다(S740).
이상, 이 제 1 변형예에 의하면, 새롭게 저장한 식별 정보의 수라고 하는 변수가 아니라, 상한수라고 하는 정수를 S700에서 저장하면 좋기 때문에, S430에서의 갱신의 처리를 간소하게 할 수 있다. 또한, 저장하는 수치가 정수이면, 정수라고 하는 성질을 이용한 한층 더 효율화, 예를 들면 S750의 수치의 리셋시에 S700에서 정수가 저장될 예정인 것을 예측해 그 정수를 미리 저장하는 것과 동시에 S700을 생략하는 등의 효율화가 가능하다라고 하는 것이, 당업자에게 있어서 분명하다.
도 8은 본 실시예의 제 2 변형예에 대하여 요구 처리부(218-1)의 동작을 나타내는 플로우차트이다. 본 제 2 변형예에 있어서 식별 정보 저장부(215)의 동작에 대하여는 도 4를 참조해 설명한 바와 같다. 또한, 도 8의 S510 및 S520에 대하여는 도 5를 참조해 설명한 S510 및 S520과 같다. 즉, 요구 처리부(218-1)는 식별 정보 저장 영역(205B)으로부터 식별 정보의 취득을 시도한다(S510). 식별 정보의 취득에 실패한 경우, 요구 처리부(218-1)는 처리 대기의 리퀘스트가 새롭게 수신될 때까지 대기한다. 다음에, 요구 처리부(218-1)는 취득한 식별 정보의 수에 근거하여 상태 저장 영역(205C)에 저장된 상태를 갱신한다(S520). 단, 본 제 2 변형예에 있어서, 요구 처리부(218-1)는 상태 저장 영역(205C)에 저장된 상태를 단순히 갱신하는 것이 아니라, 갱신의 시각을 갱신 후 상태에 대응지어 저장한다. 또한, 요구 처리부(218-1)는, 갱신시에는, 갱신전 상태 및 전회의 갱신 시각을 이력으로서 상태 저장 영역(205C)에 저장해 둔다.
그리고, 요구 처리부(218-1)는, 상태 저장 영역(205C)에 저장한 상태 및 이력에 근거하여, 단위 시간당 식별 정보가 식별 정보 저장 영역(205B)로부터 취득되는 수의 속도를 산출한다(S580). 속도 산출의 구체적인 예를 도 9에 나타낸다. 요구 처리부(218-1)는, 어떤 시점 1에서의 식별 정보의 수의 이력과 다른 시점 2에서의 식별 정보의 수의 이력에 근거하여, 이 동안의 시간에서의 식별 정보가 취득되는 수의 속도를 산출한다. 일례로서는 2 시점 사이의 식별 정보의 수의 차분을, 2시점 전환의 경과 시간으로 나누는 것에 의하여 실현된다. 산출하는 속도는, 이 2 시점 사이에서의 식별 정보의 수의 변화를 나타내는 직선의 기울기Δ로 나타내진다. 속도 산출에 이용하는 다른 2 시점의 세트에 대하여는, 임의의 방법에 의해 선택된 것으로 좋다. 예를 들면, 요구 처리부(218-1)는 바로 옆의 2 시점의 이력에 근거하여 속도를 산출해도 괜찮다. 속도의 산출 처리 자체도, 요구 처리부(218-1)가 식별 정보를 취득했을 때마다가 아니어도 좋고, 미리 정해진 횟수마다 산출해도 좋다.
도 8로 돌아간다. 다음에, 요구 처리부(218-1)는, 이 산출한 속도에 근거하여, 식별 정보 저장 영역(205B)에 저장되어 있는 식별 정보의 수가 기준수 이하로 감소하는 것이 예측되는 시각(이후, 단지 예측 시각이라고 한다)을 산출한다(S590). 이 예측 시각의 산출예를 도 9에 나타낸다. 요구 처리부(218-1)는, 상술의 속도Δ를 기울기로 하여, 이 예측 시각의 산출 시점에 대한 식별 정보 저장 영역(205B)에 저장된 식별 정보의 수를 나타내는 좌표를 통과하는 일차 함수를 생성한다. 그리고, 요구 처리부(218-1)는, 이 1차 함수가 식별 정보의 수가 기준수인 것을 나타내는 정수 함수와 교차하는 점을 구해, 그 점의 시간축 상의 좌표치를 예측 시각 1로서 산출한다.
요구 처리부(218-1)는, 이 예측 시각 1의 시점에서 식별 정보 저장부(215)의 동작을 개시시켜도 좋지만, 식별 정보 저장부(215)가 동작을 개시하고 나서 실제로 식별 정보가 새롭게 식별 정보 저장 영역(205B)에 저장될 때까지의 시간을 고려하여, 그보다 빨리 식별 정보 저장부(215)의 동작을 개시시켜도 괜찮다. 예를 들면, 요구 처리부(218-1)는 식별 정보 저장부(215)가 동작을 개시하고 나서 실제로 식별 정보가 새롭게 식별 정보 저장 영역(205B)에 저장될 때까지 필요로 하는 미리 정해진 소요 시간을, 예측 시각 1로부터 줄여, 예측 시각 2를 산출해도 좋다. 이 소요 시간은, 이와 같이 미리 정해진 것이어도 괜찮지만, 식별 정보 저장부(215)가 식별 정보 저장 영역(205B)에 식별 정보를 저장하는 수의 변화를 관측한 다음 그 속도를 산출하는 것에 의하여 구해져도 좋다.
도 8로 돌아간다. 다음에, 요구 처리부(218-1)는 상기와 같이 산출한 예측 시각(예측 시각 2가 바람직하지만 예측 시각 1이라도 좋음)에 식별 정보 저장부(215)의 동작을 개시시키는 설정을 행한다(S590). 이것은, 미리 정해 설정한 시각에 동작을 개시하는 알람 스레드를 생성하는 것에 의하여 실현되어도 좋다. 이 알람 스레드는 동작을 개시하면 즉시 식별 정보 저장부(215)에 동작의 개시를 지시하여 처리를 종료한다. 이에 의해, 식별 정보 저장부(215)를 예측 시각에 동작시킬 수 있다. 또한, 이미 알람 스레드가 생성되어 있을 때는, 중복하여 식별 정보 저장부(215)에 동작의 개시를 지시하는 것을 막기 위해, 요구 처리부(218-1)는 본 명세서에서 설명한 속도 계산의 처리 자체를 행하지 않아 좋다. 또한, 이어서 행해지는 S560 및 S570의 처리에 대하여는 도 5를 참조해 설명한 대로이기 때문에 설명을 생략한다.
이상, 이 제 2 변형예에 의하면, 식별 정보가 기준수 이하로 감소하는 속도를 일단 예측하면, 그 후에 식별 정보 저장부(215)의 동작 개시를 지시할지 여부를 판단하는 처리를 생략할 수 있어, 요구 처리부(218-1~n)의 처리 효율을 향상시킬 수 있다. 또한, 예측은 실제로 관측된 식별 정보의 수에 근거하여 행해지므로, 서버 장치(20)의 운용 상황에 따라 식별 정보 저장부(215)의 동작 빈도를 유연하게 조정할 수 있다.
도 10은 본 실시예의 제 3 변형예에 대하여, 식별 정보 저장부(215)의 동작을 나타내는 플로우차트이다. 본 제 3 변형예에 대하여, 요구 처리부(218-1)의 동작에 대하여는 도 5나 그 변형예에 대해 설명한 것과 마찬가지이므로 설명을 생략한다. 또한, 식별 정보 저장부(215)의 동작에 대하여도, 도 4를 참조해 설명한 S400으로부터 S445까지의 동작에 대하여는 마찬가지이다. 즉, 식별 정보 저장부(215)는 수신완료된 리퀘스트를 리퀘스트 저장 영역(205A)으로부터 검색하여, 그 식별 정보를 식별 정보 저장 영역(205B)에 저장함과 동시에, 상태 저장 영역(205C)의 상태를 갱신한다. 그리고, 식별 정보 저장부(215)는, 검색된 리퀘스트의 수가 검색하는 리퀘스트의 상한수와 동일한가 판단한다(S445).
이후의 처리는 도 5를 참조해 설명한 처리와는 상이하다. 검색된 식별 정보의 수가 상한수 미만이면(S445 : 아니오), 식별 정보 저장부(215)는 동작을 개시하는 지시를 다른 워커 스레드, 즉 여기에서는 요구 처리부(218-1~n)의 어느 하나로부터 받았는지 판단한다(S460). 동작을 개시하는 지시를 받은 경우에(S460 : 예), 식별 정보 저장부(215)는 S410으로 처리를 되돌려, 다음의 리퀘스트를 검색한다. 받지 않은 경우에(S460 : 아니오), 식별 정보 저장부(215)는 전회에 동작을 개시하고 나서 미리 정해진 기간이 경과했는지를 판단한다(S470). 경과했으면(S470 : 예), 식별 정보 저장부(215)는 동작을 개시하여 미리 정해진 조건이 성립했는지를 판단한다(S480). 이 기간이 경과했는지의 판단은, 오퍼레이팅 시스템 등에 의해 미리 제공된 타이머 기능에 의해 실현되는 것이 바람직하다. 조건이 성립된 경우에는 S410으로 처리를 되돌려(S490), 다음의 리퀘스트를 검색한다.
S480으로서 나타내는 이 조건 판단은, 상기의 S530으로서 설명한 요구 처리부(218-1)에 의한 판단과 같다. 즉, 본 제 3 변형예에서는, 요구 처리부(218-1) 뿐만 아니라 식별 정보 저장부(215)도 이 조건 판단을 행한다. 즉 예를 들면, 구체적으로는, 식별 정보 저장부(215)가 미리 정해진 기간이 경과할 때마다 동작을 개시하고, 식별 정보 저장 영역(205B)에 저장되어 있는 식별 정보의 수가 기준수 이하로 감소했는지를 판단해, 감소한 것을 조건으로, 리퀘스트 저장 영역(205A)에서 하나 이상의 처리 대기의 리퀘스트를 검색한다. 이와 같이 함으로써, 판단의 빈도를 높일 수 있어, 식별 정보 저장 영역(205B)을 식별 정보로 채우기 쉽게 할 수 있다.
또한, 이 대신에 본 제 3 변형예에 있어서는, 요구 처리부(218-1)가 조건 판단을 행하지 않고, 식별 정보 저장부(215)만이 도 10에 나타내는 판단을 행해도 괜찮다. 이것에 의해, 식별 정보 저장부(215-1~n)는 리퀘스트에 따른 본래 처리에 소비하는 시간을 증가시킬 수 있어 효율적이다.
도 11은 본 실시예의 제 4 변형예에 대하여, 식별 정보 저장부(215)의 동작을 나타내는 플로우차트이다. 본 제 4 변형예에 있어서, 요구 처리부(218-1)의 동작에 대하여는 도 5나 그 변형예에서 설명한 것과 마찬가지이므로 설명을 생략한다. 또한, 식별 정보 저장부(215)의 동작에 대하여도, 도 4를 참조해 설명한 S400로부터 S445까지의 동작에 대하여는 같다. 즉, 식별 정보 저장부(215)는, 수신이 완료된 리퀘스트를 리퀘스트 저장 영역(205A)으로부터 검색하여 그 식별 정보를 식별 정보 저장 영역(205B)에 저장함과 동시에, 상태 저장 영역(205C)의 상태를 갱신한다. 그리고, 식별 정보 저장부(215)는 검색된 리퀘스트의 수가 검색하는 리퀘스트의 상한수와 동일한가 판단한다(S445).
이후의 처리는 도 5를 참조해 설명한 처리와는 상이하다. 검색된 식별 정보의 수가 상한수 미만이면(S445 : 아니오), 식별 정보 저장부(215)는 상한수에 대한 동작 1회마다 검색되는 식별 정보의 수의 비율인 정보 충전율을 산출한다(S1000). 정보 충전율은 2개 이상의 소정 횟수의 동작에 있어서 검색된 식별 정보의 수의 평균에 근거하여 산출되어도 괜찮다. 즉 예를 들면, 식별 정보 저장부(215)는, S430에서의 상태 정보의 갱신에 있어서, 바로 옆으로부터 세어 미리 정해진 횟수의 검색 동작에서 검색된 식별 정보의 수의 이력을 상태 저장 영역(205C)에 저장한다. 그리고, S1000에서의 정보 충전율의 산출 처리에서, 식별 정보 저장부(215)는, 그들 식별 정보의 수의 이력에 근거하여, 한 번의 동작으로 검색된 식별 정보의 수의 평균을 산출하고, 상기 상한수로 나누는 것에 의해, 정보 충전율을 산출한다.
그리고 다음에, 식별 정보 저장부(215)는, 이 정보 충전율에 근거하여, 식별 정보 저장부(215)가 동작하는 시간 간격을 산출해 설정한다(S1010). 예를 들면, 식별 정보 저장부(215)는, 이 정보 충전율이 보다 높은 것을 조건으로, 이 정보 충전율이 보다 낮은 경우에 비해 이 시간 간격을 보다 짧게 설정한다. 정보 충전율이 높은 경우에는 처리 대기의 리퀘스트가 리퀘스트 저장 영역(205A)에 아직 남아 있을 가능성이 높고, 곧바로 다음의 검색 동작을 개시해도 많은 식별 정보를 검색할 수 있을 가능성이 높기 때문이다.
그리고 다음에, 식별 정보 저장부(215)는 설정한 이 시간 간격이 경과했는지 여부를 판단한다(S1020). 경과했으면(S1020 : 예), 식별 정보 저장부(215)는 S400으로 처리를 되돌려 다음 검색으로 처리를 옮긴다. 경과하지 않았으면(S1020 : 아 니오), 식별 정보 저장부(215)는, 동작을 개시하는 지시를 다른 워커 스레드, 즉 여기에서는 요구 처리부(218-1~n)의 어느 하나로부터 받았는지 판단한다(S1030). 동작을 개시하는 지시를 받은 경우에(S1030 : 예), 식별 정보 저장부(215)는 S410으로 처리를 되돌려 다음 리퀘스트를 검색한다. 받지 않은 경우에는(S1030 : 아니오), 식별 정보 저장부(215)는 S1020으로 처리를 되돌려 설정 시간이 경과했는지를 판단한다.
이상, 이 제 4 변형예에 의하면, 식별 정보 저장부(215)는 정보 충전율에 근거하여 리퀘스트 저장 영역(205A)의 현재 상태나 가까운 장래 상태를 예측하고, 한 번의 동작당 검색할 수 있는 식별 정보의 수가 많다고 예측되는 경우에는 빈번하게 동작한다. 이에 의해, 식별 정보 저장 영역(205B)뿐만 아니라 리퀘스트 저장 영역(205A)의 상태에 근거하여 리퀘스트 검색의 빈도를 조정하여, 식별 정보 저장부의 동작을 효율화할 수 있다. 이 제 4 변형 예의 추가 변형으로서 웹 사이트의 운용 상황에 따라 동작 빈도를 더욱 세세하게 변경하면, 식별 정보 저장부(215)의 동작 빈도를 조정해 한층 더 성능 향상을 실현할 수 있다. 예를 들면, 서버 장치(20)를 동시에 수신할 수 있는 리퀘스트의 총수나 서버 장치(20)를 실현하는 시스템 소프트웨어의 종류에 따라, 식별 정보 저장부(215)가 발행하는 시스템 콜의 1회당 소요 시간, 즉, 리퀘스트 저장 영역(205A)으로부터 리퀘스트의 식별 정보를 검색하기 위한 소요 시간은 다른 경우가 있다.
만약 시스템 콜의 소요 시간이 매우 짧다면, 정보 충전율이 비록 낮아도 높은 빈도로 시스템 콜을 호출하는 것에 의한 성능 저하는 작다. 한편, 시스템 콜의 소요 시간이 긴 경우에는, 정보 충전율이 높은 경우에만 낮은 빈도로 시스템 콜을 호출하는 것이 바람직하다. 이상의 관점으로부터, 식별 정보 저장부(215)는, 이 소요 시간이 보다 작은 경우에, 이 소요 시간이 보다 큰 경우에 비해, 시간 간격을 보다 짧게 설정한다. 이 설정은, 서버 장치(20)의 기동시 또는 리셋시에 식별 정보 저장부(215)가 미리 행해도 좋고, 운용중에 적당히 변경해도 좋다.
이상과 같이, 제 4 변형예에서는, 식별 정보 저장부(215)의 동작을 정보 충전율이라고 하는 관점으로부터 조정 가능하게 함으로써, 웹 사이트 운영상의 여러가지 환경에 유연에 대응하여, 서버 장치(20)의 동작을 효율화할 수 있다.
도 12는 본 실시예에 따른 서버 장치(20)로서 기능하는 컴퓨터의 하드웨어 구성의 일례를 나타낸다. 서버 장치(20)는 호스트 콘트롤러(1082)에 의해 서로 접속되는 적어도 하나의 CPU(210), RAM(1020), 및 그래픽 콘트롤러(1075)를 갖는 CPU 주변부를 포함한다. 이 도 12에 대해 서버 장치(20)는 SMP(Symmetric Multiple Processor)형의 아키텍쳐를 채용한다. 즉, CPU(210)가 RAM(1020)을 중심으로 대칭적으로 배치되어 각각의 CPU(210)가 RAM(1020)을 공유해 액세스한다. 또한, 서버 장치(20)는, 입출력 콘트롤러(1084)에 의해 호스트 콘트롤러(1082)에 접속되는 통신 인터페이스(220), 저장 장치(예를 들면 하드 디스크 드라이브)(200), 및 CD-ROM 드라이브(1060)를 갖는 입출력부와, 입출력 콘트롤러(1084)에 접속되는 ROM(1010), 플렉서블 디스크 드라이브(1050), 및 입출력 칩(1070)을 갖는 레거시(legacy) 입출력부를 포함한다.
호스트 콘트롤러(1082)는, RAM(1020)과, 높은 전송 레이트로 RAM(1020)을 액세스하는 CPU(210) 및 그래픽 콘트롤러(1075)를 접속한다. CPU(210)는 ROM(1010) 및 RAM(1020)에 저장된 프로그램에 근거하여 동작하여 각부의 제어를 행한다. 그래픽 콘트롤러(1075)는 CPU(210) 등이 RAM(1020) 내에 마련한 프레임 버퍼 상에 생성하는 화상 데이터를 취득하여, 표시 장치(1080) 상에 표시시킨다. 이 대신에, 그래픽 콘트롤러(1075)는, CPU(210) 등이 생성하는 화상 데이터를 저장하는 프레임 버퍼를 내부에 포함해도 괜찮다.
입출력 콘트롤러(1084)는, 호스트 콘트롤러(1082)와, 비교적 고속의 입출력 장치인 통신 인터페이스(220), 저장 장치(200), 및 CD-ROM 드라이브(1060)를 접속한다. 통신 인터페이스(220)는 네트워크를 거쳐서 외부의 장치와 통신한다. 저장 장치(200)는 서버 장치(20)가 사용하는 프로그램 및 데이터를 저장한다. CD-ROM 드라이브(1060)는 CD-ROM(1095)으로부터 프로그램 또는 데이터를 판독하여, RAM(1020) 또는 저장 장치(200)에 제공한다.
또한, 입출력 콘트롤러(1084)에는 ROM(1010)과 플렉서블 디스크 드라이브(1050)나 입출력 칩(1070) 등의 비교적 저속인 입출력 장치가 접속된다. ROM(1010)은, 서버 장치(20)의 기동시에 CPU(210)가 실행하는 부트 프로그램이나, 서버 장치(20)의 하드웨어에 의존하는 프로그램 등을 저장한다. 플렉서블 디스크 드라이브(1050)는, 플렉서블 디스크(1090)로부터 프로그램 또는 데이터를 판독하여, 입출력 칩(1070)을 거쳐서 RAM(1020) 또는 저장 장치(200)에 제공한다. 입출력 칩(1070)은, 플렉서블 디스크(1090)나, 예를 들면 패러렐 포트, 시리얼 포트, 키보드 포트, 마우스 포트 등을 거쳐서 각종 입출력 장치를 접속한다.
서버 장치(20)에 제공되는 프로그램은, 플렉서블 디스크(1090), CD-ROM(1095), 또는 IC 카드 등의 기록 매체에 저장되어 이용자에 의하여 제공된다. 프로그램은, 입출력 칩(1070) 및/또는 입출력 콘트롤러(1084)를 거쳐, 기록 매체로부터 판독되어서 서버 장치(20)에 인스톨되어 실행된다. 프로그램이 서버 장치(20) 등으로 하여금 행하게 하는 동작은, 도 1로부터 도 11에서 설명한 서버 장치(20)에서의 동작과 동일하므로, 설명을 생략한다.
이상으로 설명한 프로그램은 외부의 저장 매체에 저장되어도 괜찮다. 저장 매체로서는, 플렉서블 디스크(1090), CD-ROM(1095) 외에, DVD나 PD 등의 광학 기록 매체, MD 등의 광자기 기록 매체, 테이프 매체, IC 카드 등의 반도체 메모리 등을 이용할 수 있다. 또한, 전용 통신 네트워크나 인터넷에 접속된 서버 시스템에 마련한 하드 디스크 또는 RAM 등의 저장 장치를 기록 매체로서 사용하여, 네트워크를 거쳐서 프로그램을 서버 장치(20)에 제공해도 괜찮다.
이상, 본 실시예 및 각종의 변형예에 따라서 설명한 바와 같이, 서버 장치(20)에 의하면, 동시 병행적으로 다수의 리퀘스트를 수신하는 경우에도, 그들을 각 스레드에 효율적으로 할당해 처리를 효율화할 수 있다. 본원 발명자에 의해 이 서버 장치(20)를 웹 서버로서 동작시켜 성능을 계측한 결과, 웹 트랜잭션(transaction)을 의사적으로 발생시키는 벤치마킹 프로그램(통상의 개량 기술에서는 1%의 성능 향상도 매우 어려움)의 처리 효율을 6% 향상시킬 수 있었다. 또한, 스트레스 테스트에 대하여는 30% 정도의 성능 향상이 관측되었다.
이상, 본 발명을 실시예를 이용해 설명했지만, 본 발명의 기술적 범위는 상 기 실시예에 기재된 범위로는 한정되지 않는다. 상기 실시예에 다양한 변경 또는 개량을 더할 수 있는 것이 당업자에게 있어서 분명하다. 예를 들면, 요구 처리부(218-1~n) 및 식별 정보 저장부(215)는 각각 다른 스레드에 의해 실현되지 않아도 되고, 요구 처리부(218-1~n)를 실현하는 워커 스레드 중 하나가 식별 정보 저장부(215)를 실현하는 스레드를 겸해도 괜찮다. 즉 이 경우, 요구 처리부(218-1)가 도 5의 S550에 나타내는 동작 개시의 지시 대신에, 도 4에 나타내는 반복 처리를 1회분 행해도 좋다. 그 같은 변경 또는 개량을 더한 형태도 본 발명의 기술적 범위에 포함될 수 있는 것이, 특허 청구의 범위의 기재로부터 분명하다.
도 1은 정보 시스템(10)의 전체 구성을 나타낸다.
도 2는 본 실시예에 따른 서버 장치(20)의 제 1 구성예의 개요를 나타낸다.
도 3은 본 실시예에 따른 서버 장치(20)의 제 2 구성예의 개요를 나타낸다.
도 4는 본 실시예에 따른 식별 정보 저장부(215)의 동작을 나타내는 플로우차트이다.
도 5는 본 실시예에 따른 요구 처리부(218-1)의 동작을 나타내는 플로우차트이다.
도 6은 S430, S520, 및 S530에서의 동작의 상세를 나타낸다.
도 7은 본 실시예의 제 1 변형예에 대하여, S430, S520, 및 S530에서의 동작의 상세를 나타낸다.
도 8은 본 실시예의 제 2 변형예에 대하여, 요구 처리부(218-1)의 동작을 나타내는 플로우차트이다.
도 9는 본 실시예의 제 2 변형예에 대하여, 식별 정보를 취득하는 속도에 근거하여 동작 개시시각을 산출하는 처리의 개요를 나타내는 플로우차트이다.
도 10은 본 실시예의 제 3 변형예에 대하여, 식별 정보 저장부(215)의 동작을 나타내는 플로우차트이다.
도 11은 본 실시예의 제 4 변형예에 대하여, 식별 정보 저장부(215)의 동작을 나타내는 플로우차트이다.
도 12는 본 실시예에 따른 서버 장치(20)로서 기능하는 컴퓨터의 하드웨어 구성의 일례를 나타낸다.
부호의 설명
10 : 정보 시스템 15 : 클라이언트 장치
20 : 서버 장치 200 : 저장 장치
205A : 리퀘스트 저장 영역 205B : 식별 정보 저장 영역
205C : 상태 저장 영역 210 : CPU
215 : 식별 정보 저장부 218 : 요구 처리부
220 : 통신 인터페이스

Claims (10)

  1. 클라이언트 장치로부터 수신한 리퀘스트에 따라 동작하는 서버 장치로서,
    시스템 메모리 공간에 리퀘스트 저장 영역을 갖고, 유저 메모리 공간에 식별 정보 저장 영역을 갖는 저장 장치와,
    (i)상기 식별 정보 저장 영역에 저장된 식별 정보 조각(pieces)의 수가 미리 정해진 기준수 이하로 감소한 것을 조건으로, 상기 시스템 메모리 공간 내에 위치된 상기 리퀘스트 저장 영역으로부터 처리되기를 기다리는 적어도 하나의 리퀘스트를 검색(retrieving)하고, (ii) 상기 검색된 리퀘스트의 식별 정보 - 상기 식별 정보는 상기 검색된 리퀘스트를 수신하는 접속을 식별함 - 를 상기 유저 메모리 공간 내에 위치된 상기 식별 정보 저장 영역에 저장하는 식별 정보 저장 유닛과,
    상기 식별 정보 저장 영역으로부터 상기 식별 정보를 성공적으로 취득하였다는 조건으로, 식별 정보에 의해 식별되는 리퀘스트를 상기 리퀘스트 저장 영역으로부터 취득하기 위해 병렬로 동작하는 복수의 리퀘스트 프로세서와,
    상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수 및 상기 식별 정보 저장 영역으로부터 취득된 식별 정보 조각의 수 중 적어도 하나에 근거하여 상기 식별 정보 저장 영역의 상태를 유저 메모리 공간에 저장하기 위한 상태 저장 영역을 포함하되,
    상기 식별 정보 저장 영역에 식별 정보를 새롭게 저장하면, 상기 식별 정보 저장 유닛은 상기 새롭게 저장된 식별 정보 조각의 수에 따라 상기 상태 저장 영역에 저장된 상태를 갱신하고,
    상기 식별 정보 저장 영역으로부터 식별 정보를 취득하면, 상기 리퀘스트 프로세서는 상기 취득된 식별 정보 조각의 수에 따라 상기 상태 저장 영역에 저장된 상태를 갱신하고, 상기 갱신된 상태에 따라 상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 기준수 이하로 감소했는지 여부를 판단하며,
    상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 미리 정해진 기준수 이하로 감소했는지 여부는, (i) 상기 식별 정보 조각의 수를 스캐닝하여 상기 식별 정보 저장 영역을 카운팅하거나, (ii) 상기 상태 저장 영역에 액세스하여 상기 식별 정보 저장 영역의 식별 정보 조각의 수를 카운트하는 카운터를 참조(referring)함으로써 상기 복수의 리퀘스트 프로세서 중 적어도 하나에 의해 체크되는
    서버 장치.
  2. 제 1 항에 있어서,
    상기 식별 정보 저장 유닛 및 상기 복수의 리퀘스트 프로세서의 각각은, 상이한 복수의 스레드에 의해 개별적으로 동작되고,
    적어도 하나의 상기 리퀘스트 프로세서는, 상기 식별 정보 저장 영역으로부터 식별 정보를 취득한 결과로서, 상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 기준수 이하로 감소한 경우에 상기 식별 정보 저장 유닛에게 동작을 개시하라고 지시하고,
    상기 식별 정보 저장 유닛은, 상기 복수의 리퀘스트 프로세서 중 하나의 프로세서로부터 상기 지시를 수신하면 동작을 개시하여, 상기 리퀘스트 저장 영역으로부터 처리되기를 기다리는 적어도 하나의 리퀘스트를 검색하고, 상기 검색된 리퀘스트의 식별 정보를 상기 식별 정보 저장 영역에 저장하는
    서버 장치.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 식별 정보 저장 영역으로부터 식별 정보를 취득하면, 상기 리퀘스트 프로세서는, 상기 상태 저장 영역에 저장된 상태에 따라, 이전 회에 상기 식별 정보 저장 유닛이 상기 식별 정보 저장 영역에 식별 정보를 저장한 이후에 상기 식별 정보 저장 영역으로부터 취득된 식별 정보 조각의 수가 상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수에 도달했는지 여부를 판단하는
    서버 장치.
  5. 제 1 항에 있어서,
    상기 식별 정보 저장 유닛은, 동작을 개시하라는 한 번의 지시에 응답하여 미리 정해진 수를 상한수로 하여 적어도 하나의 리퀘스트를 상기 리퀘스트 저장 영역으로부터 검색하고 상기 검색된 리퀘스트의 식별 정보를 상기 식별 정보 저장 영역에 저장하며,
    상기 식별 정보 저장 영역으로부터 식별 정보를 취득하면, 상기 리퀘스트 프로세서는, 상기 상태 저장 영역에 저장된 상태에 근거하여, 이전 회에 상기 식별 정보 저장 유닛에 의해 식별 정보가 상기 식별 정보 저장 영역에 저장된 이후에 상기 식별 정보 저장 영역으로부터 취득한 식별 정보 조각의 수가 상기 미리 정해진 상한수에 도달했는지 여부를 판단하는
    서버 장치.
  6. 제 1 항에 있어서,
    상기 상태 저장 영역은 상이한 2개 이상의 시점 각각에서의 상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수를 저장하고,
    상기 식별 정보 저장 영역으로부터 식별 정보를 취득하면, 상기 리퀘스트 프로세서는, 상기 상태 저장 영역에 저장된 상태에 근거하여 단위 시간당 상기 식별 정보 저장 영역으로부터 식별 정보를 취득하는 속도를 상기 식별 정보 조각의 수로서 산출하고, 상기 산출된 속도에 근거하여 상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 기준수 이하로 감소하는 예측 시각을 산출하여, 상기 예측된 시각에 상기 식별 정보 저장 유닛이 동작을 개시하도록 설정하는
    서버 장치.
  7. 제 1 항에 있어서,
    상기 식별 정보 저장 유닛은 또한, 미리 설정한 시간 간격으로 동작하여, 한 번의 동작에 대하여 미리 정해진 수를 상한수로 하여 적어도 하나의 리퀘스트를 상기 리퀘스트 저장 영역으로부터 검색하고 상기 검색된 리퀘스트의 식별 정보를 상기 식별 정보 저장 영역에 저장하며,
    미래 정해진 상기 상한수에 대한 동작 1회당 검색되는 식별 정보 조각의 수의 백분율인 정보 충전율이 높을수록, 상기 식별 정보 저장 유닛은 상기 정보 충전율이 낮은 경우보다 상기 시간 간격을 짧게 설정하는
    서버 장치.
  8. 제 1 항에 있어서,
    상기 식별 정보 저장 유닛은 상기 리퀘스트 저장 영역에 대한 배타적 액세스권한을 획득하고 그 후, 상기 리퀘스트 저장 영역으로부터 리퀘스트를 검색하며,
    상기 리퀘스트 프로세서 각각은 상기 리퀘스트 저장 영역에 대한 배타적 액세스 권한을 획득하지 않고 식별 정보를 상기 식별 정보 저장 영역으로부터 취득하는 것을 시도하고,
    상기 식별 정보가 취득된 것을 조건으로, 상기 리퀘스트 프로세서 각각은 상기 취득된 식별 정보에 의해 식별되는 리퀘스트를 저장하는 상기 리퀘스트 저장 영역 내의 영역의 배타적 액세스 권한을 획득하여, 상기 리퀘스트 저장 영역으로부터 상기 리퀘스트를 취득하는
    서버 장치.
  9. 클라이언트 장치로부터 수신한 리퀘스트에 응답하여 서버 장치로 하여금 처리를 수행하게 하는 방법으로서,
    상기 서버 장치의 식별 정보 저장 유닛에 의해, 상기 식별 정보 저장 영역에 저장되어 있는 식별 정보 조각의 수가 미리 정해진 기준수 이하로 감소한 것을 조건으로, 시스템 메모리 공간 내의 리퀘스트 저장 영역으로부터 처리되기를 기다리는 적어도 하나의 리퀘스트를 검색하는 단계와,
    상기 검색된 리퀘스트의 식별 정보 - 상기 식별 정보는 상기 검색된 리퀘스트를 수신하는 접속을 식별함 - 를 유저 메모리 공간 내의 식별 정보 저장 영역에 저장하는 단계와,
    상기 식별 정보 저장 영역으로부터 식별 정보가 취득되었다는 것을 조건으로, 상기 식별 정보에 의해 식별되는 리퀘스트를 상기 리퀘스트 저장 영역으로부터 취득하기 위해, 상기 서버 장치의 복수의 리퀘스트 프로세서를 병렬로 동작시키는 단계와,
    취득된 리퀘스트를 처리하는 단계와,
    상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수 및 상기 식별 정보 저장 영역으로부터 취득된 식별 정보 조각의 수 중 적어도 하나에 근거하여 상기 식별 정보 저장 영역의 상태를 유저 메모리 공간의 상태 저장 영역에 저장하는 단계를 포함하되,
    상기 식별 정보 저장 영역에 식별 정보를 새롭게 저장하면, 상기 식별 정보 저장 유닛은 상기 새롭게 저장된 식별 정보 조각의 수에 따라 상기 상태 저장 영역에 저장된 상태를 갱신하고,
    상기 식별 정보 저장 영역으로부터 식별 정보를 취득하면, 상기 리퀘스트 프로세서는 취득된 식별 정보 조각의 수에 따라 상기 상태 저장 영역에 저장된 상태를 갱신하고, 갱신된 상태에 따라 상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 기준수 이하로 감소했는지 여부를 판단하며,
    상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 기준수 이하로 감소했는지 여부는, (i) 상기 식별 정보 조각의 수를 스캐닝하여 상기 식별 정보 저장 영역을 카운팅하거나, (ii) 상기 상태 저장 영역에 액세스하여 상기 식별 정보 저장 영역의 식별 정보 조각의 수를 카운트하는 카운터를 참조(referring)함으로써 상기 복수의 리퀘스트 프로세서 중 적어도 하나에 의해 체크되는
    방법.
  10. 클라이언트 장치로부터 수신한 리퀘스트에 응답하여 서버 장치로 하여금 프로세싱을 수행하게 하는 방법을 수행하는 컴퓨터 판독 가능한 프로그램을 포함하는 컴퓨터 판독 가능한 저장 매체로서,
    상기 방법은,
    상기 식별 정보 저장 영역에 저장되어 있는 식별 정보 조각의 수가 미리 정해진 기준수 이하로 감소한 것을 조건으로, 시스템 메모리 공간 내의 리퀘스트 저장 영역으로부터 처리되기를 기다리는 적어도 하나의 리퀘스트를 검색하는 단계와,
    상기 검색된 리퀘스트의 식별 정보 - 상기 식별 정보는 상기 검색된 리퀘스트를 수신하는 접속을 식별함 - 를 유저 메모리 공간 내의 식별 정보 저장 영역에 저장하는 단계와,
    상기 식별 정보 저장 영역으로부터 식별 정보가 취득되었다는 것을 조건으로, 상기 식별 정보에 의해 식별되는 리퀘스트를 상기 리퀘스트 저장 영역으로부터 취득하기 위해, 상기 서버 장치의 복수의 리퀘스트 프로세서를 병렬로 동작시키는 단계와,
    취득된 리퀘스트를 처리하는 단계와,
    상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수 및 상기 식별 정보 저장 영역으로부터 취득된 식별 정보 조각의 수 중 적어도 하나에 근거하여 상기 식별 정보 저장 영역의 상태를 유저 메모리 공간의 상태 저장 영역에 저장하는 단계를 포함하되,
    상기 식별 정보 저장 영역에 식별 정보를 새롭게 저장하면, 상기 식별 정보 저장 유닛은 상기 새롭게 저장된 식별 정보 조각의 수에 따라 상기 상태 저장 영역에 저장된 상태를 갱신하고,
    상기 식별 정보 저장 영역으로부터 식별 정보를 취득하면, 상기 리퀘스트 프로세서는 취득된 식별 정보 조각의 수에 따라 상기 상태 저장 영역에 저장된 상태를 갱신하고, 갱신된 상태에 따라 상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 기준수 이하로 감소했는지 여부를 판단하며,
    상기 식별 정보 저장 영역에 저장된 식별 정보 조각의 수가 상기 기준수 이하로 감소했는지 여부는, (i) 상기 식별 정보 조각의 수를 스캐닝하여 상기 식별 정보 저장 영역을 카운팅하거나, (ii) 상기 상태 저장 영역에 액세스하여 상기 식별 정보 저장 영역의 식별 정보 조각의 수를 카운트하는 카운터를 참조(referring)함으로써 상기 복수의 리퀘스트 프로세서 중 적어도 하나에 의해 체크되는
    컴퓨터 판독 가능한 저장 매체.
KR1020097024128A 2007-05-10 2008-05-09 수신한 리퀘스트에 따라 동작하는 서버 장치 KR101103905B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2007-125505 2007-05-10
JP2007125505 2007-05-10
PCT/JP2008/058658 WO2008140053A1 (ja) 2007-05-10 2008-05-09 受信したリクエストに応じて動作するサーバ装置

Publications (2)

Publication Number Publication Date
KR20100019453A KR20100019453A (ko) 2010-02-18
KR101103905B1 true KR101103905B1 (ko) 2012-01-12

Family

ID=39970509

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097024128A KR101103905B1 (ko) 2007-05-10 2008-05-09 수신한 리퀘스트에 따라 동작하는 서버 장치

Country Status (6)

Country Link
US (1) US8078674B2 (ko)
EP (1) EP2157512A4 (ko)
JP (1) JP5005028B2 (ko)
KR (1) KR101103905B1 (ko)
CN (1) CN101681273B (ko)
WO (1) WO2008140053A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078674B2 (en) * 2007-05-10 2011-12-13 International Business Machines Corporation Server device operating in response to received request
JP5860634B2 (ja) * 2011-08-23 2016-02-16 任天堂株式会社 情報処理システム、情報処理方法、サーバプログラム、サーバ装置、および、サーバシステム
US20150113602A1 (en) * 2012-05-08 2015-04-23 Serentic Ltd. Method and system for authentication of communication and operation
CN106302570A (zh) * 2015-05-14 2017-01-04 阿里巴巴集团控股有限公司 一种请求处理方法及装置
US9778951B2 (en) * 2015-10-16 2017-10-03 Qualcomm Incorporated Task signaling off a critical path of execution
CN106657187A (zh) * 2015-10-30 2017-05-10 南京中兴新软件有限责任公司 报文处理的方法及装置
JP7034681B2 (ja) * 2017-11-27 2022-03-14 アズビル株式会社 通信制御装置
JP7015203B2 (ja) * 2018-04-11 2022-02-02 株式会社日立製作所 アプリの実行方法
US10623328B1 (en) * 2018-06-08 2020-04-14 West Corporation Message brokering for asynchronous status updates
CN109271869B (zh) * 2018-08-21 2023-09-05 平安科技(深圳)有限公司 人脸特征值提取方法、装置、计算机设备及存储介质
CN109391682B (zh) * 2018-09-14 2023-05-12 联想(北京)有限公司 一种信息处理方法及服务器集群
CN109491895A (zh) * 2018-10-26 2019-03-19 北京车和家信息技术有限公司 服务器压力测试方法及装置
CN109918249A (zh) * 2019-03-12 2019-06-21 浪潮商用机器有限公司 一种服务器上设备信息的收集方法、装置和介质
CN110430070B (zh) * 2019-07-19 2022-07-22 北京奇艺世纪科技有限公司 一种服务状态分析方法、装置、服务器、数据分析设备及介质
CN112416583B (zh) * 2020-11-17 2024-07-05 平安科技(深圳)有限公司 高频请求处理方法、装置、电子设备及存储介质
CN116089437B (zh) * 2022-11-30 2023-10-03 荣耀终端有限公司 一种数据处理方法及服务器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100586283B1 (ko) * 2002-12-31 2006-06-07 인터내셔널 비지네스 머신즈 코포레이션 동적 쓰레드 풀 조정 방법

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520100A (ja) 1991-07-11 1993-01-29 Mitsubishi Electric Corp オペレーテイングシステム
US5838910A (en) * 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US6981215B1 (en) * 1998-12-31 2005-12-27 Microsoft Corp. System for converting event-driven code into serially executed code
US7171473B1 (en) * 1999-11-17 2007-01-30 Planet Exchange, Inc. System using HTTP protocol for maintaining and updating on-line presence information of new user in user table and group table
US20020055982A1 (en) * 2000-11-03 2002-05-09 The Board Of Regents Of The University Of Nebraska Controlled server loading using L4 dispatching
US7051330B1 (en) * 2000-11-21 2006-05-23 Microsoft Corporation Generic application server and method of operation therefor
US7499966B2 (en) * 2001-08-23 2009-03-03 International Business Machines Corporation Web server architecture for improved performance
US20030065701A1 (en) * 2001-10-02 2003-04-03 Virtual Media, Inc. Multi-process web server architecture and method, apparatus and system capable of simultaneously handling both an unlimited number of connections and more than one request at a time
US20030156547A1 (en) * 2002-02-15 2003-08-21 Exanet. Inc. System and method for handling overload of requests in a client-server environment
CA2379090A1 (en) * 2002-03-27 2003-09-27 Ibm Canada Limited-Ibm Canada Limitee Efficient server handling of multiple requests from a web browser
US7448049B1 (en) * 2002-10-18 2008-11-04 Crossroads Systems, Inc. System and method of supporting kernel functionality
KR100451211B1 (ko) * 2002-10-31 2004-10-13 엘지전자 주식회사 이동 컴퓨팅 환경에서 트랜잭션 캐시 일관성 유지 시스템및 방법
US7587510B1 (en) * 2003-04-21 2009-09-08 Charles Schwab & Co., Inc. System and method for transferring data between a user space and a kernel space in a server associated with a distributed network environment
JP2005115600A (ja) * 2003-10-07 2005-04-28 Hitachi Ltd 情報処理装置及び方法
JP4873852B2 (ja) * 2004-02-26 2012-02-08 株式会社リコー 第一の通信装置、情報処理装置、情報処理プログラム、記録媒体
US7577707B2 (en) * 2004-04-21 2009-08-18 International Business Machines Corporation Method, system, and program for executing data transfer requests
US7657892B2 (en) * 2004-05-20 2010-02-02 Bea Systems, Inc. System and method for application server with self-tuned threading model
US8370448B2 (en) * 2004-12-28 2013-02-05 Sap Ag API for worker node retrieval of session request
JP4151978B2 (ja) * 2005-05-25 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ装置、管理方法およびプログラム
US8713180B2 (en) * 2005-06-22 2014-04-29 Cisco Technology, Inc. Zero-copy network and file offload for web and application servers
US8005943B2 (en) * 2005-10-12 2011-08-23 Computer Associates Think, Inc. Performance monitoring of network applications
US8347293B2 (en) * 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
US20090094611A1 (en) * 2005-12-15 2009-04-09 Anders Danne Method and Apparatus for Load Distribution in Multiprocessor Servers
JP4842690B2 (ja) * 2006-04-14 2011-12-21 富士通株式会社 アプリケーション管理プログラム、アプリケーション管理方法およびアプリケーション管理装置
CN102684988B (zh) * 2006-04-26 2015-02-11 日本电信电话株式会社 负荷控制装置及其方法
US8849981B2 (en) * 2006-12-01 2014-09-30 Ca, Inc. Response time benchmarking
US20080172679A1 (en) * 2007-01-11 2008-07-17 Jinmei Shen Managing Client-Server Requests/Responses for Failover Memory Managment in High-Availability Systems
US7769931B1 (en) * 2007-02-15 2010-08-03 Emc Corporation Methods and systems for improved virtual data storage management
US8078674B2 (en) * 2007-05-10 2011-12-13 International Business Machines Corporation Server device operating in response to received request

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100586283B1 (ko) * 2002-12-31 2006-06-07 인터내셔널 비지네스 머신즈 코포레이션 동적 쓰레드 풀 조정 방법

Also Published As

Publication number Publication date
US20080281906A1 (en) 2008-11-13
CN101681273A (zh) 2010-03-24
EP2157512A1 (en) 2010-02-24
CN101681273B (zh) 2013-01-09
EP2157512A4 (en) 2012-10-10
JPWO2008140053A1 (ja) 2010-08-05
US8078674B2 (en) 2011-12-13
JP5005028B2 (ja) 2012-08-22
KR20100019453A (ko) 2010-02-18
WO2008140053A1 (ja) 2008-11-20

Similar Documents

Publication Publication Date Title
KR101103905B1 (ko) 수신한 리퀘스트에 따라 동작하는 서버 장치
EP3796168A1 (en) Information processing apparatus, information processing method, and virtual machine connection management program
JP6447217B2 (ja) 実行情報通知プログラム、情報処理装置および情報処理システム
US8291430B2 (en) Optimizing system performance using spare cores in a virtualized environment
US5884077A (en) Information processing system and method in which computer with high load borrows processor of computer with low load to execute process
US20050097384A1 (en) Data processing system with fabric for sharing an I/O device between logical partitions
US7185167B2 (en) Heap allocation
JPWO2012066640A1 (ja) 計算機システム、マイグレーション方法及び管理サーバ
US20090276205A1 (en) Stablizing operation of an emulated system
US20140215176A1 (en) Memory allocation control method, recording medium, and information processing device
US8615586B2 (en) Discovery of logical images at storage area network endpoints
US7962926B2 (en) Method, system, and program storage device for generating a retry message when a thread in a real-time application is unavailable to process a request to utilize the real-time application
JP2005338985A (ja) 記憶領域管理方法及びシステム
WO2017016380A1 (en) Advance cache allocator
KR20170055180A (ko) 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
CN112256395B (zh) 安全内存分配、虚拟cpu调度方法及相关装置
JP5783259B2 (ja) コンピュータシステム
US9898405B2 (en) Working set adjustment in a managed environment
JPH07129518A (ja) 計算機システム
CN109634721B (zh) 一种虚拟机与主机的启动通信方法及相关装置
JP5884595B2 (ja) メッセージ通信方法,メッセージ通信プログラムおよびコンピュータ
WO2016092667A1 (ja) 計算機及び割込み制御方法
US20240104468A1 (en) Maintenance background task regulation using feedback from instrumented waiting points
JP2024002405A (ja) リソース割当プログラムおよびリソース割当方法
JP7173337B2 (ja) リソース管理装置、リソース管理方法およびプログラム

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
LAPS Lapse due to unpaid annual fee