KR101554113B1 - 장치 집합체에서 리소스 활용의 최적화 - Google Patents

장치 집합체에서 리소스 활용의 최적화 Download PDF

Info

Publication number
KR101554113B1
KR101554113B1 KR1020147012948A KR20147012948A KR101554113B1 KR 101554113 B1 KR101554113 B1 KR 101554113B1 KR 1020147012948 A KR1020147012948 A KR 1020147012948A KR 20147012948 A KR20147012948 A KR 20147012948A KR 101554113 B1 KR101554113 B1 KR 101554113B1
Authority
KR
South Korea
Prior art keywords
virtual machine
computer
machine groups
packets
server computer
Prior art date
Application number
KR1020147012948A
Other languages
English (en)
Other versions
KR20140081871A (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 KR20140081871A publication Critical patent/KR20140081871A/ko
Application granted granted Critical
Publication of KR101554113B1 publication Critical patent/KR101554113B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

여기에, 계층적 네트워크 층을 갖는 장치 집합체에서의 리소스 활용을 최적화하는 것에 대한 기술을 개시한다. 일부 예의 기술은 서버 컴퓨터 집합체 상에서 실행된 프로세스 간에 교환되는 패킷을 식별할 수 있다. 계층적 네트워크 층은 서버 컴퓨터 집합체를 연결할 수 있다. 본 기술은 식별된 패킷에 기초하여 가상 머신 그룹을 결정할 수 있다. 각각의 가상 머신 그룹은, 서버 컴퓨터 집합체 상에 구성되며 하나 이상의 프로세스를 실행하는 하나 이상의 가상 머신을 식별할 수 있다. 가상 머신 그룹은 계층적 네트워크 층의 하위층에서는 데이터 트래픽을 증가시키며 계층적 네트워크 층의 상위층에서는 데이터 트래픽을 감소시키도록 구성될 수 있다. 본 기술은 가상 머신 그룹에 따라 서버 컴퓨터 집합체 사이에서 가상 머신을 재배치할 수 있다.

Description

장치 집합체에서 리소스 활용의 최적화{OPTIMIZATION OF RESOURCE UTILIZATION IN A COLLECTION OF DEVICES}
본 명세서에 별도로 표시되지 않는 한, 본 명세서에 기재되는 자료들은 본원의 특허청구범위에 대한 종래기술이 아니며, 본 섹션에 포함되는 것에 의해 종래 기술이 되도록 허용되지 않는다.
상업용 데이터 센터는 폐쇄 접속형 네트워크(Clos-connected network)로서 구현될 수 있다. 통상의 폐쇄 접속형 네트워크는 2층 네트워크 아키텍쳐 또는 3층 네트워크 아키텍쳐 등의 다층 네트워크 아키텍쳐로서 구현될 수 있다. 예를 들어, 3층 네트워크 아키텍쳐는, 코어층이 트리의 뿌리를 형성하고, 집적층(aggregation layer)이 트리의 가운데를 형성하며, 엣지층(edge layer)이 트리의 잎을 형성하는 업사이드다운형(upside-down) 트리로서 구성될 수 있다. 코어층, 집적층, 및 엣지층은 이더넷 스위치 등의 다수의 네트워크 요소를 포함할 수 있다.
폐쇄 접속형 네트워크에 있어서, 집적층 내에서 또는 엣지층 내에서 인접한 네트워크 요소들 간의 트래픽은 코어층의 네트워크 요소를 통해 라우팅될 수 있다. 그 결과, 코어층은 심각한 혼잡을 겪게 되는 반면, 집적층 또는 엣지층 등의 하위층은 가용 대역폭을 가질 수 있다.
개괄적으로 본원은 계층적 네트워크 층을 갖는 장치 집합체에서의 리소스 활용을 최적화하기 위한 기술을 개시한다. 일부 예의 방법은 서버 컴퓨터 집합체 상에서 실행된 프로세스 간에 교환되는 패킷을 식별하는 것을 포함할 수 있다. 계층적 네트워크 층은 서버 컴퓨터 집합체를 연결할 수 있다. 본 예의 방법은 식별된 패킷에 기초하여 가상 머신 그룹을 결정할 수 있다. 각각의 가상 머신 그룹은, 서버 컴퓨터 집합체 상에 구성되며 하나 이상의 프로세스를 실행하는 하나 이상의 가상 머신을 식별할 수 있다. 가상 머신 그룹은 계층적 네트워크 층의 하위층에서는 데이터 트래픽을 증가시키며 계층적 네트워크 층의 상위층에서는 데이터 트래픽을 감소시키도록 구성될 수 있다. 본 예의 방법은 가상 머신 그룹에 따라 서버 컴퓨터 집합체 사이에서 가상 머신을 재배치할 수 있다.
또한 개괄적으로 본원은 복수의 계층적 네트워크 층을 갖는 장치 집합체에서의 리소스 활용을 최적화하기에 적합한 일부 컴퓨터 판독 가능한 기억 매체를 개시한다. 컴퓨터 판독 가능한 기억 매체는 컴퓨터에 의해 실행될 때에 그 컴퓨터로 하여금 하나 이상의 동작을 수행하게 하도록 저장된 컴퓨터 실행 가능한 명령어를 포함할 수 있다. 일부 예의 컴퓨터 실행 가능한 명령어는 컴퓨터로 하여금 서버 컴퓨터 집합체 상에서 실행된 프로세스 간에 교환되는 패킷을 식별하게 할 수 있다. 계층적 네트워크 층은 서버 컴퓨터 집합체를 연결할 수 있다. 본 예의 컴퓨터 실행 가능한 명령어는 컴퓨터로 하여금 식별된 패킷에 기초하여 가상 머신 그룹을 결정하게 할 수 있다. 각각의 가상 머신 그룹은, 서버 컴퓨터 집합체 상에 구성되며 하나 이상의 프로세스를 실행하는 하나 이상의 가상 머신을 식별할 수 있다. 가상 머신 그룹은 계층적 네트워크 층의 하위층에서는 데이터 트래픽을 증가시키며 계층적 네트워크 층의 상위층에서는 데이터 트래픽을 감소시키도록 구성될 수 있다. 본 예의 컴퓨터 실행 가능한 명령어는 컴퓨터로 하여금 가상 머신 그룹에 따라 서버 컴퓨터 집합체 사이에서 가상 머신을 재배치하게 할 수 있다.
또한 개괄적으로 본원은 복수의 계층적 네트워크 층을 갖는 장치 집합체에서의 리소스 활용을 최적화하기에 적합한 일부 컴퓨터 시스템을 개시한다. 일부 예의 컴퓨터 시스템은 프로세서와, 프로세서에 연결된 메모리를 포함할 수 있다. 본 예의 컴퓨터 시스템은 또한 메모리로부터 프로세서에 의해 실행 가능하고 그 프로세서에 의해 실행될 때에, 컴퓨터 시스템으로 하여금 하나 이상의 동작을 수행하게 하는 프로그램 모듈을 포함할 수 있다. 일부 예의 프로그램 모듈은 컴퓨터 시스템으로 하여금 서버 컴퓨터 집합체 상에서 실행된 프로세스 간에 교환되는 패킷을 식별하게 할 수 있다. 계층적 네트워크 층은 서버 컴퓨터 집합체를 연결할 수 있다. 각각의 패킷은 소스 식별자, 목적지 식별자 및 데이터 사이즈를 포함할 수 있다. 본 예의 프로그램 모듈은 컴퓨터 시스템으로 하여금 소스 식별자, 목적지 식별자 및 데이터 사이즈에 기초하여 가상 머신 그룹을 결정하게 할 수 있다. 각각의 가상 머신 그룹은, 서버 컴퓨터 집합체 상에 구성되며 하나 이상의 프로세스를 실행하는 하나 이상의 가상 머신을 식별할 수 있다. 가상 머신 그룹은 계층적 네트워크 층의 하위층에서는 데이터 트래픽을 증가시키며 계층적 네트워크 층의 상위층에서는 데이터 트래픽을 감소시키도록 구성될 수 있다. 본 예의 프로그램 모듈은 컴퓨터 시스템으로 하여금 가상 머신 그룹에 따라 서버 컴퓨터 집합체 사이에서 가상 머신을 재배치하게 할 수 있다.
앞의 설명은 예시일 뿐이며 어떤 식으로도 제한적으로 해석되어서는 안된다. 전술한 예시적인 양태, 실시형태 및 특징과 함께, 추가의 양태, 실시형태 및 특징은 도면 및 이하의 상세한 설명을 참조함으로써 분명해질 것이다.
본원의 전술한 특징 및 다른 특징들은 이하의 상세한 설명, 첨부 도면 및 첨부된 특허청구범위로부터 보다 충분히 명백해질 것이다. 이들 도면이 본원에 따른 몇몇 실시형태들만 도시하며, 본원의 범위를 제한하는 것으로 간주되지 않는다는 이해 하에서, 첨부 도면을 참조하여 부가적인 세부사항으로 상세하게 본원을 설명하며, 도면에 있어서,
도 1은 장치 집합체에서의 리소스 활용을 최적화하기에 적합한 폐쇄 접속형 네트워크 아키텍쳐의 예를 도시하는 기능 블록도이고,
도 2는 장치 집합체에서의 리소스 활용을 최적화하기에 적합한 프로세스 예를 나타내는 흐름도이며,
도 3은 매트릭스의 일부의 구현예를 나타내는 도면이고,
도 4는 개념화한 그래프 문제의 표현예를 나타내는 도면이며,
도 5는 컴퓨팅 시스템 예에 대한 컴퓨터 하드웨어 아키텍쳐를 도시하는 블록도이고,
도 6은 컴퓨팅 장치 상에서 컴퓨터 프로세스를 실행하는 컴퓨터 프로그램을 포함하는 컴퓨터 프로그램 제품을 도시하는 개략도이며,
전체 도면은 본 명세서에서 설명하는 적어도 일부 실시형태에 따라 배열되어 있다.
본 상세한 설명에서는, 명세서의 일부를 구성하는 첨부 도면을 참조한다. 도면에 있어서, 문맥에서 다르게 기술하지 않는 한, 유사한 부호는 대체적으로 유사한 요소를 나타낸다. 상세한 설명과 도면에서 설명하는 예시적인 실시형태들은 한정하기 위한 것이 아니다. 여기에 제시하는 발명의 대상의 사상이나 범위를 벗어나는 일 없이 다른 실시형태들이 구현될 수도 있고, 다른 변경이 이루어질 수도 있다. 여기에 개괄적으로 설명하고 도면에 도시하는 본원의 양태는, 명백하게 여기에서 고려하고 있는 모든 것들인, 다양한 상이한 구성들로 배치되고, 대체되며, 결합되고, 설계될 수 있음을 쉽게 이해할 수 있을 것이다
개괄적으로, 본원은 그중에서도 네트워크의 코어층에서는 트래픽을 감소시키고 또한 네트워크의 집적층 또는 엣지층 등의 하위층에서는 트래픽을 증가시키기에 적합한 기술에 관한 것이다. 본 기술은 데이터 센터 또는 그외 다른 장치 집합체를 대표할 수 있는 네트워크 아키텍쳐 내에서 서버 컴퓨터 사이에 전송된 데이터 패킷을 식별하도록 구성될 수 있다. 데이터 패킷은 서버 컴퓨터 상에서 가상 머신에 의해 실행된 프로세스에 의해 전송 및 수신될 수 있다. 본 기술은 식별된 데이터 패킷에 기초하여 매트릭스를 생성하기에 적합할 수 있다. 상기 매트릭스는 네트워크 내의 가상 머신쌍 사이에 전송되는 트래픽의 양을 특정할 수 있다.
본 기술은 상기 매트릭스에 기초하여 가상 머신 그룹을 결정하기에 적합할 수 있다. 가상 머신 그룹은 네트워크의 하위층에서의 트래픽은 감소시키지만 네트워크의 코어층에서의 트랙픽은 같은 상태를 유지하거나 증가시키는 식으로 구성된 가상 머신 그룹을 포함할 수 있다. 본 기술은 결정된 가상 머신 그룹에 따라 서버 컴퓨터 사이에서 가상 머신을 재배치하기에 적합할 수 있다.
도 1은 여기에 제시하는 적어도 일부 실시형태에 따라 구성된, 장치 집합체에서의 리소스 활용을 최적화하기에 적합한 예시적인 폐쇄 접속형 네트워크 아키텍쳐(100)를 도시하는 기능 블록도이다. 일부 실시형태에 따르면, 네트워크 아키텍쳐(100)는 데이터 센터의 구성일 수 있다. 네트워크 아키텍쳐(100)는 서버 컴퓨터의 제1 집합체(102A), 서버 컴퓨터의 제2 집합체(102B), 서버 컴퓨터의 제3 집합체(102C), 및 서버 컴퓨터의 제4 집합체(102D)를 포함할 수 있다. 서버 컴퓨터 집합체(102A-102D)를 총칭하여 서버 컴퓨터 집합체(102)라고도 할 수 있다. 서버 컴퓨터 집합체(102) 각각은 하나 이상의 서버 컴퓨터를 포함할 수 있다. 편의상, 도 1에는 4개의 서버 컴퓨터 집합체를 도시하지만, 당업자라면 네트워크 아키텍쳐(100)에 다른 개수의 서버 컴퓨터 집합체가 있을 수도 있다는 것을 이해할 것이다. 본 명세서에 사용되는 용어인 "연결하다(couple)"는 2개 이상의 구성요소 간에 직접 또는 간접 통신을 가능하게 하도록 구성된 임의의 메커니즘을 의미할 수 있다. 그러한 구성요소들은 서로 간에 물리적 접촉이 있을 수도 없을 수도 있다.
서버 컴퓨터의 제1 집합체(102A)는 제1 엣지 네트워크 요소(104A)에 연결될 수 있다. 서버 컴퓨터의 제2 집합체(102B)는 제2 엣지 네트워크 요소(104B)에 연결될 수 있다. 서버 컴퓨터의 제3 집합체(102C)는 제3 엣지 네트워크 요소(104C)에 연결될 수 있다. 서버 컴퓨터의 제4 집합체(102D)는 제4 엣지 네트워크 요소(104D)에 연결될 수 있다. 엣지 네트워크 요소(104A-104D)를 총칭하여 엣지 네트워크 요소(104)라고도 할 수 있다. 엣지 네트워크 요소(104)는 공동으로 네트워크 아키텍쳐(100)의 엣지층(106)을 형성할 수 있다.
제1 엣지 네트워크 요소(104A)와 제2 엣지 네트워크 요소(104B)는 제1 집적 네트워크 요소(108A)에 연결될 수 있다. 제3 엣지 네트워크 요소(104C)와 제4 엣지 네트워크 요소(104D)는 제2 집적 네트워크 요소(108B)에 연결될 수 있다. 제1 집적 네트워크 요소(108A)와 제2 집적 네트워크 요소(108B)를 총칭하여 집적 네트워크 요소(108)라고도 할 수 있다. 집적 네트워크 요소(108)는 공동으로 네트워크 아키텍쳐(100)의 집적층(110)을 형성할 수 있다.
제1 집적 네트워크 요소(108A)는 제1 코어 네트워크 요소(112A)와 제2 코어 네트워크 요소(112B)에 연결될 수 있다. 제2 집적 네트워크 요소(108B)는 제1 코어 네트워크 요소(112A)와 제2 코어 네트워크 요소(112B)에 연결될 수 있다. 제1 코어 네트워크 요소(112A)와 제2 코어 네트워크 요소(112B)는 네트워크(도 1에서 도시 생략)에 연결될 수 있다. 제1 코어 네트워크 요소(112A)와 제2 코어 네트워크 요소(112B)를 총칭하여 코어 네트워크 요소(112)라고도 할 수 있다. 코어 네트워크 요소(112)는 공동으로 네트워크 아키텍쳐의 코어층(114)을 형성할 수 있다.
일부 실시형태에 따라, 코어층(114), 집적층(110) 및 엣지층(106)은 3층 네트워크 아키텍쳐를 형성할 수 있다. 다른 일부 실시형태에서는, 엣지층(106)은 존재하지 않고, 코어층(114)과 집적층(110)이 2층 네트워크 아키텍쳐를 형성할 수도 있다. 기타 다층 네트워크 아키텍쳐를 고려할 수도 있다. 또한, 네트워크 아키텍쳐(100)의 다른 구현예에서는 다층을 형성하고 상호 접속하는 다양한 구성으로 임의개의 엣지 네트워크 요소, 집적 네트워크 요소, 또는 코어 요소를 포함할 수 있다,
본 명세서에서는 코어층(114), 집적층(110) 및 엣지층(106)을 네트워크 아키텍쳐(100)의 계층적 네트워크 층으로서 칭할 수도 있다. 코어층(114)은 일반적으로 계층적 네트워크 층의 상위층으로서 칭해질 수 있고, 집적층(110)과 엣지층(106)은 일반적으로 계층적 네트워크 층의 하위층으로서 칭해질 수 있다.
일부 예의 데이터 센터의 구성에 있어서, 서버 컴퓨터 집합체(102) 각각은 랙(rack)에 배치될 수 있다. 다수개의 랙이 한줄로 나란히 배치될 수 있다. 다수의 행이 서로 평행하게 배열되어 통로(aisle)를 형성할 수 있다. 엣지 네트워크 요소(104)가 랙의 상단에 배치될 수 있다. 엣지 네트워크 요소(104) 각각은 랙에 배치된 서버 컴퓨터들을 연결할 수 있다. 집적 네트워크 요소(108)는 행의 끝단에 배치될 수 있다. 집적 네트워크 요소(108) 각각은 각 행에서 다수의 랙을 연결할 수 있다. 코어 네트워크 요소(112)는 통로의 끝단에 배치될 수 있다. 코어 네트워크 요소(112) 각각은 데이터 센터에서 다수의 행을 연결할 수 있다. 엣지 네트워크 요소(104), 집적 네트워크 요소(108) 및 코어 네트워크 요소(112)의 다른 구성 및 배치를 고려할 수도 있다.
도 1에 도시하는 바와 같이, 서버 컴퓨터 집합체(102) 간의 일부 트래픽은 엣지층(106)과 집적층(110)을 통과한다. 서버 컴퓨터 집합체(102) 간의 일부 트랙픽은 코어층(114)도 통과할 수 있다. 도시하는 예에서는, 서버 컴퓨터의 제1 집합체(102A)가 제1 가상 머신(116A)을 작동할 수 있고, 서버 컴퓨터의 제2 집합체(102B)가 제2 가상 머신(116B)을 작동할 수 있다. 서버 컴퓨터의 제3 집합체(102C)가 제3 가상 머신(116C)을 작동할 수 있고, 서버 컴퓨터의 제4 집합체(102D)가 제4 가상 머신(116D)을 작동할 수 있다. 가상 머신(116A-116D)을 총칭하여 가상 머신(116)이라고도 할 수 있다.
몇몇 구현예에 있어서, 제1 가상 머신(116A)은 제2 가상 머신(116B)으로 라우팅되는 데이터 패킷을 생성하는 프로세스를 실행하기에 적합할 수 있다. 데이터 패킷은 서버 컴퓨터의 제1 집합체(102A)로부터 제1 엣지 네트워크 요소(104A)로, 제1 엣지 네트워크 요소(104A)로부터 제1 집적 네트워크 요소(108A)로, 제1 집적 네트워크 요소(108A)로부터 제2 엣지 네트워크 요소(104B)로, 그리고 제2 엣지 네트워크 요소(104B)로부터 서버 컴퓨터의 제2 집합체(102B)로 라우팅될 수 있다. 이 경우에, 데이터 패킷은 엣지층(106)과 집적층(110)은 거치지만 코어층(114)은 피해 통과한다. 그 결과, 코어층(114) 내의 트래픽이 데이터 패킷의 전송에 의해 증가하지 않는다.
다른 일부 구현예에서는, 제1 가상 머신(116A)이 제3 가상 머신(116C)으로 라우팅되는 데이터 패킷을 생성하는 프로세스를 실행하기에 적합할 수 있다. 데이터 패킷은 마찬가지로 서버 컴퓨터의 제1 집합체(102A)로부터 제1 엣지 네트워크 요소(104A)로, 제1 엣지 네트워크 요소(104A)로부터 제1 집적 네트워크 요소(108A)로 라우팅될 수 있다. 그러나, 제1 집적 네트워크 요소(108A)로부터 트래픽은 이어서 코어 네트워크 요소(112) 중 하나로, 코어 네트워크 요소(112) 중 하나로부터 제2 집적 네트워크 요소(108B)로, 제2 집적 네트워크 요소(108B)로부터 제3 엣지 네트워크 요소(104C)로, 그리고 제3 엣지 네트워크 요소(104C)로부터 서버 컴퓨터의 제3 집합체(102C)로 라우팅될 수 있다. 이 경우에, 데이터 패킷은 엣지층(106), 집적층(110) 및 코어층(114)을 통과한다. 그 결과, 코어층(114)에서의 트래픽이 데이터 패킷의 전송에 의해 증가한다.
코어층(114)에서의 트래픽을 저감하기 위해, 본 명세서에 개시하는 다양한 실시형태에서는 서버 컴퓨터 집합체(102) 간에 교환되는 데이터 패킷을 식별하기에 적합한 최적화 기술을 설명한다. 서버 컴퓨터 집합체(102)는 프로세스 간에 전송되는 데이터 패킷을 생성하는 프로세스를 실행하기에 적합한 가상 머신(116) 등의 가상 머신을 작동할 수 있다. 데이터 패킷을 분석함으로써, 최적화 기술은, 코어층(114)을 통해 라우팅된 트래픽은 저감하고, 집적층(110) 및 코어층(114) 등의 하위층을 통해 라우팅된 트래픽은 같은 수준을 유지하거나 증가하도록 가상 머신을 구성하게 이루어진 가상 머신 그룹을 생성하기에 적합할 수 있다. 최적화 기술은 또한 가상 머신 그룹에 따라 서버 컴퓨터 집합체(102) 사이에서 가상 머신을 재배치하기에 적합할 수 있다.
일부 실시형태에 있어서, 최적화 기술은 서버 컴퓨터 집합체(102) 내의 하나 이상의 최적화 모듈(118)에 의해 구현될 수 있다. 최적화 모듈(118)은 최적화 기술을 구현하기에 적합한 분산형 컴퓨팅 프레임워크로 배치 및 구성될 수 있다. 이런 식으로, 리소스 활용의 최적화에 관한 태스크는 다수의 컴퓨팅 노드 상에 분산될 수 있다. 다른 일부 실시형태에 있어서, 최적화 기술은 서버 컴퓨터 집합체(102)에 연결된 중앙 최적화 시스템(도시 생략) 상에서 구현될 수 있다.
최적화 기술의 도시하는 예에서는, 분석된 데이터 패킷은 제1 가상 머신(116A) 및 제3 가상 머신(116C)에 의해 실행된 상당수의 프로세스가 서로 통신함으로써 코어층(114)에서의 트래픽이 증가하는 것을 나타낼 수 있다. 또한, 분석된 데이터 패킷은, 제2 가상 머신(116B) 및 제4 가상 머신(116D)에 의해 실행된 상당수의 프로세스가 서로 통신함으로써 역시 코어층(114)에서의 트래픽이 증가하는 것을 나타낼 수 있다. 이 예에 있어서, 최적화 모듈(118)은 제1 가상 머신(116A)과 제3 가상 머신(116C)을 포함하는 제1 가상 머신 그룹과, 제2 가상 머신(116B)과 제4 가상 머신(116D)을 포함하는 제2 가상 머신 그룹을 생성하기에 적합할 수 있다.
가상 머신 그룹에 따라, 최적화 모듈(118)은 제3 가상 머신(116C)을 서버 컴퓨터의 제3 집합체(102C)로부터 서버 컴퓨터의 제2 집합체(102B)에 재배치하고, 제2 가상 머신(116B)을 서버 컴퓨터의 제2 집합체(102B)로부터 서버 컴퓨터의 제4 집합체(102D)에 재배치할 수 있다. 이런 식으로, 제1 가상 머신(116A)과 제3 가상 머신(116C) 사이와 제2 가상 머신(116B)과 제4 가상 머신(116D) 사이의 통신은 코어층(114)을 통해 트래픽을 라우팅하지 않고서 이루어질 수 있다. 최적화 모듈(118)의 동작에 관한 추가의 상세내용은 도 2-도 4를 참조하여 이하에서 더 상세하게 설명한다.
도 2는 여기에 개시하는 적어도 일부 실시형태에 따라 구성되는, 장치 집합체에서의 리소스 활용을 최적화하기에 적합한 프로세스(200)의 예를 나타내는 흐름도이다. 프로세스(200)는 하나 이상의 블록 202-208이 나타내는 다양한 동작, 기능, 또는 액션을 포함할 수 있다.
프로세스(200)는 블록 202(서버 컴퓨터 집합체 사이에 교환되는 데이터 패킷을 식별)에서 시작되는데, 이 경우 최적화 모듈(118)은 서버 컴퓨터 집합체(102) 사이에 교환되는 데이터 패킷을 식별하도록 구성될 수 있다. 일부 실시형태에 있어서, 최적화 모듈(118)은 그 각각의 서버 컴퓨터 집합체(102)로부터 또는 그 집합체(102)로 전송된 데이터 패킷을 캡쳐하도록 구성될 수 있다. 일부 실시형태에 있어서, 최적화 모듈(118)은 하드웨어 기반의 또는 소프트웨어 기반의 스니퍼(sniffer)로부터 캡쳐 데이터 패킷을 수신하도록 구성될 수 있다. 예를 들어, 서버 컴퓨터 집합체(102)는 데이터 패킷을 캡쳐하기에 적합한 네트워크 프로세서를 포함할 수 있다.
각각의 데이터 패킷은 소스 식별자, 목적지 식별자 및 데이터 패킷 사이즈 중 하나 이상을 포함할 수 있다. 예를 들어, 소스 식별자, 목적지 식별자 및 데이터 패킷 사이즈는 각 데이터 패킷의 헤더에 포함될 수 있다. 소스 식별자는 데이터 패킷을 전송하였거나 전송할 소스 어드레스를 특정할 수 있다. 목적지 식별자는 데이터 패킷이 수신되었거나 수신될 목적지 어드레스를 특정할 수 있다. 소스 어드레스와 목적지 어드레스는 인터넷 프로토콜("IP") 어드레스, 매체 액세스 제어("MAC") 어드레스, 또는 데이터 패킷의 소스 또는 목적지를 식별할 수 있는 기타 적절한 네트워크 어드레스일 수 있다. 데이터 패킷 사이즈는 데이터 패킷의 사이즈를 특정할 수 있다.
최적화 모듈(118)은 서버 컴퓨터 집합체(102)에서 동작하는 가상 머신에 의해 실행된 프로세스 간에 전송되는 데이터 패킷을 식별하도록 구성될 수 있다. 즉, 이들 데이터 패킷은 데이터 센터 내에서 전송될 수 있다. 최적화 모듈(118)은 소스 식별자 및 목적지 식별자가 서버 컴퓨터 집합체(102)에서 동작하는 가상 머신을 특정하는 데이터 패킷을 식별하도록 구성될 수 있다. 또한, 최적화 모듈(118)은 데이터 센터를 떠나기로 한 것을 목적지 식별자가 나타내는 데이터 패킷은 무시하기로 구성될 수 있다. 블록 202 다음에는 블록 204가 이어질 수 있다.
블록 204(식별된 데이터 패킷에 기초하여 매트릭스를 생성)에서, 최적화 모듈(118)은 식별된 데이터 패킷에 기초하여 매트릭스를 생성하도록 구성될 수 있다. 매트릭스는 다수 행, 다수 열, 다수 값을 포함할 수 있다. 각각의 값은 하나의 행과 하나의 열에 대응할 수 있다. 다양한 실시형태에 따르면, 행은 서버 컴퓨터 집합체(102)에 의해 실행된 가상 머신의 정렬 리스트에 대응할 수 있다. 마찬가지로, 열은 서버 컴퓨터 집합체에 의해 실행된 가상 머신의 동일한 정렬 리스트에 대응할 수 있다.
일부 구현예에 있어서, 각 행과 각 열을 낀 가상 머신은 데이터 패킷을 전송한 소스 가상 머신 아니면 데이터 패킷이 수신되는 목적지 가상 머신을 나타낼 수 있다. 결과적으로, 매트릭스는 그 매트릭스의 상측 대각부에서, 그 매트릭스의 하측 대각부에서와 동일한 값을 포함할 수 있다. 최적화 모듈(118)은 상측 또는 하측 대각부 중 하나를 선택하도록 구성될 수 있다. 최적화 모듈(118)은 또한 매트릭스의 상측 대각부와 하측 대각부를 분할하는 대각선은 무시하도록 구성될 수 있는데, 이들 값이 자기 자신과 통신하는 가상 머신을 나타낼 수 있기 때문이다. 매트릭스의 구성예에 대해서는 도 3을 참조하여 이하에서 더 상세하게 설명한다.
소스 식별자, 목적지 식별자 및 데이터 사이즈를 갖는 식별된 각각의 데이터 패킷에 대해, 최적화 모듈(118)은 소스 식별자를 하나의 행(또는 열)에 있는 하나의 가상 머신에 매칭시키고 목적지 식별자를 하나의 열(또는 하나의 행)에 있는 또다른 가상 머신에 매칭시키도록 구성될 수 있다. 매칭된 행과 매칭된 열은 하나의 값에 대응할 수 있다. 매칭된 행과 매칭된 열에 대응하는 값을 식별하면, 최적화 모듈(118)은 식별된 데이터 패킷의 데이터 사이즈를 값에 추가함으로써 그 값을 증가시키도록 구성될 수 있다. 식별된 패킷의 데이터 사이즈만큼 값을 증가시킴으로써, 매트릭스는 서버 컴퓨터 집합체(102)에서 동작하는 가상 머신쌍 사이에 전송되는 트래픽양의 레코드를 유지할 수 있다.
일부 실시형태에 있어서, 최적화 모듈(118)은 매트릭스의 값을 증가시키기 전에 매트릭스의 값을 제로 값이나 그외 다른 초기값으로 초기화하도록 구성될 수 있다. 또한, 최적화 모듈(118)은 값을 다시 초기값으로 주기적으로 리셋하도록 구성될 수 있다. 예를 들어, 가상 머신에 의해 실행된 프로세스는 예측 시간 프레임 내에서 시작 및 정지할 수 있다. 여기서, 최적화 모듈(118)은 더이상 실행되지 않을 것 같은 프로세스에 대응하는 값은 무시하기 위해, 예측 시간 프레임에 따라 값을 주기적으로 리셋하도록 구성될 수 있다. 리셋은 또한 가상 머신의 시동 또는 종료, 또는 기타 상태나 환경의 변화와 같은 이벤트에 의해 트리거될 수 있다. 블록 204 다음에는 블록 206이 이어질 수 있다.
블록 206(매트릭스 내의 값에 기초하여 가상 머신 그룹을 결정)에서, 최적화 모듈(118)은 매트릭스의 선택 대각선에 있는 값에 기초하여 가상 머신 그룹을 결정하도록 구성될 수 있다. 각각의 가상 머신 그룹은 2개 이상의 가상 머신을 포함할 수 있다. 최적화 모듈(118)은 네트워크 아키텍쳐(100)의 하위 레벨에서의 트래픽은 최대화되고 네트워크 아키텍쳐(100)의 코어층(114)에서의 트래픽은 최소화되는 식으로 가상 머신 그룹을 결정하도록 구성될 수 있다.
다양한 실시형태에 따르면, 최적화 모듈(118)은 그래프 문제를 해결함으로써 가상 머신 그룹을 결정하도록 구성될 수 있다. 다음과 같이, 그래프 문제를 개념적으로 기술할 수 있다. 다수의 코어 레벨 버킷(bucket)이 존재할 수 있다. 각각의 코어 레벨 버킷은 코어 네트워크와, 코어 네트워크 요소에 연결된 서버 컴퓨터 집합체를 나타낼 수 있다. 코어 네트워크 요소는 다수의 집적 네트워크 요소, 다수의 엣지 네트워크 요소, 및 다수의 서버 컴퓨터 집합체에 연결될 수 있다. 결과적으로, 코어 레벨 버킷은 최대 버킷이라서, 다른 버킷에 비교해 최대의 연산 파워량을 나타낼 수 있다.
각각의 코어 레벨 버킷은 다수의 집적 레벨 버킷을 포함할 수 있다. 각각의 집적 레벨 버킷은 집적 네트워크 요소와, 집적 네트워크에 연결된 서버 컴퓨터 집합체를 나타낼 수 있다. 집적 네트워크 요소는 다수의 엣지 네트워크 요소와 다수의 서버 컴퓨터 집합체에 연결될 수 있다. 결과적으로, 집적 레벨 버킷은 각각의 집적 레벨 버킷보다 작아서 더 적은 연산 파워량을 나타낼 수 있다.
각각의 집적 레벨 버킷은 다수의 엣지 레벨 버킷을 포함할 수 있다. 각각의 엣지 레벨 버킷은 엣지 네트워크 요소와, 그 엣지 네트워크 요소에 연결된 서버 컴퓨터 집합체를 나타낼 수 있다. 따라서, 엣지 레벨 버킷은 각각의 집적 레벨 버킷보다 작아서 최저의 연산 파워량을 나타낼 수 있다.
최적화 모듈(118)은 가상 머신을 각각의 엣지 레벨 버킷에 배치하도록 구성될 수 있다. 각각의 엣지 레벨 버킷, 그래서 각각의 집적 레벨 버킷과 각각의 코어 레벨 버킷은 그 엣지 레벨 버킷과 연관된 서버 컴퓨터 집합체의 연산 파워량에 대응하는 임계 개수의 가상 머신만 유지하기에 적합할 수 있다. 주어진 엣지 레벨 버킷에 배치된 가상 머신들은 가상 머신 그룹을 형성할 수 있다.
그래프 문제는 엣지층(106)에서의 트래픽은 최대화하고 또한 집적층(110)과 코어층(114)에서의 추가 트래픽을 최소화함으로써 해결될 수 있다. 솔루션 예는 파워, 연산 능력, 또는 기타 배치 제약 및 메트릭에 기초하여 가능한 제한들을 관찰할 수 있다. 가상 머신쌍 간의 트래픽은 2개의 가상 머신 간에 전달되는 데이터 트래픽양을 특정하는 교차값에 의해 정의될 수 있다. 그러한 교차값은 도 3을 참조하여 이하에서 더 상세하게 설명하는 매트릭스(300) 등의 매트릭스에 의해 정의될 수 있다.
일부 구현예에 있어서, 최적화 모듈(118)은 가상 머신쌍을 하나 이상의 엣지 레벨 버킷에 배치하도록 구성될 수 있다. 최적화 모듈(118)이 가상 머신쌍을 엣지 레벨 버킷에 배치할 때에, 최적화 모듈(118)은 각 엣지 레벨 버킷마다 엣지 레벨 스코어를 연산하도록 구성될 수 있다. 주어진 엣지 레벨 버킷의 엣지 레벨 스코어는 엣지 레벨 버킷에 포함된 각 가상 머신쌍의 교차값을 합산함으로써 연산될 수 있다.
최적화 모듈(118)은 각각의 엣지 레벨 버킷의 엣지 레벨 스코어를 최대화하도록 구성될 수 있다. 이런 식으로, 최적화 모듈(118)은 엣지층(106)에서의 트래픽을 최대화할 수 있다. 최적화 모듈(118)은 또한 집적층(110)과 코어층(114) 내의 트래픽을 최소화하도록 구성될 수 있다. 집적 레벨 버킷과 코어 레벨 버킷 내에서의 트래픽의 최소화에 대한 최적화 모듈(118)의 동작에 관한 추가 상세내용은 도 4를 참조하여 이하에서 설명한다.
최적화 모듈(118)은 리니어 프로그래밍, 그리디 알고리즘(greedy algorithm), 다이내믹 프로그래밍, 및 복잡한 그래프 문제를 해결할 수 있는 기타 기술을 통해 그래프 문제를 해결하도록 구성될 수 있다. 일부 실시형태에 있어서, 최적화 모듈(118)은 분산형 컴퓨팅 프레임워크를 통해 그래프 문제를 해결하기 위하여 MAP-REDUCE 및 HADOOP 기술을 이용하도록 구성될 수 있다. 블록 206 다음에는 블록 208이 이어질 수 있다.
블록 208(가상 머신 그룹에 따라 서버 컴퓨터 집합체 사이에서 가상 머신을 재배치)에서, 최적화 모듈(118)은 결정된 가상 머신 그룹에 기초하여 서버 컴퓨터 집합체(102) 사이에서 가상 머신을 재배치하도록 구성될 수 있다. 예를 들어, 주어진 엣지 레벨 버킷에 배치된 가상 머신들은, 엣지 네트워크 요소보다 크지 않는 것에 의해 분리되는 서버 컴퓨터 집합체(102)에 가상 머신을 함께 배치하는 식으로 배열될 수 있다.
일부 실시형태에 있어서, 최적화 모듈(118)은 레이지 재배치(lazy relocation)를 수행하도록 구성될 수 있다. 레이지 재배치에 있어서, 최적화 모듈(118)은 가상 머신에 의해 실행된 프로세스가 슬립 상태일 때에 가상 머신을 재배치하도록 구성될 수 있다. 이런 식으로, 가상 머신은 프로세스의 실행에 혼란을 일으키는 일없이 재배치될 수 있다. 일부 다른 실시형태에 있어서, 최적화 모듈(118)은 적극적 재배치(aggressive relocation)를 수행하도록 구성될 수 있다. 적극적 재배치에 있어서, 최적화 모듈(118)은 프로세스가 실행되고 있을 때라도 가상 머신을 재배치하도록 구성될 수 있다. 최적화 모듈(118)은 프로세스의 실행을 일시 정지시켜, 가상 머신을 재배치한 다음 그 프로세스의 실행을 재개하도록 구성될 수 있다. 레이지 및 기타 유형의 재배치 사이의 선택은 다양한 실시형태에 따라, 코어층의 혼잡 수준 또는 기타 위급상황의 표시자에 종속될 수 있다. 블록 208 후에, 프로세스(200)는 반복하거나(예컨대, 주기적으로, 연속적으로, 또는 필요시 요구에 따라) 아니면 종료될 수 있다.
도 3은 본 명세서에 개시한 적어도 일부 실사형태에 따라 배열된 매트릭스(300)의 일부의 구현예를 도시하는 도면이다. 매트릭스(300)는 다수의 행(302A-302E)과 다수의 열(304A-304E)을 포함할 수 있다. 매트릭스(300)는 값(306A-306Y) 등의 다수의 값을 더 포함할 수 있다. 값(306A-306Y) 각각은 행(302A-302E) 중 하나와 열(304A-304E) 중 하나에 대응할 수 있다. 행(302A-302E)은 가상 머신 A 내지 가상 머신 E라고 표시된 가상 머신 정렬 리스트에 대응할 수 있다. 열(304A-304E)은 가상 머신 A 내지 가상 머신 E라고 표시된 동일한 가상 머신 정렬 리스트에 대응할 수 있다.
소스 식별자, 목적지 식별자 및 데이터 패킷 사이즈를 갖는 각각의 식별된 데이터 패킷에 있어서, 최적화 모듈(118)은 소스 식별자와 매칭하는 행(302A-302E) 중 하나와, 목적지 식별자와 매칭하는 열(304A-304E) 중 하나를 식별하도록 구성될 수 있다. 예를 들어, 매칭된 행은 행 302B이고 매칭된 열은 열 304D일 수 있다. 매칭된 행(302B)과 매칭된 열(304D)은 값(306Q)에 대응할 수 있다. 최적화 모듈(118)은 데이터 패킷 사이즈를 값(306Q)에 추가하도록 구성될 수 있다.
또한, 최적화 모듈(118)은 소스 식별자와 매칭하는 열(304A-304E) 중 하나와, 소스 식별자와 매칭하는 행(302A-302E) 중 하나를 식별하도록 구성될 수 있다. 이전 예에 이어서, 매칭된 열은 304B이고 매칭된 행은 302D일 수 있다. 매칭된 열(304B)과 매칭된 행(302D)는 값(306I)에 대응할 수 있다. 최적화 모듈(118)은 데이터 패킷 사이즈를 값(306I)에 추가하도록 구성될 수 있다.
도 3에 도시하는 바와 같이, 값 306I와 값 306Q는 용장적일 수 있다. 구체적으로, 매트릭스(300)는 하측 대각부와 상측 대각부로 분할될 수 있다. 도 3에서 수직 해칭으로 표시하는 하측 대각부는 값 306B-306E, 306H-306J, 306N-306O, 및 306T를 포함할 수 있다. 도 3에서 수평 해칭으로 표시하는 상측 대각부는 값 306F, 306K-306L, 306P-306R, 및 306U-306X를 포함할 수 있다. 하측 대각부와 상측 대각부가 용장값을 포함할 수 있기 때문에, 최적화 모듈(118)이 매트릭스(300)를 분석하여 가상 머신 그룹을 생성할 경우에 최적화 모듈(118)은 하측 대각부 아니면 상측 대각부를 무시하도록 구성될 수 있다. 최적화 모듈(118)은 또한 매트릭스의 대각선을 낀 값 306A, 306G, 306M, 306S 및 306Y은 이들 값이 자기 자신과 통신하는 가상 머신을 나타낼 수 있기 때문에 무시하도록 구성될 수 있다.
도 4는 본 명세서에 개시하는 적어도 일부 실시형태에 따라 배열된, 개념화한 그래프 문제의 표현(400) 예를 도시하는 도면이다. 개념화한 표현(400)은 도 1의 네트워크 아키텍쳐(100)에 대응할 수 있다. 개념화한 표현(400)은 코어 레벨 버킷(402)을 포함할 수 있다. 코어 레벨 버킷(402)은 제1 집적 레벨 버킷(404A)과 제2 집적 레벨 버킷(404B)을 포함할 수 있다. 집적 레벨 버킷(404A, 404B)을 총칭하여 집적 레벨 버킷(404)이라고도 할 수 있다.
제1 집적 레벨 버킷(404A)은 제1 집적 네트워크 요소(108A)에 대응할 수 있고, 제2 집적 레벨 버킷(404B)은 제2 집적 네트워크 요소(108B)에 대응할 수 있다. 제1 집적 레벨 버킷(404A)은 제1 엣지 레벨 버킷(406A)과 제2 엣지 레벨 버킷(406B)을 포함할 수 있다. 제1 엣지 레벨 버킷(406A)은 제1 엣지 네트워크 요소(104A)에 대응할 수 있고, 제2 엣지 레벨 버킷(406B)은 제2 엣지 네트워크 요소(104B)에 대응할 수 있다. 제2 집적 레벨 버킷(404B)은 제3 엣지 레벨 버킷(406C)과 제4 엣지 레벨 버킷(406D)을 포함할 수 있다. 제3 엣지 레벨 버킷(406C)은 제3 엣지 네트워크 요소(104C)에 대응할 수 있고, 제4 엣지 레벨 버킷(406D)은 제4 엣지 네트워크 요소(104D)에 대응할 수 있다. 엣지 레벨 버킷(406A-406D)을 총칭하여 엣지 레벨 버킷(406)이라고도 할 수 있다.
도시하는 예에서는, 최적화 모듈(118)이 제1 가상 머신(408A)과 제2 가상 머신(408B)을 제1 엣지 레벨 버킷(406A)에 배치할 수 있다. 공간을 고려하여, 도 4에서는 각 가상 머신을 "VM"으로 표시한다. 최적화 모듈(118)은 제3 가상 머신(408C)과 제4 가상 머신(408D)을 제2 엣지 레벨 버킷(406B)에 배치할 수 있다. 최적화 모듈(118)은 제5 가상 머신(408E)과 제6 가상 머신(408F)을 제3 엣지 레벨 버킷(406C)에 배치할 수 있다. 최적화 모듈(118)은 제7 가상 머신(408G)과 제8 가상 머신(408H)을 제4 엣지 레벨 버킷(406D)에 배치할 수 있다. 가상 머신(408A-408H)을 총칭하여 가상 머신(408)이라고도 할 수 있다.
도 2를 참조하여 전술한 바와 같이, 최적화 모듈(118)은 엣지층(106)에서의 트래픽을 최대화하도록 구성될 수 있다. 엣지층(106)에서의 트래픽을 최대화하기 위해, 최적화 모듈(118)은 엣지 레벨 버킷(406) 각각의 엣지 레벨 스코어를 최대화하도록 구성될 수 있다. 예를 들어, 제1 엣지 레벨 버킷(406A)의 엣지 레벨 스코어는 제1 가상 머신(408A)과 제2 가상 머신(408B) 간의 데이터 트래픽양을 특정하는 교차값일 수 있다. 추가 가상 머신쌍이 제1 엣지 레벨 버킷(406A)에 배치되면, 제1 엣지 레벨 버킷(406A)의 엣지 레벨 스코어는 추가의 가상 머신 쌍의 교차값만큼 증가할 수 있다. 최적화 모듈(118)은 일부 실시형태에 따라 매트릭스(300)로부터 교차값을 검색하도록 구성될 수 있다.
도 2를 참조하여 전술한 바와 같이, 최적화 모듈(118)은 또한 집적층(110)과 코어층(114)에서의 추가 트래픽을 최소화하도록 구성될 수 있다. 집적층(110)에서의 트래픽을 최소화하기 위해, 최적화 모듈(118)은 집적 레벨 버킷(404) 각각의 집적 레벨 스코어를 최소화하도록 구성될 수 있다. 예를 들어, 제1 집적 레벨 버킷(404A)의 집적 레벨 스코어는, 제1 엣지 레벨 버킷(406A)에서 하나의 가상 머신(예컨대, 제1 가상 머신 408A)을 선택하고 제2 엣지 레벨 버킷(406B)에서 다른 가상 머신(예컨대, 제3 가상 머신 408C)을 선택한 가상 머신쌍 간의 교차값의 합일 수 있다.
코어층(114)에서의 트래픽을 최소화하기 위해, 최적화 모듈(118)은 코어 레벨 버킷(402)의 코어 레벨 스코어를 최소화하도록 구성될 수 있다. 예를 들어, 코어 레벨 버킷(402)의 코어 레벨 스코어는, 제1 집적 레벨 버킷(404A)에서 하나의 가상 머신(예컨대, 제2 가상 머신 408B)을 선택하고 제2 집적 레벨 버킷(404B)에서 다른 가상 머신(예컨대, 제8 가상 머신 408H)을 선택한 가상 머신 쌍 간의 교차값의 합일 수 있다. 최적화 모듈(118)은 집적 레벨 버킷(404)의 집적 레벨 스코어와 코어 레벨 버킷(402)의 코어 레벨 스코어를 최소화하는 식으로 엣지 레벨 버킷(406)의 엣지 레벨 스코어를 최대화하도록 구성될 수 있다. 이렇게, 최적화 모듈(118)은 엣지층(106)에서의 트래픽은 최대화하고 또한 집적층(110)과 코어층(114)에서의 추가 트래픽은 최소화할 수 있다.
도 5는 본 명세서에 개시하는 적어도 일부 실시형태에 따라 구성된, 예시적인 컴퓨팅 시스템에 대한 컴퓨터 하드웨어 아키텍쳐를 도시하는 블록도이다. 도 5는 프로세서(510), 메모리(520) 및 하나 이상의 드라이브(530)를 포함하는 컴퓨터(500)를 포함한다. 컴퓨터(500)는 통상의 컴퓨터 시스템, 임베디드 컨트롤 컴퓨터, 랩탑 또는 서버 컴퓨터, 모바일 장치, 셋톱 박스, 키오스크, 차랑 정보 시스템, 모바일폰, 맞춤형 머신, 또는 기타 하드웨어 플랫폼으로서 구현될 수 있다. 프로세서(510)는 최적화 모듈(118)을 포함한 도 1에 도시하는 로직을 구현하도록 구성될 수 있다. 최적화 모듈(118)은 도 2를 참조하여 전술한 프로세스를 구현하도록 구성될 수 있다.
드라이브(530)와 그 연관된 컴퓨터 기억 매체는 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(500)에 관한 기타 데이터의 스토리지를 제공한다. 드라이브(530)는 운영체제(540), 애플리케이션 프로그램(550), 프로그램 모듈(560) 및 데이터베이스(580)를 포함할 수 있다. 컴퓨터(500)는 사용자가 커맨드 및 데이터를 입력할 수 있는 사용자 입력 장치(590)를 더 포함한다. 입력 장치는 전자 디지타이저, 마이크, 키보드, 및 흔히 마우스, 트랙볼 또는 터치 패드라고 칭해지는 포인팅 장치를 포함할 수 있다. 기타 입력 장치는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다.
이들 및 기타 입력 장치는 프로세서(510)에, 시스템 버스에 연결된 사용자 입력 인터페이스를 통해 연결될 수도 있지만, 병렬 포트, 게임 포트 또는 유니버셜 시리얼 버스("USB") 등의 기타 인터페이스 및 버스 구조에 의해 연결될 수도 있다. 컴퓨터(500) 등의 컴퓨터는 스피커 등의 기타 주변 출력 장치를 포함할 수 있는데, 이들은 출력 주변장치 인터페이스(594) 등을 통해 연결될 수 있다.
컴퓨터(500)는 네트워크 인터페이스(596)에 연결된 원격 컴퓨터 등의 하나 이상의 컴퓨터에의 논리적 접속을 이용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 기타 공통 네트워크 노드일 수 있으며, 컴퓨터(500)에 관하여 전술한 요소들의 다수 또는 전부를 포함할 수 있다. 네트워크 환경이 사무실, 엔터프라이즈 원거리 네트워크("WAN"), 근거리 네트워크("LAN), 인트라넷, 및 인터넷에서 흔하다.
컴퓨터(500)는 LAN 또는 WLAN 네트워크 환경에서 이용될 경우, 네트워크 인터페이스(596) 또는 어댑터를 통해 LAN에 연결될 수 있다. 컴퓨터(500)는 WAN 네트워크 환경에서 이용될 경우, 통상 인터넷이나 네트워크(508)와 같이, 모뎀 또는 WAN 상에서 통신을 확립하기 위한 기타 수단을 포함한다. WAN은 인터넷, 도시하는 네트워크(508), 다양한 기타 네트워크, 또는 이들의 임의의 조합을 포함할 수 있다. 컴퓨터 사이에 통신 링크, 링, 메시, 버스, 클라우드 또는 네트워크를 확립하는 기타 메커니즘이 이용될 수 있는 것은 물론이다.
일부 실시형태에 따르면, 컴퓨터(500)는 네트워크 환경에 연결될 수 있다. 컴퓨터(500)는 물리적인 컴퓨터 판독 가능한 기억 매체, 또는 드라이브(530)나 기타 스토리지 장치와 연관된 매체의 하나 이상의 인스턴스를 포함할 수 있다. 시스템 버스는 프로세서(510)로 하여금 컴퓨터 판독 가능한 기억 매체에 대해 코드 및/또는 데이터를 판독하게 할 수 있다. 매체는 반도체, 자기 재료, 광학 매체, 전기 스토리지, 전자기 스토리지, 또는 그외 다른 스토리지 기술을 포함하나 이에 한정되지 않는 임의의 적절한 기술을 이용하여 구현되는 스토리지 요소 형태의 장치를 나타낼 수 있다. 매체는 RAM, ROM, 플래시 또는 다른 유형의 휘발성이나 비휘발성 메모리 기술의 특징을 갖는지 간에, 메모리(520)와 연관된 구성요소를 나타낼 수 있다. 또한, 매체는 스토리지 드라이브(530)로서 또는 다른 식으로 구현되던지 간에, 2차 스토리지를 나타낼 수 있다. 하드 드라이브 구현예는 솔리드 스테이트의 특징을 갖거나 자기적으로 인코딩된 정보를 저장하는 회전식 매체를 포함할 수 있다.
기억 매체는 하나 이상의 프로그램 모듈(560)을 포함할 수 있다. 프로그램 모듈(560)은 프로세서(510)에 로딩되어 실행될 때에, 범용 컴퓨팅 시스템을 전용 컴퓨팅 시스템으로 변형하는 소프트웨어 명령어를 포함할 수 있다. 본 명세서 전반에서 상세하게 설명한 바와 같이, 프로그램 모듈(560)은 컴퓨터(500)가 구성요소, 로직 플로우, 및/또는 여기에 언급한 데이터 구조를 이용하여 전체 시스템 또는 동작 환경 내에 참여할 수 있는 다양한 툴 또는 기술을 제공할 수 있다.
프로세서(510)는 개별적으로 또는 집합적으로 임의개의 스테이트를 상정할 수 있는 임의개의 트랜지스터 또는 기타 회로 소자로 구성될 수 있다. 더욱 구체적으로, 프로세서(510)는 스테이트 머신 또는 유한 스테이트 머신으로서 동작할 수 있다. 그러한 머신은 제2 머신으로, 또는 프로그램 모듈(560) 내에 포함된 실행 가능한 명령어를 로딩함으로써 특정 머신으로 변형될 수 있다. 이들 컴퓨터 실행 가능한 명령어는 프로세서(510)가 스테이스 사이에서 천이하는 방법을 특정함으로써 프로세서(510)를 변형하여, 프로세서(510)를 구성하는 트랜지스터 또는 기타 회로를 제1 머신에서 제2 머신으로 변형할 수 있다. 또한, 양쪽 머신의 스테이트는 하나 이상의 사용자 입력 장치(590), 네트워크 인터페이스(596), 기타 주변장치, 기타 인터페이스, 또는 1인 이상의 사용자나 기타 작동자(actor)로부터 입력을 수신함으로써 변형될 수도 있다. 양쪽 머신은 또한 프린터, 스피커, 비디오 디스플레이 또는 다른 식의 다양한 출력 장치의 스테이트 또는 다양한 물리적 특성을 변형할 수 있다.
프로그램 모듈(560)을 인코딩하는 것 역시 기억 매체의 물리적 구조를 변형할 수 있다. 물리적 구조의 특정 변형은 본 명세서의 상이한 구현예들에 있어서 다양한 요인에 종속될 수 있다. 그러한 요인의 예는 기억 매체가 1차 또는 2차 스토리지 등의 특징을 갖던지 간에, 그 기억 매체를 구현하는데 이용된 기술을 포함할 수 있으나 이에 한정되지는 않는다. 예를 들어, 기억 매체가 반도체 기반의 메모리로서 구현되면, 프로그램 모듈(560)은 소프트웨어가 거기에 인코딩될 때에 반도체 메모리(520)의 물리적 스테이트를 변형할 수 있다. 예를 들어, 소프트웨어는 반도체 메모리(520)를 구성하는 트랜지스터, 커패시터 또는 기타 개별 회로의 스테이트를 변형할 수 있다.
다른 예로서, 기억 매체는 드라이브(530) 등의 자기 또는 광학 기술을 이용하여 구현될 수 있다. 그러한 구현예에서는 프로그램 모듈(560)은 소프트웨어가 거기에 인코딩될 때에 자기 또는 광학 매체의 물리적 스테이트를 변형할 수 있다. 이들 변형은 주어진 자기 매체 내의 특정 장소의 자기 특성(magnetic characteristics)을 변경하는 것을 포함할 수 있다. 이들 변형은 또한 주어진 광학 매체 내의 특정 장소의 물리적 특징 또는 특성을 변경하거나 이들 장소의 광학 특성을 변화시키는 것을 포함할 수 있다. 본원의 범위 및 사상에서 벗어나는 일 없이 물리적 매체의 다양한 기타 변형이 가능한 것은 물론이다.
도 6은 본 명세서에 개시한 적어도 일부 실시형태에 따라 구성된, 컴퓨팅 장치 상에서 컴퓨터 프로세스를 실행하는 컴퓨터 프로그램을 포함하는 컴퓨터 프로그램 제품(600)을 도시하는 개략도이다. 도시하는 실시형태의 컴퓨터 프로그램 제품 예는 신호 포함 매체(signal bearing medium)(602)를 이용하여 제공되며, 서버 컴퓨터 집합체 상에서 실행된 프로세스 간에 교환되는 패킷을 식별하기 위한 하나 이상의 명령어, 식별된 패킷에 기초하여 가상 머신 그룹을 결정하기 위한 하나 이상의 명령어, 또는 가상 머신 그룹에 따라 서버 컴퓨터 집합체 사이에서 가상 머신을 재배치하기 위한 하나 이상의 명령어 중 적어도 하나의 명령어(604)를 포함할 수 있다. 일부 실시형태에 있어서, 하나 이상의 컴퓨터 프로그램 제품(600)의 신호 포함 매체(602)는 컴퓨터 판독 가능한 매체(606), 기록 가능한 매체(608) 및/또는 통신 매체(610)을 포함한다.
본 명세서에 기술한 발명의 대상이, 컴퓨터 시스템 상에서 운영체제 및 애플리케이션 프로그램의 실행과 함께 실행하는 일반적인 상황의 프로그램 모듈로 개시되지만, 당업자라면 다른 구현예가 다른 유형의 프로그램 유형과 함게 수행될 수 있음을 이해할 것이다. 일반적으로, 프로그램 모듈은 루틴, 프로그램, 컴포넌트, 데이터 구조, 및 특정 태스크를 수행하거나 특정의 추상 데이터형을 구현하는 기타 유형의 구조를 포함한다. 더욱이, 당업자라면, 핸드헬드 장치, 멀티코어 프로세서 시스템, 마이크로프로세서 기반의 또는 프로그래머블 가전제품, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함한 기타 컴퓨터 시스템으로 실시될 수 있음을 이해할 것이다.
본 개시는 다양한 양태의 예시로서 의도된 본원에 기재한 특정 실시형태들의 용어로 한정되어서는 안된다. 당업자에게는 명백하겠지만, 그 사상 및 범위 내에서 벗어나지 않고 다수의 변형 및 변화가 이루어질 수 있다. 본 명세서에 설명한 것과 함께, 본 개시의 범위 내에 있는 기능적으로 동등한 방법 및 장치가 전술한 설명으로부터 당업자에게 명백할 것이다. 그러한 변형 및 변화는 첨부하는 특허청구범위의 범위 내에 있는 것으로 의도된다. 본 개시는 첨부하는 특허청구범위와 동류의 범위 전체와 함께, 이 특허청구범위에 관해서만 제한되어야 한다. 본 개시는 특정 방법, 시약, 화합물 조성 또는 생물학적 시스템에 한정되지 않으며 물론 변할 수 있는 것은 당연하다. 또한, 여기에 사용된 용어는 특정 실시형태를 설명하는 용도만을 위한 것이며, 제한적으로 의도되지 않은 것도 물론이다.
실질적으로 임의의 복수 및/또는 단수 용어의 사용에 있어서, 당업자라면 문맥 및/또는 적용에 따라 적절하게 그 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수 치환이 명확성을 위해 여기에 표현적으로 제시될 수 있다.
본 개시, 특히 첨부된 특허청구범위(예를 들어, 첨부된 특허청구범위의 본문)에 사용된 용어는 일반적으로 "개방형" 용어로서 의도된 것임을 당업자는 이해할 것이다[예를 들어, 용어 "포함하는(including)"은 "포함하지만 이로 한정되는 것은 아닌"으로 해석되어야 하며, 용어 "갖는(having)"은 "적어도 가지는" 것으로 해석되어야 하며, 용어 "포함한다(includes)"는 "포함하지만 이에 한정되는 것은 아닌" 등으로 해석되어야 함]. 도입된 청구항 기재에 대해 특정한 개수가 의도되는 경우에, 그러한 의도는 청구항에 명시적으로 기재될 것이며, 그러한 기재가 없는 경우는 그러한 의도가 존재하지 않음을 당업자라면 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 다음에 첨부된 특허청구범위는 청구항 기재를 도입하기 위해, 도입 어구 "적어도 하나(at least one)"와 "하나 이상(one or more)"를 사용할 수 있다. 그러나, 이러한 어구의 사용은, 동일한 청구항이 도입 어구 "하나 이상" 또는 "적어도 하나" 및 특정 숫자를 언급하지 않는 경우에도, 이러한 도입된 청구항 기재를 포함하는 임의의 특정 청구항이 이러한 기재 하나만을 포함하는 실시형태로 한정되는 것을 의미하는 것으로 해석되어서는 안되며(예를 들어, 특정 숫자가 언급되지 않은 경우, 통상적으로 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 해석되어야 함), 청구항 기재를 도입하는데 사용되는 정관사의 이용에 대해서도 동일하게 해석되어야 한다. 부가적으로, 특정한 개수로 도입된 청구항 기재가 명시적으로 언급되는 경우에도 당업자는 이러한 기재가 일반적으로 적어도 기재된 개수를 의미하는 것으로 해석하여야 함을 인식할 것이다[예를 들어, 다른 수식어구 없이 "두 개의 기재(two recitations)"의 있는 그대로의 기재는 일반적으로 적어도 두 개의(at least two) 기재들 또는 둘 이상(two or more)의 기재들"을 의미함]. 또한, "A, B 및 C 등 중 적어도 하나"와 유사한 약속이 사용되는 예들에서, 일반적으로 이러한 구성은 당업자가 이러한 약속을 이해하는 방식으로 의도된다(예, "A, B 및 C 중 적어도 하나를 가진 시스템"은 A만을 가지거나, B만을 가지거나, C만을 가지거나, A와 B 모두를 가지거나, A와 C 모두를 가지거나, B와 C 모두를 가지거나, A, B 및 C 모두를 가지는 시스템들을 포함하되, 이에 한정되지는 않음). "A, B 또는 C 등 중 적어도 하나"와 유사한 약속이 사용되는 예들에서, 일반적으로 이러한 구성은 이러한 약속이 당업자가 이해하는 방식으로 의도된다(예, "A, B 또는 C 중 적어도 하나를 가진 시스템"은 A만 가지거나, B만 가지거나, C만 가지거나, A와 B 모두를 가지거나, A와 C 모두를 가지거나, B와 C 모두를 갖거나/가지거나 A, B, C 모두 등을 갖는 시스템을 포함하되, 이에 한정되지 않음). 또한, 당업자는, 둘 또는 그 이상의 택일적 용어들을 제시하는 사실상 임의의 이접적 접속(disjunctive) 단어 및/또는 어구가, 상세한 설명, 특허청구범위 또는 도면에서, 그러한 용어들 중 하나, 그러한 용어들 중 어느 하나, 또는 그러한 용어 둘 모두를 포함하여 구성될 수 있는 것으로 이해할 수 있을 것이다. 예를 들어, 어구 "A 또는 B"는 "A" 또는 "B" 또는 "A" 및 "B"의 가능성들을 포함하는 것으로 이해될 것이다.
또한, 본 개시의 특징 또는 양태가 마쿠시(Markush) 그룹의 형태로 기재되는 경우에, 당업자라면 본 개시가 또한 마쿠시 그룹의 임의의 개별 멤버 또는 멤버의 하위그룹의 형태로 기재되는 것을 이해할 것이다.
당업자라면 이해하겠지만, 임의의 그리고 모든 목적을 위해, 기록된 설명의 제공과 관련하여, 여기에 개시된 모든 범위는 임의의 그리고 모든 가능한 하위 범위 및 그 하위 범위의 조합도 역시 포함한다. 임의의 나열하는 범위는 적어도 절반으로, 3등분으로, 4등분으로, 5등분으로, 10등분 등등으로 분해되는 동일한 범위를 충분히 기재하고 가능하게 하는 것으로서 쉽게 이해될 수 있다. 비제한적인 예로서, 여기에 설명한 각각의 범위는 3분의 상위부, 3분의 중간부, 및 3분의 하위부 등등으로 용이하게 분해될 수 있다. 또한, 당업자라면 이해하겠지만, "까지", "적어도" 등과 같은 모든 언어는 열거한 수를 포함하며 실질적으로 전술한 바와 같은 하위 범위로 분해될 수 있는 범위를 지칭한다. 마지막으로, 당업자라면 이해하겠지만, 범위는 각각의 개벨 멤버를 포함한다. 그러므로, 예를 들어 1-3개의 셀을 갖는 그룹은 1, 2, 또는 3개의 셀을 갖는 그룹들을 지칭한다. 마찬가지로, 1-5개의 셀을 갖는 그룹은 1개, 2개, 3개, 4개 또는 5개 셀을 갖는 그룹들 등을 지칭한다.
본 명세서에 다양한 양태 및 실시형태를 개시하였지만, 당업자에게는 다른 양태 및 실시형태가 분명할 것이다. 따라서, 여기에 개시한 다양한 실시형태들은 이어지는 제한적인 것으로 의도되지 않으며 진정한 범위 및 사상은 이어지는 청구범위에서 표시된다.

Claims (20)

  1. 복수의 계층적 네트워크 층을 포함하는 장치 집합체에서의 리소스 활용을 최적화하기 위한 방법에 있어서,
    상기 복수의 계층적 네트워크 층이 연결하는 서버 컴퓨터 집합체 상에서 가상 머신에 의해 실행된 복수의 프로세스 간에 교환되는 복수의 패킷을 식별하는 것과,
    상기 복수의 계층적 네트워크 층의 상위층을 이용하여 제2 가상 머신과 통신하는 제1 가상 머신을 포함하는 하나 이상의 가상 머신 쌍을 식별하는 것과,
    상기 복수의 계층적 네트워크 층의 하위층을 이용하여 상기 제1 가상 머신과 상기 제2 가상 머신이 통신하도록, 상기 하나 이상의 가상 머신 쌍 내의 하나 이상의 상기 제1 가상 머신 또는 상기 제2 가상 머신을 상기 서버 컴퓨터 집합체 내의 다른 서버 컴퓨터로 재배치하는 것을 포함하고, 상기 하위층은 상기 서버 컴퓨터 집합체에 연결되는 제1 복수의 네트워크 요소를 포함하는 하나 이상의 엣지층 또는 집적층(aggregation layer)이고, 상기 상위층은 상기 제1 복수의 네트워크 요소에 연결되되 네트워크에 연결되는 제2 복수의 네트워크 요소를 포함하는 코어층을 포함하며, 상기 재배치는 상기 복수의 계층적 네트워크 층의 하위층에서의 데이터 트래픽을 증가시키되 상기 복수의 계층적 네트워크 층의 상위층에서의 데이터 트래픽을 감소시키도록 구성되는 것인, 리소스 활용 최적화 방법.
  2. 제1항에 있어서, 상기 식별된 복수의 패킷 내의 소스 식별자, 목적지 식별자 및 데이터 사이즈에 기초하여, 상기 식별된 복수의 패킷에 기초한 복수의 가상 머신 그룹을 결정하는 것을 더 포함하는 리소스 활용 최적화 방법.
  3. 제2항에 있어서, 상기 복수의 패킷 각각의 헤더로부터 상기 소스 식별자, 상기 목적지 식별자 및 데이터 사이즈를 검색하는 것을 더 포함하는 리소스 활용 최적화 방법.
  4. 제2항에 있어서, 상기 복수의 가상 머신 그룹을 결정하는 것은,
    복수의 행, 복수의 열 및 복수의 값 - 상기 복수의 값 각각은 상기 복수의 행 중 하나와 상기 복수의 열 중 하나에 대응하고, 상기 복수의 행은 복수의 소스 식별자와 연관되며, 상기 복수의 열은 복수의 목적지 식별자와 연관됨 - 을 갖는 매트릭스를 생성하는 것과,
    상기 복수의 패킷 각각마다, 상기 복수의 값 중 상기 소스 식별자 및 상기 목적지 식별자에 대응하는 값에 상기 데이터 사이즈를 추가하는 것과,
    상기 복수의 가상 머신 그룹 각각이 임계치보다 적은 수의 가상 머신을 포함하도록 그리고 상기 복수의 가상 머신 그룹이 스코어 - 상기 스코어는 상기 복수의 가상 머신 그룹 각각에 있는 가상 머신에 의해 실행된 통신 프로세스에 대응하는 값의 총계임 - 를 최대화하도록 복수의 가상 머신 그룹을 결정하는 것을 포함하는 것인 리소스 활용 최적화 방법.
  5. 제4항에 있어서, 상기 임계치는 상기 서버 컴퓨터 집합체 중 하나가 실행할 수 있는 가상 머신의 최대수를 포함하는 것인 리소스 활용 최적화 방법.
  6. 제4항에 있어서, 상기 복수의 가상 머신 그룹을 결정하는 것은, 리니어 프로그래밍, 다이내믹 프로그래밍 또는 그리디 알고리즘(greedy algorithm)을 통해 상기 복수의 가상 머신 그룹을 결정하는 것을 포함하는 것인 리소스 활용 최적화 방법.
  7. 제4항에 있어서, 상기 매트릭스 내의 상기 복수의 값을 주기적으로 리셋하는 것을 더 포함하는 리소스 활용 최적화 방법.
  8. 제2항에 있어서, 상기 복수의 가상 머신 그룹을 결정하는 것은, 분산형 컴퓨팅 프레임워크를 통해 상기 복수의 가상 머신 그룹을 결정하는 것을 포함하는 것인 리소스 활용 최적화 방법.
  9. 제1항에 있어서, 상기 식별된 복수의 패킷에 기초한 복수의 가상 머신 그룹을 결정하는 것을 더 포함하고, 상기 복수의 가상 머신 그룹 각각은 상기 복수의 프로세스 중 하나 이상의 프로세스를 실행하도록 상기 서버 컴퓨터 집합체 상에서 구성된 하나 이상의 가상 머신을 식별하는 것인 리소스 활용 최적화 방법.
  10. 제1항에 있어서, 상기 복수의 계층적 네트워크 층은 상기 제1 복수의 네트워크 요소에 연결된 제3 복수의 네트워크 요소를 포함하는 것인 리소스 활용 최적화 방법.
  11. 제1항에 있어서, 상기 서버 컴퓨터 집합체 상에서 실행된 복수의 프로세스 간에 교환되는 복수의 패킷을 식별하는 것은, 상기 서버 컴퓨터 집합체 상에서 실행되는 소프트웨어를 통해 상기 복수의 패킷을 캡쳐하는 것을 포함하는 것인 리소스 활용 최적화 방법.
  12. 제1항에 있어서, 상기 서버 컴퓨터 집합체 상에서 실행된 복수의 프로세스 간에 교환되는 복수의 패킷을 식별하는 것은, 상기 서버 컴퓨터 집합체 상에 구성된 하드웨어를 통해 상기 복수의 패킷을 캡쳐하는 것을 포함하는 것인 리소스 활용 최적화 방법.
  13. 제1항에 있어서, 상기 재배치하는 것은, 가상 머신이 아이들(idle) 상태일 때에 상기 가상 머신을 이동시키는 레이지 재배치(lazy relocation)를 수행하는 것을 포함하는 것인 리소스 활용 최적화 방법.
  14. 컴퓨터 실행 가능한 명령어가 저장되어 있는 비일시적 컴퓨터 판독 가능 매체에 있어서, 상기 컴퓨터 실행 가능한 명령어는 컴퓨터에 의해 실행될 때에 상기 컴퓨터로 하여금,
    복수의 계층적 네트워크 층이 연결하는 서버 컴퓨터 집합체 상에서 가상 머신에 의해 실행된 복수의 프로세스 간에 교환되는 복수의 패킷을 식별하게 하고,
    상기 복수의 계층적 네트워크 층의 상위층을 이용하여 제2 가상 머신과 통신하는 제1 가상 머신을 포함하는 하나 이상의 가상 머신 쌍을 식별하게 하고,
    상기 복수의 계층적 네트워크 층의 하위층을 이용하여 상기 제1 가상 머신과 상기 제2 가상 머신이 통신하도록, 상기 하나 이상의 가상 머신 쌍 내의 하나 이상의 상기 제1 가상 머신 또는 상기 제2 가상 머신을 상기 서버 컴퓨터 집합체 내의 다른 서버 컴퓨터로 재배치하게 하고, 상기 하위층은 상기 서버 컴퓨터 집합체에 연결되는 제1 복수의 네트워크 요소를 포함하는 하나 이상의 엣지층 또는 집적층이며, 상기 상위층은 상기 제1 복수의 네트워크 요소에 연결되되 네트워크에 연결되는 제2 복수의 네트워크 요소를 포함하는 코어층을 포함하고, 상기 재배치는 상기 복수의 계층적 네트워크 층의 하위층에서의 데이터 트래픽을 증가시키되 상기 복수의 계층적 네트워크 층의 상위층에서의 데이터 트래픽을 감소시키도록 구성되는 것인, 비일시적 컴퓨터 판독 가능 매체.
  15. 제14항에 있어서, 상기 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 실행가능한 명령어를 더 포함하며, 상기 컴퓨터 실행가능한 명령어는, 컴퓨터에 의해 실행될 때에, 상기 컴퓨터로 하여금, 상기 식별된 복수의 패킷 내의 소스 식별자, 목적지 식별자 및 데이터 사이즈에 기초하여 복수의 가상 머신 그룹을 결정하게 하는 것인 비일시적 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서, 상기 복수의 가상 머신 그룹을 결정하게 하는 것은,
    복수의 행, 복수의 열 및 복수의 값 - 상기 복수의 값 각각은 상기 복수의 행 중 하나와 상기 복수의 열 중 하나에 대응하고, 상기 복수의 행은 복수의 소스 식별자와 연관되며, 상기 복수의 열은 복수의 목적지 식별자와 연관됨 - 을 갖는 매트릭스를 생성하게 하고,
    상기 복수의 패킷 각각마다, 상기 복수의 값 중 상기 소스 식별자 및 상기 목적지 식별자에 대응하는 값에 상기 데이터 사이즈를 추가하게 하며,
    상기 복수의 가상 머신 그룹 각각이 임계치보다 적은 수의 가상 머신을 포함하도록 그리고 상기 복수의 가상 머신 그룹이 스코어 - 상기 스코어는 상기 복수의 가상 머신 그룹 각각에 있는 가상 머신에 의해 실행된 통신 프로세스에 대응하는 값의 총계임 - 를 최대화하도록 상기 복수의 가상 머신 그룹을 결정하게 하는 것을 포함하는 것인 비일시적 컴퓨터 판독 가능 매체.
  17. 제16항에 있어서, 상기 임계치는 상기 서버 컴퓨터 집합체 중 하나가 실행할 수 있는 가상 머신의 최대수를 포함하는 것인 비일시적 컴퓨터 판독 가능 매체.
  18. 제16항에 있어서, 상기 복수의 가상 머신 그룹을 결정하게 하는 것은, 하나 이상의 리니어 프로그래밍, 다이내믹 프로그래밍 또는 그리디 알고리즘을 통해 상기 복수의 가상 머신 그룹을 결정하게 하는 것을 포함하는 것인 비일시적 컴퓨터 판독 가능 매체.
  19. 컴퓨터 시스템에 있어서,
    프로세서와,
    상기 프로세서에 연결된 메모리와,
    상기 메모리로부터 상기 프로세서에 의해 실행될 수 있으며, 상기 프로세서에 의해 실행될 때에, 상기 컴퓨터 시스템으로 하여금,
    복수의 계층적 네트워크 층이 연결하는 서버 컴퓨터 집합체 상에서 가상 머신에 의해 실행된 복수의 프로세스 간에 교환되는 복수의 패킷 - 상기 복수의 패킷 각각은 소스 식별자, 목적지 식별자 및 데이터 사이즈를 포함함 - 을 식별하게 하고,
    상기 복수의 계층적 네트워크 층의 상위층을 이용하여 제2 가상 머신과 통신하는 제1 가상 머신을 포함하는 하나 이상의 가상 머신 쌍을 식별하게 하며,
    상기 하나 이상의 가상 머신 쌍 내의 하나 이상의 상기 제1 가상 머신 또는 상기 제2 가상 머신을 상기 가상 머신 내의 다른 서버 컴퓨터로 재배치하게 하는 프로그램 모듈을 포함하고, 상기 재배치는 상기 복수의 계층적 네트워크 층의 하위층에서의 데이터 트래픽을 증가시키되 상기 복수의 계층적 네트워크 층의 상위층에서의 데이터 트래픽을 감소시키도록 구성되는 것인, 컴퓨터 시스템.
  20. 제19항에 있어서, 상기 프로그램 모듈은 또한, 상기 컴퓨터로 하여금, 상기 식별된 복수의 패킷 내의 소스 식별자, 목적지 식별자 및 데이터 사이즈에 기초하여 복수의 가상 머신 그룹을 결정하게 하고,
    복수의 행, 복수의 열 및 복수의 값 - 상기 복수의 값 각각은 상기 복수의 행 중 하나와 상기 복수의 열 중 하나에 대응하고, 상기 복수의 행은 복수의 소스 식별자와 연관되며, 상기 복수의 열은 복수의 목적지 식별자와 연관됨 - 을 갖는 매트릭스를 생성하게 하고,
    상기 복수의 패킷 각각마다, 상기 복수의 값 중 상기 소스 식별자 및 상기 목적지 식별자에 대응하는 값에 상기 데이터 사이즈를 추가하게 하며,
    상기 복수의 가상 머신 그룹 각각이 임계치보다 적은 수의 가상 머신을 포함하도록 그리고 상기 복수의 가상 머신 그룹이 스코어 - 상기 스코어는 상기 복수의 가상 머신 그룹 각각에 있는 가상 머신에 의해 실행된 통신 프로세스에 대응하는 값의 총계임 - 를 최대화하도록 복수의 가상 머신 그룹을 결정하게 하는 것을 포함하는 것인 컴퓨터 시스템.
KR1020147012948A 2011-12-23 2011-12-23 장치 집합체에서 리소스 활용의 최적화 KR101554113B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067120 WO2013095622A1 (en) 2011-12-23 2011-12-23 Optimization of resource utilization in a collection of devices

Publications (2)

Publication Number Publication Date
KR20140081871A KR20140081871A (ko) 2014-07-01
KR101554113B1 true KR101554113B1 (ko) 2015-09-17

Family

ID=48655675

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147012948A KR101554113B1 (ko) 2011-12-23 2011-12-23 장치 집합체에서 리소스 활용의 최적화

Country Status (4)

Country Link
US (2) US8959228B2 (ko)
KR (1) KR101554113B1 (ko)
CN (1) CN103917966B (ko)
WO (1) WO2013095622A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101554113B1 (ko) * 2011-12-23 2015-09-17 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 장치 집합체에서 리소스 활용의 최적화
US9195512B2 (en) * 2012-01-06 2015-11-24 International Business Machines Corporation Relocating related resource partitions
US9319285B2 (en) * 2012-11-09 2016-04-19 Unisys Corporation Optimizing partition placement in virtualized environments
US8997080B2 (en) * 2013-02-11 2015-03-31 Citrix Systems, Inc. System updates with personal virtual disks
KR20150000160A (ko) * 2013-06-24 2015-01-02 한국전자통신연구원 분산 가상 스위치를 이용한 네트워크 구현 방법, 이를 수행하는 네트워크 장치 및 분산 가상 스위치 기반 네트워크 시스템
GB2519114A (en) * 2013-10-10 2015-04-15 Ibm Distribution of a service implemented by intra-connected virtual machines
US9647909B2 (en) * 2014-09-23 2017-05-09 Uila Networks, Inc. Monitor a data center infrastructure
US10437770B2 (en) * 2015-01-28 2019-10-08 Avago Technologies International Sales Pte. Limited Method and apparatus for providing virtual machine information to a network interface
US10503442B2 (en) 2015-01-28 2019-12-10 Avago Technologies International Sales Pte. Limited Method and apparatus for registering and storing virtual machine unique information capabilities
KR101639797B1 (ko) * 2015-10-16 2016-07-14 주식회사 구버넷 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법
US10243816B2 (en) 2016-04-18 2019-03-26 International Business Machines Corporation Automatically optimizing network traffic
US10489184B2 (en) 2017-05-12 2019-11-26 At&T Intellectual Property I, L.P. Systems and methods for management of virtual machine resources in a network environment through localized assignment of virtual machines having complimentary resource requirements
US11321136B2 (en) * 2017-12-28 2022-05-03 Intel Corporation Techniques for collective operations in distributed systems
CN108322773B (zh) * 2018-02-01 2020-05-05 安徽创世科技股份有限公司 一种基于多卡绑定的自适应网络带宽实时数据流传输方法
US11132353B2 (en) * 2018-04-10 2021-09-28 Intel Corporation Network component, network switch, central office, base station, data storage, method and apparatus for managing data, computer program, machine readable storage, and machine readable medium
KR102112270B1 (ko) * 2018-10-19 2020-05-19 주식회사 구버넷 다중계층 네트워크 환경에서 패킷을 처리하는 방법 및 그 장치
CN109739482B (zh) * 2018-12-28 2022-04-15 杭州东信北邮信息技术有限公司 一种基于动态语言的业务逻辑执行系统及方法
CN113010269B (zh) * 2021-03-29 2024-02-23 深信服科技股份有限公司 一种虚拟机调度方法、装置、电子设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020097747A1 (en) * 2000-05-22 2002-07-25 Kirkby Paul Anthony Management and control of multi-layer networks
US20100241807A1 (en) * 2009-03-23 2010-09-23 Riverbed Technology, Inc. Virtualized data storage system cache management

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7551560B1 (en) * 2001-04-30 2009-06-23 Opnet Technologies, Inc. Method of reducing packet loss by resonance identification in communication networks
US7761573B2 (en) * 2005-12-07 2010-07-20 Avaya Inc. Seamless live migration of virtual machines across optical networks
US20080165685A1 (en) 2007-01-09 2008-07-10 Walter Weiss Methods, systems, and computer program products for managing network bandwidth capacity
CN101739287A (zh) * 2008-11-13 2010-06-16 国际商业机器公司 管理虚拟机的装置、系统和方法
US8151033B2 (en) * 2009-05-28 2012-04-03 Red Hat, Inc. Mechanism for virtual logical volume management
US8619779B2 (en) * 2009-09-30 2013-12-31 Alcatel Lucent Scalable architecture for enterprise extension in a cloud topology
US9086922B2 (en) * 2009-10-26 2015-07-21 Microsoft Technology Licensing, Llc Opportunistically scheduling and adjusting time slices
US8537860B2 (en) * 2009-11-03 2013-09-17 International Business Machines Corporation Apparatus for switching traffic between virtual machines
US8402140B2 (en) * 2010-01-13 2013-03-19 Nec Laboratories America, Inc. Methods and apparatus for coordinated energy management in virtualized data centers
US8478878B2 (en) * 2010-03-11 2013-07-02 International Business Machines Corporation Placement of virtual machines based on server cost and network cost
US8504718B2 (en) 2010-04-28 2013-08-06 Futurewei Technologies, Inc. System and method for a context layer switch
US8718061B2 (en) * 2010-11-19 2014-05-06 Industrial Technology Research Institute Data center network system and packet forwarding method thereof
US9571406B2 (en) * 2011-10-25 2017-02-14 Vmware, Inc. Network congestion management based on communication delay
US20130152076A1 (en) * 2011-12-07 2013-06-13 Cisco Technology, Inc. Network Access Control Policy for Virtual Machine Migration
KR101554113B1 (ko) * 2011-12-23 2015-09-17 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 장치 집합체에서 리소스 활용의 최적화

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020097747A1 (en) * 2000-05-22 2002-07-25 Kirkby Paul Anthony Management and control of multi-layer networks
US20100241807A1 (en) * 2009-03-23 2010-09-23 Riverbed Technology, Inc. Virtualized data storage system cache management

Also Published As

Publication number Publication date
CN103917966A (zh) 2014-07-09
WO2013095622A1 (en) 2013-06-27
KR20140081871A (ko) 2014-07-01
US8959228B2 (en) 2015-02-17
US20130166749A1 (en) 2013-06-27
CN103917966B (zh) 2016-08-24
US20150120923A1 (en) 2015-04-30
US9736043B2 (en) 2017-08-15

Similar Documents

Publication Publication Date Title
KR101554113B1 (ko) 장치 집합체에서 리소스 활용의 최적화
US11200486B2 (en) Convolutional neural networks on hardware accelerators
CN107710237B (zh) 服务器上深度神经网络划分
EP3314545B1 (en) Deep neural network processing on hardware accelerators with stacked memory
US20160379137A1 (en) Machine learning classification on hardware accelerators with stacked memory
WO2017003830A1 (en) Server systems with hardware accelerators including stacked memory
US8250164B2 (en) Query performance data on parallel computer system having compute nodes
US8478878B2 (en) Placement of virtual machines based on server cost and network cost
US10606651B2 (en) Free form expression accelerator with thread length-based thread assignment to clustered soft processor cores that share a functional circuit
US20190370269A1 (en) Prometheus: processing-in-memory heterogenous architecture design from a multi-layer network theoretic strategy
US20150055474A1 (en) Virtual Machine Traffic Engineering
CN114880112A (zh) 三类顶点度数感知的1.5维度图划分方法及应用
CN114756483A (zh) 基于核间存储访问的子图分段优化方法及应用
JP5919937B2 (ja) 仮想化システム、管理サーバ、マイグレーション方法、マイグレーションプログラム業務間通信を考慮した仮想マシンのマイグレーション方法
US20190332408A1 (en) Packet handling based on multiprocessor architecture configuration
US9081891B2 (en) Reconfigurable crossbar networks
US20150186429A1 (en) Method and system for data dispatch processing in a big data system
CN114880272B (zh) 全局高度数顶点集合通信的优化方法及应用
Bhatele et al. Quantifying network contention on large parallel machines
Bani-Mohammad et al. An efficient non-contiguous processor allocation strategy for 2D mesh connected multicomputers
US9479437B1 (en) Efficient updates of weighted cost multipath (WCMP) groups
US7944842B2 (en) Opportunistic queueing injection strategy for network load balancing
Joshi et al. On fault tolerance in data center network virtualization architectures
Mishra et al. De-fragmenting the cloud
Al-Lami et al. Communication impact on non-contiguous allocation strategies for 2-D mesh multicomputer systems

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