KR102663318B1 - 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법 - Google Patents

지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102663318B1
KR102663318B1 KR1020190159870A KR20190159870A KR102663318B1 KR 102663318 B1 KR102663318 B1 KR 102663318B1 KR 1020190159870 A KR1020190159870 A KR 1020190159870A KR 20190159870 A KR20190159870 A KR 20190159870A KR 102663318 B1 KR102663318 B1 KR 102663318B1
Authority
KR
South Korea
Prior art keywords
input
output processor
target
output
service rate
Prior art date
Application number
KR1020190159870A
Other languages
English (en)
Other versions
KR20200120477A (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 KR20200120477A publication Critical patent/KR20200120477A/ko
Priority to KR1020240057170A priority Critical patent/KR20240064613A/ko
Application granted granted Critical
Publication of KR102663318B1 publication Critical patent/KR102663318B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

시스템에서 입력-출력 디스패치 방법이 개시된다. 시스템은 중앙 집중식 처리 회로, 복수개의 영구 스토리지 타겟들, 제1 입력-출력 프로세서, 및 제2 입력-출력 프로세서를 포함한다. 방법은 제1 입력-출력 프로세서가 복수개의 영구적인 스토리지 타겟들 중 제1 타겟에 연결되었는지를 판단하고, 제2 입력-출력 프로세서가 제1 타겟에 연결되었는지를 판단하고, 그리고, 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되고 제2 입력-출력 프로세서가 상기 제1 타겟에 연결된 것을 판단하는 것에 응답하여, 제1 복수개의 입력-출력 요청들 각각을 제1 입력-출력 프로세서 또는 제2 입력-출력 프로세서로 디스패치하는 것을 포함하고, 디스패치는 제1 타겟에 대한 제1 입력-출력 프로세서의 서비스 율 및 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례한다.

Description

지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법{SYSTEM AND METHOD FOR INTELLIGENT PATH SELECTION AND LOAD BALANCING}
본 개시의 실시예들은 데이터 저장 장치에 관한 것으로, 특히, 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법에 관한 것이다.
복수개의 영구 저장 타겟들을 가진 컴퓨팅 시스템에서, 입력-출력 요청들이 복수개의 영구 저장 타겟들 중 하나로 전송될 수 있는 복수개의 경로들이 있을 수 있다. 시스템의 입력-출력 처리량은 디스패치되는 복수개의 입력-출력 요청들 각각에 대하여 이들 경로들이 선택되는 방법에 의존할 수 있다.
따라서, 지능형 경로 선택과 부하 분산을 위한 시스템과 방법이 필요하다.
본 개시의 실시예들에 따른 과제는 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법을 제공하는데 있다.
본 개시의 일 실시예에 따르면, 입력-출력 디스패치 방법이 제공된다. 이 방법은 제1 입력-출력 프로세서가 복수개의 영구적인 스토리지 타겟들 중 제1 타겟에 연결되었는지를 판단하는 단계; 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되었는지를 판단하는 단계; 및 상기 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되는 것을 판단하는 것에 응답하여, 제1 복수개의 입력-출력 요청들 각각을 상기 제1 입력-출력 프로세서 또는 상기 제2 입력-출력 프로세서로 디스패치하는 단계를 포함하고, 상기 디스패치하는 단계는 상기 제1 타겟에 대한 상기 제1 입력-출력 프로세서의 서비스 율 및 상기 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례하여 수행된다.
상기 제1 입력-출력 프로세서 및 상기 제2 입력-출력 프로세서는 브릿지에 의해서 연결되고, 상기 방법은 상기 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되지 않은 것을 판단하는 것에 응답하여, 입력-출력 요청들이 상기 제1 입력-출력 프로세서로만 디스패치되는 구성을 위한 제1 서비스 율을 예측하는 단계; 상기 입력-출력 요청들이 상기 제1 입력-출력 프로세서 및 상기 제2 입력-출력 프로세서 모두로 디스패치되는 구성을 위한 제2 서비스 율을 예측하는 단계; 상기 제1 서비스 율이 상기 제2 서비스 율을 초과하는지를 판단하는 단계; 상기 제1 서비스 율이 상기 제2 서비스 율을 초과하는 것을 판단하는 것에 응답하여, 복수개의 제2 입력-출력 요청들을 상기 제1 입력-출력 프로세서로 디스패치하는 단계; 및 상기 제1 서비스 율이 상기 제2 서비스 율을 초과하지 않은 것을 판단하는 것에 응답하여, 복수개의 제3 입력-출력 요청들의 제1 부집합을 상기 제1 입력-출력 프로세서로 디스패치하고, 상기 복수개의 제3 입력-출력 요청들의 제2 부집합을 상기 제2 입력-출력 프로세서로 디스패치하는 단계를 추가적으로 포함한다.
상기 제2 서비스 율을 예측하는 단계는 조정가능한 파라메타에 대한 서비스 율 함수의 최대 값을 찾는 단계를 포함하고, 상기 조정가능한 파라메타는 상기 제2 입력-출력 프로세서로 디스패치되는 상기 입력-출력 요청들의 일부이고, 상기 서비스 율 함수는 상기 제1 타겟에 대한 총 서비스 율의 모델이다.
상기 서비스 율 함수는 패널티 함수의 함수이고, 상기 패널티 함수는 상기 입력-출력 요청들의 라우팅의 결과로서 상기 제1 입력-출력 프로세서로부터 상기 제1 타겟으로 직접적으로 서비스 율의 감소를 예측하는 함수이고, 상기 입력-출력 요청들의 라우팅은 상기 제2 입력-출력 프로세서, 상기 브릿지, 및 상기 제1 입력-출력 프로세서를 통하여 상기 제1 타겟으로의 라우팅이다.
상기 최대 값을 찾는 단계는 기울기 감소 방법을 사용한다.
상기 패널티 함수를 다항식 함수이다.
상기 패널티 함수는 선형 함수이다.
상기 방법은 상기 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되지 않고, 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되지 않는 것을 판단하는 것에 응답하여, 에러 메시지를 보내는 단계를 추가적으로 포함한다.
상기 제1 입력-출력 프로세서는 제1 네트워크 인터페이스 카드 및 제2 네트워크 인터페이스 카드를 포함하고, 상기 방법은 라운드 로빈 순서로 상기 복수개의 제1 입력-출력 요청들 중 제1 입력-출력 요청 및 상기 복수개의 제1 입력-출력 요청들 중 제2 입력-출력 요청을 상기 제1 네트워크 인터페이스 카드 및 상기 제2 네트워크 인터페이스 카드로 디스패치하는 단계를 추가적으로 포함한다.
상기 제1 입력-출력 프로세서는 제1 큐 쌍 및 제2 큐 쌍을 포함하는 제1 네트워크 인터페이스 카드를 포함하고, 상기 방법은 상기 제1 네트워크 인터페이스 카드의 중앙 집중된 큐 작업 수들에 따라 상기 제1 네트워크 인터페이스 카드의 워크로드의 측정인 워크로드 스파이크 정도를 예측하는 단계; 및 상기 제1 네트워크 인터페이스 카드의 각 큐 쌍으로 각 인커밍 입력-출력 요청을 할당하는 전략을 선택하는 단계를 추가적으로 포함한다.
상기 워크로드 스파이크 정도를 예측하는 단계는 아래의 식에 따라 상기 워크로드 스파이크 정보를 계산하는 단계를 포함하고,은 시간 각각 에서 중앙 집중된 큐 대기된 작업 수들이고, 는 시간 각각 에서 평균 중앙 집중된 큐 대기된 작업 수들이고, SCV는 제곱 변동 계수이다.
상기 방법은 상기 워크로드 스파이크 정보가 제1 임계치를 초과하는지를 판단하고, 상기 제1 큐 쌍의 길이를 예측하는 단계; 및 상기 제1 워크로드 스파이크 정도가 상기 제1 임계치를 초과하는지를 판단하는 것에 응답하여, 라운드 로빈 순서로 각 인커밍 입력-출력 요청을 상기 제1 네트워크 인터페이스 카드 내의 큐 쌍들로 할당하는 단계를 추가적으로 포함한다.
상기 방법은 상기 워크로드 스파이크 정보가 상기 제1 임계치 보다 작은 제2 임계치를 초과하는지를 판단하는 단계; 상기 제1 큐 쌍의 길이를 예측하는 단계; 상기 제2 큐 쌍의 길이를 예측하는 단계; 상기 워크로드 스파이크 정도가 상기 제1 임계치를 초과하지 않고 상기 제2 임계치를 초과하는 것을 판단하는 것에 응답하여, 인커밍 입력-출력 요청을 상기 제1 큐 쌍과 상기 제2 큐 쌍 중 더 짧은 하나로 할당하는 단계를 추가적으로 포함한다.
상기 제1 큐 쌍의 상기 길이를 예측하는 단계는 상기 제1 큐 쌍 내 입력-출력 요청들의 수에 기초하여 상기 제1 큐 쌍의 길이를 예측하는 단계를 포함한다.
상기 제1 큐 쌍의 상기 길이를 예측하는 단계는 상기 제1 큐 쌍 내 실제 워크로드 양에 기초하여 상기 제1 큐 쌍의 길이를 예측하는 단계를 포함한다.
중앙 집중식 처리 회로, 복수개의 영구 스토리지 타겟들, 제1 입력-출력 프로세서, 및 제2 입력-출력 프로세서를 포함하고, 상기 중앙 집중식 처리 회로는 상기 제1 입력-출력 프로세서가 상기 복수개의 영구적인 스토리지 타겟들 중 제1 타겟에 연결되었는지를 판단하고, 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되었는지를 판단하고, 상기 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결된 것을 판단하는 것에 응답하여, 제1 복수개의 입력-출력 요청들 각각을 상기 제1 입력-출력 프로세서 또는 상기 제2 입력-출력 프로세서로 디스패치하고, 상기 디스패치는 상기 제1 타겟에 대한 상기 제1 입력-출력 프로세서의 서비스 율 및 상기 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례한다.
상기 시스템은 상기 제1 입력-출력 프로세서와 상기 제2 입력-출력 프로세서를 연결하는 브릿지를 추가적으로 포함하고, 상기 중앙 집중식 회로는 상기 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되지 않았는지를 판단하는 것에 응답하여, 입력-출력 요청들이 상기 제1 입력-출력 프로세서로만 디스패치되는 구성을 위한 제1 서비스 율을 예측하고, 상기 입력-출력 요청들이 상기 제1 입력-출력 프로세서 및 상기 제2 입력-출력 프로세서 모두로 디스패치되는 구성을 위한 제2 서비스 율을 예측하고, 상기 제1 서비스 율이 상기 제2 서비스 율을 초과하는지를 판단하고, 상기 제1 서비스 율이 상기 제2 서비스 율을 초과하는지를 판단하는 것에 응답하여, 복수개의 제2 입력-출력 요청들을 상기 제1 입력-출력 프로세서로 디스패치하고, 상기 제1 서비스 율이 상기 제2 서비스 율을 초과하지 않은 것을 판단하는 것에 응답하여, 복수개의 제3 입력-출력 요청들의 제1 부집합을 상기 제1 입력-출력 프로세서로 디스패치하고, 상기 복수개의 제3 입력-출력 요청들의 제2 부집합을 상기 제2 입력-출력 프로세서로 디스패치한다.
상기 제2 서비스 율을 예측하는 것은 조정가능한 파라메타에 대한 서비스 율 함수의 최대 값을 찾는 것을 포함하고, 상기 조정가능한 파라메타는 상기 제2 입력-출력 프로세서로 디스패치되는 상기 입력-출력 요청들의 일부이고, 상기 서비스 율 함수는 상기 제1 타겟에 대한 총 서비스 율의 모델이다.
상기 서비스 율 함수는 패널티 함수의 함수이고, 상기 패널티 함수는 상기 입력-출력 요청들의 라우팅의 결과로서 상기 제1 입력-출력 프로세서로부터 상기 제1 타겟에 직접적으로 서비스 율의 감소를 예측하는 함수이고, 상기 입력-출력 요청들의 라우팅은 상기 제2 입력-출력 프로세서, 상기 브릿지, 및 상기 제1 입력-출력 프로세서를 통하여 상기 제1 타겟으로의 라우팅이다.
처리를 위한 중앙 집중식 수단, 복수개의 영구 스토리지 타겟들, 제1 입력-출력 프로세서, 및 제2 입력-출력 프로세서를 포함하는 시스템의 입력-출력 디스패치 방법은 상기 제1 입력-출력 프로세서가 상기 복수개의 영구적인 스토리지 타겟들 중 제1 타겟에 연결되었는지를 판단하는 단계, 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되었는지를 판단하는 단계, 상기 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결된 것을 판단하는 것에 응답하여, 제1 복수개의 입력-출력 요청들 각각을 상기 제1 입력-출력 프로세서 또는 상기 제2 입력-출력 프로세서로 디스패치하는 단계를 포함하고, 상기 디스패치하는 단계는 상기 제1 타겟에 대한 상기 제1 입력-출력 프로세서의 서비스 율 및 상기 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례한다.
본 개시의 실시예들에 따르면, 지능적인 경로 선택이 이루어지고, 부하 분산이 효율적으로 수행됨으로써 시스템의 성능이 최적화될 수 있다.
본 개시의 특징들 및 이점들은 명세서, 청구 범위, 및 첨부된 도면들을 참조하여 이해될 것이다.
도 1은 본 개시의 실시예에 따른 NUMA 기반 NVMeoF 시스템들을 위한 경로 선택 및 부하 분산을 위한 시스템의 서브시스템 및 구성 요소 아키텍처를 나타내는 도면이다.
도 2는 본 개시의 실시예에 따른 전체적인 I/O 경로의 도면이다.
도 3은 본 개시의 실시예에 따른 용어를 나타내는 표이다.
도 4는 본 개시의 실시예에 따른 NVMeoF 요약 장치 인터페이스 층 내 NUMA 시스템의 도면이다.
도 5는 본 개시의 실시예에 따른 "타겟 맵"의 예의 도면이다.
도 6은 본 개시의 실시예에 따른 NUMA가 지원되는지 여부에 기초한 3-단계 디스패치 할당의 워크플로우의 도면이다.
도 7은 본 개시의 실시예에 따른 3-단계 디스패치들 사이의 차이를 나타내는 표이다.
도 8은 본 개시의 실시예에 따른 2개의 NUMA들 및 2개의 NUMA들 각각이 2개의 NIC들을 포함하는 예의 도면이다.
도 9는 본 개시의 실시예에 따른 도전 과제(challenges) 및 설계 목표를 나타내는 표이다.
도 10은 본 개시의 실시예에 따른 서브시스템 1의 구성 요소들 및 기능들을 나타내는 표이다.
도 11은 본 개시의 실시예에 따른 듀얼 NUMA 시스템의 큐잉 모델의 도면이다.
도 12는 본 개시의 실시예에 따른 4개의 모든 가능한 I/O 경로들의 도면이다.
도 13 및 도 14는 본 개시의 실시예에 따른 병목현상 기반 서비스 율 분석 및 모델링에서 사용되는 심볼들 및 심볼들에 대한 설명을 나타내는 표들이다.
도 15a 및 도 15b는 본 개시의 실시예에 따른 NUMA 경로 선택 알고리즘의 워크플로우의 도면들이다.
도 16 및 도 17은 본 개시의 실시예에 따른 NUMA 경로 선택 알고리즘의 메인 절차의 목록을 보여주는 도면이다.
도 18은 본 개시의 실시예에 따른 2개의 NUMA들의 어느 것도 타겟 그룹 2 내의 타겟들에 도달할 수 없는 케이스 1의 예의 도면이다.
도 19는 본 개시의 실시예에 따른 2개의 NUMA들의 어느 것도 타겟 T에 도달할 수 없는 케이스 1의 큐잉 모델의 도면이다.
도 20은 본 개시의 실시예에 따른 디스패치 함수의 입력들의 표이다.
도 21은 본 개시의 실시예에 따른 2개의 NUMA들 모두가 타겟 그룹 2 내의 타겟들에 도달할 수 있는 케이스 2의 예의 도면이다.
도 22는 본 개시의 실시예에 따른 2개의 NUMA들 모두가 타겟 T에 도달할 수 있는 케이스 2의 큐잉 모델의 도면이다.
도 23은 본 개시의 실시예에 따른 패널티 함수의 입력들의 표이다.
도 24는 본 개시의 실시예에 따른 단지 하나의 NUMA가 타겟 그룹 2 내의 타겟들에 도달할 수 있는 케이스 3의 예의 도면이다.
도 25는 단지 하나의 NUMA가 타겟 T에 도달할 수 있고, 경로 선택 및 부하 분산을 위한 시스템이 브릿지 및 타겟-도달 불가능 NUMA를 사용하는 경우의 큐잉 모델인 케이스 3(a)의 도면이다.
도 26은 본 개시의 실시예에 따른 단지 하나의 NUMA가 타겟 T에 도달할 수 있고, 경로 선택 및 부하 분산을 위한 시스템이 브릿지 및 타겟-도달 불가능 NUMA를 사용하지 않는 경우의 큐잉 모델인 케이스 3(b)의 도면이다.
도 27은 본 개시의 실시예에 따른 서브시스템 2의 구성 요소들 및 기능들을 나타내는 표이다.
도 28은 본 개시의 실시예에 따른 하드웨어 스택들 내 큐 쌍들 모델 및 대응하는 위치의 예의 도면이다.
도 29는 본 개시의 실시예에 따른 I/O 요청 데이터 구조 설명의 표이다.
도 30은 본 개시의 실시예에 따른 I/O 요청의 데이터 구조의 도면이다.
도 31은 본 개시의 실시예에 따른 에포크(epoch) 윈도우들 및 그들의 기능의 표이다.
도 32는 본 개시의 실시예에 따른 3개의 구성 요소들의 상세 워크플로우의 도면이다.
도 33 및 34는 본 개시의 실시예에 따른 서브시스템 2의 메인 절차의 목록을 보여주는 도면들이다.
도 35 내지 도 38은 본 개시의 실시예에 따른 다음 부단락들에서 사용되는 용어 및 의미를 나타내는 표들이다.
도 39는 본 개시의 실시예에 따른 스파이크(spike) 검출의 예의 도면이다.
도 40는 본 개시의 실시예에 따른 워크로드 스파이크 검출기 및 다른 전략들의 도면이다.
첨부된 도면과 관련하여 아래에 기술된 상세한 설명은 본 개시에 따라 제공되는 지능형 경로 선택 및 부하 분산을 위한 시스템과 방법의 실시예들의 설명하기 위한 것이며, 본 개시가 구성되거나 활용될 수 있는 유일한 형태를 나타내기 위한 것은 아니다. 설명은 도시된 실시예들과 관련하여 본 개시의 특징들을 설명한다. 그러나, 동일하거나 동등한 구조도 본 개시의 범위 내에 포함되도록 의도된 다른 구현에 의해 달성될 수 있다는 점을 이해해야 한다. 본 명세서에서, 동일한 요소 번호는 동일한 요소 또는 특징을 나타내는 것이다.
소개
일부 실시예들은 두개의 불균일 메모리 억세스(NUMA: non-uniform memory access) 기반 시스템들에서 불휘발성 메모리 익스프레스 오버 패브릭(NVMeOF: non-volatile memory express over fabrics) 이니시에이터(initiator)로부터 다중 경로들로 I/O 전송을 위한 지능형 경로 선택 및 부하 분산을 통해 I/O 성능을 최적화하기 위한 포괄적이고 완전한 해결책을 제공한다.
일부 실시예들은 NUMA 및 비-NUMA 시스템 모두에서 현재 NVMeoF 구현의 주요 문제에 의해서 동기 유발된다. NUMA 리소스는 다음과 같은 이유로 완전히 활용되지 않는다.
(1) NUMA-NIC(네트워크 인터페이스 카드)에 기초한 NUMA - 타겟 연결 및 해당 능력(예: 서비스 율(service rate) 및 대역폭(bandwidth)) 전반에서 I/O 워크로드가 균형을 이루지 않는다.
(2) 교차-NUMA 브릿지의 사용은 비용이 많이 들지만, 타겟에 직접 연결되지 않은 NUMA를 이용하기 위하여 브릿지를 사용함에 의해서 성능을 개선하는데 도움이 될 수도 있다. 그러나, 일부 NVMeoF 구현에서는 (i) 성능 저하를 고려하지 않고 브릿지를 사용하거나, (ii) 브릿지를 전혀 사용하지 않고 선호 타겟과 연결되지 않은 다른 NUMA들을 유휴 상태로 둠으로써, 실제 잠재적인 성능 이득을 무시한다.
(3) 각 NUMA의 NIC들에 할당된 I/O 요청들이 균형을 이루지 못하여 일부 NIC들에 리소스 포화 및 다른 NIC들의 리소스 낭비를 유발할 수 있다.
(4) 각 NUMA NIC는 각 NUMA NIC 또는 타겟의 NIC 내 상대편들(큐 쌍(들))을 연결하는 하나 또는 복수개의 큐 쌍들을 포함한다. NVMeoF의 일부 구현은 새로운 I/O 요청들과 대기 중인 큐 쌍 I/O 요청들의 실제 워크로드의 다른 특성을 고려하여 각 NIC 내 큐 쌍 간에 부하들의 균형을 조정하지 않는다.
I/O 워크로드 트래픽은 어플리케이션의 유형에 따라 다르며, 심지어 런타임 동안 하나의 단일 어플리케션으로부터 I/O들도 달라질 수 있다. 일부 NVMeoF 해결책은 I/O 트래픽의 변화 및 부하 분산에 대한 대응하는 영향을 고려하지 않는다. 예를 들면, 스파이크 시간 동안, 큐 상태는 쉽게 만료될 수 있고, 모든 I/O들을 "저 워크로드로 사용되는"큐 쌍으로 디스패치하고 결국 다른 큐 쌍들이 유휴 상태인 동안 해당 큐 쌍을 포화하도록 잘못 이끌 수 있다. 여기에서 사용된 "I/O 요청들" 또는 "입력-출력 요청들, 또는 단순히 "I/O들"은 타겟으로 전송될 수 있는 NVMe 리드 및 라이트 명령들과 같은 명령들이다. 여기에서 사용된 "타겟" 또는 "영구 스토리지 타겟"은 하드 드라이브 또는 고체 상태 드라이버(SSD: solid state drive)와 같은 영구 스토리지 장치이다.
따라서, 일부 실시예들은 (1) 모든 NUMA들을 완전하게 이용하도록 다중 경로 지원을 구축하고, (2) 경로 용량, 연결, 및 워크로드 특성을 고려하여 각 NUMA 내부에 NUMA들, NIC들 및 각 NIC 내부에 큐 쌍들을 통하여 부하들을 분산함에 의해서 더 좋은 I/O 성능을 제공하는 것이다.
상세하게, 도 1에 도시된 것처럼, 일부 실시예들에서 2개의 서브시스템들, "서브시스템 1(Subsystem 1): NUMA-인식 경로 선택기(NUMA-Aware Path Selector)" 및 "서브시스템 2(Subsystem 2): 큐 쌍 부하 분산 디스패처(Queue Pair Load Balancing Dispatcher)"가 있다. 제1 서브시스템은 I/O 요청 스트림들을 위하여 NUMA-NIC 경로를 선택하고(예를 들면, 구성요소 1(Component1): NUMA-NIC 경로 선택기(NUMA-NIC Path Selector)), 선택된 NUMA내 NIC들을 통하여 부하를 분산하기 위하여 동작할 수 있다(예를 들면, 구성요소 2(Component 2): NIC 부하 분산기(NIC Load Balancer)). 이러한 구성요소들은 교차-NUMA 브릿지 트레이드오프(Cross-NUMA Bridge), NUMA 코어 서비스 율(NUMA Core ServRate), NIC-타겟 연결(NIC-target Connection), 및 NIC-타겟 대역폭(NIC-target Bandwidth)과 같은 요소들을 고려한다. 서브시스템 1의 NUMA-NIC 경로 결과는 각 NIC 내부에 큐 쌍들을 통하여 이러한 할당된 I/O 요청들을 추가적으로 디스패치하는 서브시스템 2로 전송된다. 구성요소 3(Component 3: 큐 쌍 부하 모니터(Queue Pairs Load Monitor))은 큐 쌍 워크로드 상태 정보를 모니터하는 것이고, 구성요소 4(Component 4: 워크로드 스파이크 검출기(Workload Spike Detector))는 I/O 트래픽 스파이크 정도를 모니터링하기 위하여 사용되고, 구성요소 5(Component 5: 큐 쌍 부하 분산기(Queue Pairs Load Balancer)는 다른 부하 분산 전략들(예를 들면, 라운드 로빈 전략(Round Robin Strategy), 결합 최단 큐(Join Shortest Queue Strategy), 및 minCV 전략(minCV strategy) 사이를 스위치하기 위하여 사용된다. 각 NUMA는 I/O 요청들을 처리할 수 있고, 예를 들면, "입력-출력 프로세서"로 불리어질 수 있다.
2. 시스템 아키텍처 개요
이 단락에서, 우선, 경로 선택과 부하 분산을 위한 시스템, 또는 "NVMePL"의 하드웨어 및 소프트웨어에 따른 일부 실시예들의 전체적인 I/O 경로를 소개한다. 마지막에, 경로 선택과 부하 분산을 위한 시스템에서 3-단계 디스패치들 및 대응하는 2개의 서브시스템들과 5개의 지원 구성요소들을 간략하게 소개한다. 이러한 2개의 서브시스템들 및 5개의 구성요소들이 단락 3 및 단락 4에서 상세하게 설명된다.
2.1 일부 실시예들의 전체적인 I/O 경로
우선, 우리는 일부 실시예들에서 사용된 NVMeoF의 전체적인 I/O 경로를 설명한다. 도 2에 도시된 것처럼, 우리는 I/O 경로를 2개의 스택들, 예를 들면, 데이터 처리 서버로 알려진"클라이언트 스택", 및 스토리지 서버로 알려진 "타겟 스택"으로 나눈다. 도 1에 도시된 것처럼, 경로 선택 및 부하 분산 서브시스템 및 구성요소들을 위한 시스템은 도 2의 층 3 내에 있다.
제1 스택 내에 제1 층은"층 1(Layer 1): 사용자 어플리케이션(User Application)"으로, Amazon S3, minio, Ceph, myRocks 등과 같은 스토리지 인프라 소프트웨어 뿐만 아니라 빅 데이터 처리 어플리케이션들을 의미한다. 층 1은 다음 층, "층 2(Layer 2): 분산 플랫폼 운영 시스템(Distrubuted Platform Operating System)"으로 전송되는 I/O 요청들을 발생하고, 층 2는 블록-기반 스토리지 및 객체-기반 스토리지(즉, 키-값 스토리지)를 위한 "put", "get", "delete"와 같은 I/O 동작 API들을 제공하고, 또한, 키-값 스토리지가 사용되면 메타데이터 및 키들을 관리한다. 실제 구현에서, 이 층은 또한 분산 시스템들이 음영처리(shading), (회복(recover) 또는 백업(backup)을 위한) 복사(replication), 심지어 병렬 가져오기(parallel fetching)를 처리하도록 설계된다. 이 층에서 사용되는 음영처리, 복사 또는 병렬 가져오기 스킴들을 제한하지 않고, 랑데부(Rendezvous) 및 컨시스턴트 해싱(Consistent Hashing) 스킴들이 모두 사용될 수 있다.
"층 2: 분산 플랫폼 운영 시스템"은 분산 I/O 동작들을 수행하기 위하여 (예를 들면, 데이터의 호스트 및 이의 레프리카들의 위치들에 기초하여) 해당 NUMA 후보들을 결정한다. I/O 스트림을 다음 층 "층 3(Layer 3): NVMeoF 요약 장치 인터페이스(NVMeoF Abstract Device Interface(NVMePL))"로 전달하여 타겟 스택 서버의 타겟 디스크들과 통신한다. (도 1에 도시된 것처럼) 일부 실시예들의 장점은 이 층에 관한 것이고, 제안된 2개의 서브시스템들("서브시스템 1: NUMA-인식 경로 선택기" 및 "구성요소 2: NIC 부하 분산기") 및 5개의 지원 구성요소들("구성요소 1: NUMA-NIC 경로 선택기", "구성요소 2: NIC 부하 분산기", "구성요소 3: 큐 쌍 부하 모니터", "구성요소 4: 워크로드 스파이크 검출기", 및 "구성요소 5: 큐 쌍 부하 분산기")가 경로 선택 및 부하 분산을 위한 시스템 내에 위치한다. 분산 플랫폼 운영 시스템은 "중앙 집중식 제어기" 또는 "중앙 집중식 처리 회로"로 불리어질 수 있는 (추후에 추가적으로 논의될) 처리 회로에서 동작할 수 있다. 예를 들면, 중앙 집중식 제어기는 각 입력-출력 요청을 입력-출력 프로세서들의 하나, 선택된 입력-출력 프로세서 내의 NIC, 및 NIC 내의 큐 쌍(또는 "큐 쌍")으로 디스패치할 수 있다.
층 3은 클라이언트 스택의 마지막 층이고, 처리를 위하여 하드웨어 어드레스들을 사용하는 멀티-포트 네트워크 브릿지인 "네트워크 스위치(Network Switch)"를 통하여 "타겟"에 연결하고, 컴퓨터 네트워크 상에서 장치들을 함께 연결하는 데이터 네트워킹 장치로 전달한다.
일부 실시예들에서, 원격 직접 메모리 억세스 오버 컨버즈드 이더넷(RoCE: RDMA(remote direct memory access) over converged Ethernet) 프로토콜을 따르는 패브릭 케이블들은 클라이언트 및 타겟 스택들을 "네트워크 스위치"에 연결하기 위하여 사용된다. 맞춤형 스킴들을 구현하기 위하여, 원래의 RDMA 커널이 우회(bypass)된다.
"네트워크 스위치"의 다른 측은 스토리지 서버인 "타겟 스택"이고, 2개의 층들, "층 4(Layer 4): 타겟(Target)" 및 "층 5(Layer 5): 디스크 풀(Disk Pool)"로 구성된다. 층 4는 클라이언트 스택(특히, 클라이언트 스택 내에 NUMA들의 NIC 포트들 내에 큐 쌍들로부터) I/O 요청들에 응답하고, I/O 요청들을 층 5의 디스크들로 디스패치한다.
결과적으로, 층 5에서, 모든 I/O 요청들이 PCIe(NVMe) 인터페이스들을 통하여 이들의 최종 목적지 디스크(들)로 전송된다.
"층 5: 디스크 풀" 층은 2개의 동종 또는 이종의 스토리지 장치들, 주로, NVMe SSD, NVMe-기반 키-값 SSD (즉, KV SSD들) 등과 같은 플래쉬-기반 SSD들로 구성될 수 있다. 만일 클라이언트 스택이 객체 기반 스토리지 장치를 사용 중이라면, "층 5: 디스크 풀" 내에 SSD들 내부에 내부 플래쉬 이전 층들(FTL: flash translation layer)이 가능하면 장치들의 라이트 증폭 및 웨어 레벨링(wear leveling)을 감소하기 위하여 추가적으로 최적화될 수 있다.
2.2 NUMA 요약 장치 인터페이스의 구조 및 워크플로우 (경로 선택 및 부하 분산을 위한 시스템)
다음으로, 일부 실시예들, NVMeoF 요약 장치 인터페이스(경로 선택 및 부하 분산을 위한 시스템) 층의 중요한 이점을 다룬다. 도 3에 도시된 표는 이 단락에서 사용되는 용어를 요약한 것이다.
경로 선택 및 부하 분산을 위한 시스템의 하드웨어 및 소프트웨어 모델의 예(도 2의 "층 3: NVMeoF 요약 장치 인터페이스")가 도 4에 도시된다. 일부 실시예들은 타겟 스택("층 4: 타겟" 및 "층 5: 디스크 풀") 뿐만 아니라 층 3 및 이의 부속 "네트워크 스위치"를 주로 다루기 때문에, "층 1: 사용자 어플리케이션" 및 "층 2: 분산 플랫폼 운영 시스템"은 도 4에 도시된 하나의 단일 "사용자 어플리케이션" 박스로 단순화된다(즉, 지금부터 2개의 층들을 나타내는 "사용자 어플리케이션"이 사용된다).
초기화 동안, I/O 스트림들은 층 1에서 생성된다. 각 어플리케이션의 더 바람직한 스토리지 목적지는 서버들을 통하여 음영처리, 복사, 및 부하 분산을 고려하여 층 2에 의해서 자동적으로 할당된다. (도 2-2의 "사용자 어플리케이션" 박스 내에서) 이러한 목적지 계획의 결과는 NVMeoF 타겟 서브시스템의 NQN (NVMe 정규화된 이름) (즉, 타겟(스토리지 서버) ID들의 목록), 타겟 서브시스템이 지원하는 네임 스페이스(NS), 및 해당 타겟에 연결하기 위해 존재하는 모든 다중 경로들의 IP 주소 및 포트 튜플(tuples)을 가지는 "타겟 맵" 으로 저장된다.
네임 스페이스는 스토리지 장치들의 가상 볼륨(또한, "파티션"으로 불릴 수 있다)일 수 있으며, 스토리지 장치들의 가상 볼륨은 (1) 하나의 단일 디스크의 파티션 또는 하나의 단일 디스크의 전체 공간, 또는 (2) 많은 수의 디스크 파티션들을 포함하는 혼합 그룹 또는 디스크들의 전체 공간일 수 있다. 실제적인 구현에서, 이 정보는 JSON 또는 XML 포맷들로 저장될 수 있다. 예를 들면, 도 5는 이동 경로-스타일 타겟 구성 샘플 파일을 도시하는 것으로, 여기에서,"사용자 어플리케이션"은 타겟 맵내에 2개의 타겟들을 가진다.
이 경우, 이 애플리케이션은 2 개의 선호 타겟들(스토리지 서버들), 즉 "SubsystemA"및 "SubsystemB"를 가지며, 여기에서 "Subsystem"은 NVMeoF의 이름 지정 방법이며, 일부 실시예들의 서브시스템 1 및 2가 아니다. 어플리케이션은 해당 네트워크 I/O 경로 (IP = 192.168.100.100, 포트 = 1234) 및 (IP = 192.168.100.101, 포트 = 5678)와 함께 두 개의 네임 스페이스들(즉, 가상 볼륨들 "Nvme0n1-1"및 "Nvme0n2-1")을 나타낸다.
2.3 NUMA 및 NIC 디스패치 절차의 개요
초기화 단계 후에, 호스트 드라이버는 "타겟 맵"에서 다양한 타겟들을 위한 이러한 경로들의 각각에 연결을 만들기 위하여 사용되는 NUMA NIC들을 식별한다. 추가적으로, 호스트 드라이버는 기본 시스템이 NUMA를 지원하는지 여부를 식별한다. 만일 시스템이 NUMA를 지원하면, 호스트 드라이버는 NIC들이 연결된 NUMA 소켓과 이러한 NUMA 소켓들의 각각에서 이용가능한 CPU들의 ID들을 식별해야 한다. 각 I/O 요청과 이에 대응하는 연산 동작들이 하나 이상의 NUMA(들) 에 결합되어 할당되고 (부단락 2.3.1에서 설명), 호스트 드라이버는 모든 3-단계 디스패치들을 수행한다 (부단락 2.3.2 및 2.3.4에서 설명). 만일 시스템이 NUMA를 지원하지 않으면, 호스트 드라이버는 부단락들 2.3.3 및 2.3.4에서 설명될 제2 단계 및 제3 단계 디스패치만 수행한다.
2.3.1 NUMA와 I/O 요청 및 대응하는 연산 동작들의 커플링
도 4에 도시된 것처럼, NUMA를 지원하는 시스템의 클라이언트 스택의 내부에서, 서버 하드웨어 리소스들이 2개의 대칭 NUMA들로 그룹화되고, 이들 각각은 이들 각각에 부속된 동일 메모리를 공유하는 복수개의 CPU 코어들을 가진다. 기술적으로, NUMA는 지역적으로 메모리를 공유할 수 있도록 멀티프로세싱 시스템 내에 마이크로프로세서들(즉, CPU 코어들)의 클러스터를 구성하는 방법으로, 확장된 시스템의 성능 및 능력을 개선할 수 있다. NUMA는 모든 데이터 억세스들이 주 버스 상에서 이동할 필요가 없도록 몇 개의 마이크로프로세서들 사이에 공유되는 중간 수준의 메모리를 추가한다.
각 NUMA 내부에 메모리는 "사용자 버퍼"및 "직접 억세스 메모리(DMA: direct access memory)"의 두 부분들로 추가적으로 분할된다. "사용자 버퍼"는 타겟 스택으로부터 I/O 회신 결과들을 위한 장소이다. 전송 프로토콜 RDMA가 직접 메모리 억세스를 수행하기 위하여 인접한 물리적 메모리를 획득할 목적으로 메모리 영역들의 피닝(pinning)을 요구하기 때문에, "DMA"는 I/O들을 NVMeoF 타겟들로 및 로부터 전송하기 위하여 전용된다. 특히, DMA는 동일한 NUMA와 관련되는 모든 메모리로부터 할당될 수 있는 "거대페이지들(Hugepages)"로서 메모리의 일부를 피닝함에 의해서 달성된다.
반면에, 다른 NUMA들은 그들의 "개인" 메모리를 직접적으로 공유할 수 없고, 대신에 값비싼 "교차 NUMA 브릿지"(즉, 메인 버스) 동작을 수행해야 한다. 예를 들면, 도 4에 도시된 것처럼, 만일 NUMA0 (각 NUMA1)가 NUMA1(각 NUMA0)와 통신할 필요가 있거나 NUMA1 (각 NUMA0) 내부에 메모리를 억세스할 필요가 있으면, 브릿지를 통하여 한다. 브릿지의 사용은 메인 버스 및 NUMA 코어들의 오버헤드를 가져오며, 이에 따라 (종종 브릿지를 사용하는 "성능 페널티"로서 알려진) 성능 병목 현상을 유발한다.
요약하면, NUMA를 사용하는 이점은 하나의 단일 운영 시스템 하에서 작동하는 복수개의 프로세서들이 공통 버스(즉, 상호 접속 경로)를 통해 서로의 메모리에 액세스하는 긴밀하게 결합되고 공유되는 모든 대칭 멀티 프로세싱 시스템이라는 것이다. 결과적으로, 경로 선택 및 부하 분산을 위한 시스템은 브리지와 브릿지의 다른 편에 NUMA를 사용하는 성능 향상이 그렇게 하는 성능 페널티보다 크지 않다면 불필요한 교차-브리지 동작을 수행하지 않도록 동일 NUMA에 "일체형"으로 각 I/O 요청과 대응하는 연산 동작을 할당할 수 있다. 도 7에 도시된 표는 3-단계 디스패치들 사이의 차이점을 추가적으로 보여준다.
2.3.2 제1 단계 디스패치: NUMA들 사이
하나의 단일 NUMA와 I/O 요청들 및 연산 동작들을 커플링하는 것 외에, 만일 NUMA가 지원되고 시스템 내에 하나 이상의 NUMA가 있으면, 경로 선택 및 부하 분산을 위한 시스템은 부하 분산 및 리소스를 완전하게 이용하기 위하여 NUMA-단계 디스패치를 수행할 필요가 있다. 도 8에 도시된 것처럼, 2개의 NUMA들이 있고, 이들 각각이 2개의 NIC들을 가지고, NIC 각각이 또한 3개의 큐 쌍들을 가진다. 각 NUMA의 데이터 연결은 "경로"로서, "경로 0", "경로 1"으로서 정의되고, 각 경로는 다른 NIC들을 통하여 복수개의 서브 경로들을 가질 수 있다.
"제1 단계 디스패치"는 NUMA-NIC-타겟 경로들을 발견하고, 2개의 NUMA들 사이에 I/O 스트림 부하를 분산하는 것이다.
분산되지 않은 상황은 하나의 NUMA를 낭비하고, 결과적으로 전체적인 성능을 떨어뜨리는 다른 NUMA를 포화한다.
추가적으로, "제1 단계 디스패치"는 다른 네트워크 연결 시나리오들(예를 들면, NUMA들이 모두 도달할 수 없는 일부 타겟들)을 고려할 필요가 있다. 특히, "제1 단계 디스패치"는 (1) 하나 또는 2개의 NUMA들을 사용할지, 및 (2) 2개의 NUMA들에 대한 I/O 요청 할당의 비율을 설정하는 방법을 결정할 필요가 있다.
(1)을 위하여, 경로 선택 및 부하 분산을 위한 시스템은 먼저 타겟에 각 NUMA의 연결을 체크하고, 포괄적인 이득-대-패널티 평가에 기초하여 하나 또는 2개의 NUMA(들)을 사용하기로 결정한다. 다시 말해서, 비록 경로 선택 및 부하 분산을 위한 시스템이 교차-브릿지 동작들을 피하기 위하여 노력하지만, 경로 선택 및 부하 분산을 위한 시스템이 페널티가 성능 이득 보다 작다면 병렬로 작업을 완료하도록 타겟에 연결되지 않은 유휴 상태인 NUMA를 완전하게 사용하기 위하여 여전히 브릿지를 사용할 수 있다는 것은 중요하다.
(2)를 위하여, 경로 선택 및 부하 분산을 위한 시스템은 I/O 처리 능력 및 네트워크 대역폭들에 기초하여 각 NUMA에 대해 I/O 스트림을 비례적으로 나눈다.
일부 실시예들에서, 경로 선택 및 부하 분산을 위한 시스템이 "제1 단계 디스패치"를 수행하는 방법에 대한 상세한 설명이 부단락 3.2에서 설명될 것이다.
2.3.3 제2 단계 디스패치: 각 NUMA의 NIC들 사이
각 NUMA는 "네트워크 스위치"에 연결하고 결과적으로 "타겟 스택"에 연결하는 네트워크 LAN 포트들(하이웨어 리소스)인 복수개의 NIC들을 가진다. 일단 NUMA-NIC 단계 경로 선택은 이루어지면, 각 NUMA의 (복수개의 NIC 포트들을 구성(포함)하는) 각 NIC는 할당된 I/O 요청들을 수신하고, "제2 단계 디스패치"는 각 NUMA의 NIC내에 NIC 포트들 사이에 부하를 추가적으로 분산하는 기능을 한다. 비록 "제1 단계 디스패치"가 각 NUMA에 할당하는 I/O 요청 스트림의 비율을 결정하지만, "제1 단계 디스패치"는 해당 NUMA의 복수개의 NIC 포트들 사이에 I/O들을 디스패치하는 방법을 특정하지 않는다.
"제2 단계 디스패치"의 기능이 부단락 3.3에 기술되는 "구성요소 2: NIC 부하 분산기"에 의해서 달성될 수 있다.
2.3.4 제3 단계 디스패치: 각 NIC의 큐 쌍들 사이
각 NIC 포트 내부에, 복수개의 큐 쌍들(QPs)이 있고, 각 큐 쌍은 하나의 "서브밋 큐(Submit Queue)" 및 하나의 "컴플릿 큐(Complete Queue)"를 가진다. 문제의 공식화를 단순화하기 위하여, 디스패칭 알고리즘 설계 중에 "큐 쌍 일체형"을 깰 필요가 없고 그들의 내부 구조들을 변형할 필요가 없기 때문에, 본 개시의 나머지에서 "서브밋 큐"와 "컴플릿 큐" 모두를 나타내는 하나의 "큐 쌍"이 사용된다. NUMA 경로가 일단 선택되면, 경로 선택 및 부하 분산을 위한 시스템은 NUMA 내부에서 각 NIC 포트의 큐 쌍들을 통하여 부하 분산을 수행할 필요가 잇다. 경로 선택 및 부하 분산을 위한 시스템은 NIC 하드웨어 구성들을 변형함이 없이 성능을 최적화하려고 하며, 이는 NIC 포트들의 수를 변경하지 않고, 단지 각 NIC 내부에서 큐 쌍들을 통하여 부하들을 분산하는 것을 의미한다. "제3 단계 디스패치"의 기능들은 단락 4에서 설명될 "서브시스템 2: 큐 쌍 부하 분산 디스패처"에 의해서 달성될 수 있다.
3. 서브시스템 1: NUMA 인식 경로 선택기
이 단락에서, 먼저 부단락 3.1에서 설명되는 NUMA 경로 선택 및 제1 단계(즉, UA_CQ로부터 NUMA_CQ들까지)와 제2 단계(즉, NUMA_CQ로부터 NIC_CQ들까지) 부하 분산 모두의 문제를 공식화한다. 병목현상 기반 서비스 율 분석에 기초하여, 구성요소들 1과 2에서 사용된 알고리즘들을 부단락 3.2 및 3.3 각각에서 추가적으로 제시한다.
3.1 문제 공식화
먼저 도 9의 표에 도시된"서브시스템 1: NUMA 인식 경로 선택기"에 대한 4가지 도전 과제 및 대응하는 설계 목표들을 명확하게 한다. 이러한 설계 목적들에 의해서 동기 유발된 경로 선택 및 부하 분산을 위한 시스템의 NUMA 인식 경로 선택은 아래와 같은 목표를 가진다.
(1) 각 I/O 요청 및 대응하는 연산 동작들을 불필요한 교차-브릿지 동작들을 피하기 위하여 동일 NUMA에 "일체형"으로 할당한다.
(2) NUMA 능력(예를 들면, NUMA 서비스 율, NIC 대역폭, 등)을 고려하여 2개의 NUMA들 사이에 부하들 분산한다.
(3) 만일 성능 패널티가 성능 이득 보다 적다면, I/O 작업을 마치기 위하여 유휴 상태인 타겟 도달 불가능 NUMA를 할당하고, 결과들을 타겟 도달 불가능 NUMA의 NIC를 통하여 타겟으로 전달하기 위하여 브릿지를 사용함에 의해서 시스템 리소스들을 충분히 사용한다.
(4) NUMA NIC 단계 경로 선택이 이루어진 후에, 각 NIC 포트의 연결 구조 (즉, 각 NUMA내에 NIC 포트들이 다른 타겟들에 연결될 수 있기 때문에, 타겟 도달 가능 또는 불가능) 및 타겟들에 대한 대역폭에 기초하여 각 NUMA 내에 NIC들을 통하여 I/O 부하를 추가적으로 분산한다.
도 10에 도시된 표는 서브시스템 1내에 각 구성요소의 기능들을 추가적으로 설명한다.
다음 부단락들에서, 병목 현상-기반 분석에 기초하여 문제를 공식화하고 NUMA 선택 워크플로우를 모델링한다.
3.1.1 NUMA 시스템들을 위한 서버 큐잉 모델
도 11에 도시된 것처럼, 듀얼-NUMA 시스템이 다중 경로 큐잉 모델로 모델링될 수 있다.
"사용자 어플리케이션" (즉, 단락 2에서 언급된 것처럼, "사용자 어플리케이션"은 "층 1: 사용자 어플리케이션" 및 "층 2: 분산 플랫폼 운영 시스템"의 일체형을 나타낸다)은 도착율 를 가지고 I/O 스트림을 발생하고, 도착율 는 (UA_CQ) 내에 사용자 어플리케이션 중앙 집중식 큐 내에 대기될 수 있다.
이 도착 스트림은 NUMA 경로, NUMA0 및 NUMA1 각각으로 2개의 서브 스트림들 및  을 추가적으로 분배한다.
3.1.1.1 경로에 따른 서버들
추가적으로, NUMA 시스템은 3가지 형태의 "서버들"을 가진다 (여기에서 사용된 "서버" 개념은 큐잉 모델에서 비롯된 것으로, 실제 데이터센터 서버 기계들을 의미하는 것은 아니다).
(1) NUMA 서버: 도 11에 2개의 NUMA들 내에 상부 2개의 박스들(310) 내에 도시된 것으로서, "CPU 코어들" 및 "메모리"를 하나의 단일 장치로서 모델링하고, NUMA 서버의 서비스 율 로서 전체적인 서비스 율을 사용한다.
(2) NIC 서버: 도 11에 2개의 NUMA들 내에 하부 2개의 박스들(320) 내에 도시된 것으로서, NIC 서비스 율로서 모든 NIC 포트 처리량을 합산한다.
.
다시 말하면, 이것은 NIC 포트들("n"개)을 통하여 NUMA N으로부터 타겟 T까지 모든 서브 경로들을 포함하는 전체 I/O 경로의 서비스 율을 나타낸다.
(3) 브릿지 서버: 도 11의 중간에 있는 박스(오른쪽 아래쪽 패턴)에 도시된 것처럼, 교차-브릿지 서비스 율은 브릿지 의 대역폭을 측정한다. 대개 브릿지는 2개의 NUMA들을 연결하고, 따라서 우리는 이러한 2개의 NUMA들을 나타내기 위하여 를 사용한다.
3.1.1.2 경로들 및 병목 현상
3가지 형태의 서버들이 도 12에 도시된 것처럼 모든 4개의 가능한 I/O 경로들을 따른다. 모델링 방법을 더 잘 설명하기 위하여, 도 13 및 도 14의 표들에 심볼들 및 설명을 나열한다. 상세하게, 경로들 1 및 3은 타겟이 할당된 NUMA로부터 직접적으로 도달할 수 있는 경우들이고, 이에 따라 브릿지는 사용되지 않는다. 경로들 2 및 4는 타겟이 할당된 NUMA로부터 도달 불가능하나 다른 NUMA로부터 도달가능한 경우들이고, 이에 따라, 브릿지는 타겟에 간접적으로 계산된 결과들을 전달하기 위하여 사용된다.
각 경로의 전체적인 실제 서비스 율은 해당 경로에서 가장 낮은 서비스 율을 가지는 서버에 의해서 병목 현상을 일으킬 수 있다. 예를 들면, 만일 경로 1에서 "NUMA 서비스 율"이 "NIC 서비스 율"보다 작다면, 경로 1의 서비스 율이 "NUMA 서비스 율"에 의해서 병목 현상을 일으킬 수 있다(과 동일하다). 유사하게, 만일 브릿지가 사용된다면 (예를 들면, 경로 2), 경로 2의 전체적인 서비스 율은 "NUMA 서비스 율", "NIC 서비스 율" 및 "브릿지 서비스 율"의 가장 작은 값이어야 한다.
3.1.2 병목 현상-기반 서비스 율 분석
3.1.2.1 브릿지를 사용하지 않는 것
경로들 1 및 3에 대해, 경로(즉, "NUMA 서버" 및 "NIC 서버")를 따라 단지 2개의 "서버들"이 있으며, (브릿지를 사용하지 않고) 각 NUMA의 전체적인 서비스 율을 아래의 식으로서 계산하기 위하여 2개의 서버들의 병목 현상을 사용할 수 있다.
식 3-1
3.1.2.2 브릿지를 사용하는 것
경로들 2 및 4에 대해, 경로(즉, "NUMA 서버", "NIC 서버", 및 "브릿지 서버")를 따라 3개의 "서버들"이 있다. 타겟-도달 불가능 NUMA를 "아웃(Out)"로 나타내고, 타겟-도달 가능 NUMA를 "인(In)"으로 나타낸다(여기에서 사용된 "아웃"는 "아웃바운드(outbound)"를 의미하고, "인"은 "인바운드(inbound)"를 의미한다). 추가적으로, "인" NUMA 상에 NIC 리소스는 브릿지가 사용될 때"인" 및 "아웃" NUMA들에 의해서 공유되기 때문에, 이"아웃" 경로가 사용 중인 NIC 리소스 비율을 나타내는 사용 팩터 를 사용한다. 이에 따라, (브릿지를 사용하는) "아웃" NUMA의 전체적인 서비스 율을 아래의 식으로서 계산할 수 있다.
식 3-2
식 3-2사실상, 는 또한 각 NUMA로 도착율 를 디스패치하는 방법을 직접적으로 판단한다. 추가적으로, 의 스위트 스폿(sweet spot)을 발견하는데 잇점이 있을 수 있고, 이에 따라 2개의 NUMA들의 전체적인 성능(Out B→T 및 In →T 경로들의 서비스 율들의 합)이 최대화될 수 있다. 이들에 대한 상세한 설명은 단락 3.2에서 설명된다. 식 3-2는 Out→B→T 경로를 계산하고, In→T 경로의 계산을 위하여 브릿지를 사용함에 의해서 발생되는 패널티를 고려할 필요가 있다. Out→B→T 경로 서비스 율 계산의 상세는 부단락 3.2.3.1에서 설명된다.
3.2 구성요소 1: NUMA-NIC 경로 선택기
부단락 3.1에서 제시된 병목 현상-기반 큐잉 모델에 기초하여, 구성요소 1에서 구현되는 NUMA 인식 경로 선택 알고리즘을 개발한다. 도 15a 및 도 15b는 구성요소 1의 메인 절차를 나타낸다. 도 16 및 도 17은 서브시스템 1의 알고리즘을 추가적으로 도시한다. 상세하게, 도 16의 라인들 2 및 3에서 구성요소들 1 및 2의 인스턴스들(instances)을 생성한 후에, 서브시스템 1은 I/O 스트림을 얻고, NUMA-NIC 경로들을 통하여 디스패치하기 위하여 I/O 스트림을 구성요소 1(라인들 4 및 5)로 전송한다. 라인들 7 및 8에서, 구성요소 1은 브릿지를 사용하지 않고 타겟으로 2개의 NUMA 경로들의 서비스 율들을 계산한다. 이러한 서비스 율들의 결과에 기초하여, 다음 부단락들에서 설명되는 것처럼, 문제를 3가지 케이스들로 나눌 수 있다.
3.2.1 케이스 1: NUMA들이 타겟에 연결 안됨
만일 NUMA들이 타겟에 도달 불가능이라면, 도 16의 라인들 9 및 10에 도시된 것처럼, 에러 메시지 "타겟들은 도달 불능이다"를 단순하게 회신한다.
케이스 1의 예 및 대응하는 큐잉 모델이 도 18 및 도 19에 도시되며, 2개의 NUMA들이 타겟 그룹 2의 디스크들에 도달할 수 없는 케이스를 도시한다.
3.2.2 케이스 2: 두개의 NUMA들이 타겟에 연결됨
만일 이용가능한 복수개의 NUMA 소켓들이 있고 2개의 NUMA들이 자신의 NIC들을 통하여 선호 타겟에 연결될 수 있다면, 경로 선택 및 부하 분산을 위한 시스템은 브릿지를 사용하지 않는다(즉, NUMA들이 서로의 메모리를 억세스하지 않고 간섭 및 성능 저하를 초래하지 않도록).
2개의 NUMA들이 모든 타겟들에 도달할 수 있는 예가 도 21에 도시되고, 도 22는 이 케이스의 큐잉 모델을 도시한다. 추가적으로, 부하를 분산하기 위하여 간단한 접근은 "numactl" 또는 시스템 확장 설정과 같은 도구를 사용한 로빈 방식을 사용하는 것이다. 그러나, 만일 이러한 2개의 NUMA 경로들이 다른 서비스 율들을 가진다면, ("NUMA 경로 서비스 율"로 정의된) 각 NUMA의 능력에 기초하여 부하를 분산할 수 있다.
이에 기초하여, 아래의 식에 따라 도착하는 I/O 스트림을 아래의 비율들로 NUMA 로 디스패치할 수 있다.
식 3-3
이것은 도 16의 라인들 11-13에 디스패치 함수에 의해서 달성될 수 있다. 상세하게, 구성요소 2의 디스패치 함수는 도 20의 표에 도시된 (도 17의 라인들 32 내지 41에 구현된) 5개의 입력들을 취한다. 식 3-3이 사용될 때, 복수개의 입력-출력 요청들 각각이 NUMA (제1 입력-출력 프로세서) 또는 NUMA (제2 입력-출력 프로세서) 중 하나로 디스패치되고, 타겟(예를 들면, 제1 타겟)에 대한 제1 입력-출력 프로세서의 서비스 율 및 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례하여 디스패치된다.
디스패치 함수는 "사용자 어플리케이션"이 대응하는 NUMA 소켓들 내에 힙(Heap) 메모리로부터 할당된 (식 3-3에 기초하여 할당된 I/O 요청들에 대하여) 사용자 버퍼들을 취하도록 한다. 이렇게 함에 의해서, 경로 선택 및 부하 분산을 위한 시스템은 시스템 내에 모든 리소스들을 더 효과적으로 사용할 수 있다.
3.2.3 케이스 3: 하나의 NUMA를 타겟에 연결함
만일 단지 하나의 NUMA가 타겟에 도달할 수 있다면, 2개의 선택을 가질 수 있다.
(1) 2개의 NUMA들을 사용하고, 데이터를 타겟-도달 불가능 NUMA로부터 타겟-도달 가능 NUMA의 NIC로 전달하는 브릿지를 사용한다. 이렇게 함으로써 이점은 모든 NUMA 코어들을 완전하게 이용할 수 있고 이렇게 함으로써 우려는 타겟-도달 가능 NUMA의 코어 서비스 율이 낮아질 수 있다는 것이다.
(2) 모든 I/O 들을 처리하기 위하여 타겟-도달 가능 NUMA만 사용한다.
3.2.3.1 브릿지를 사용할지 여부의 결정
경로 선택 및 부하 분산을 위한 시스템은 먼저 2가지 선택 사항들(즉, 브릿지를 사용하는 경우 및 사용하지 않는 경우) 하에 전체적인 NUMA 시스템의 전체적인 서비스 율에 기초하여 해결책을 평가한다. 경로 선택 및 부하 분산을 위한 시스템은 전체적인 NUMA 시스템의 전체적인 서비스 율을 개선하는 해결책을 선택한다. 경로 선택 및 부하 분산을 위한 시스템은 하나의 경로에 도달 가능이고 다른 경로에 도달 불능일 때만 브릿지를 사용하고(즉, 경우 3), 2개의 경로들에 모두 도달 불능일 때 브릿지를 사용하지 않을 수 있다(즉, 경우 2).
도 24는 단지 하나의 NUMA가 타겟 그룹 2 내의 타겟들에 도달할 수 있는 케이스 3의 예를 도시한다.
"브릿지를 사용하는"및 "브릿지를 사용하지 않는"것의 평가는 다음과 같은 설명된다.
먼저, 경로 선택 및 부하 분산을 위한 시스템은 도 16의 라인 14에 도시된 것처럼, 타겟에 도달할 수 있는 NUMA와 도달할 수 없는 NUMA를 식별하고, 그들을 각각 "인(In)" 및 "아웃(Out)"로서 표기한다. 이 때, 경로 선택 및 부하 분산을 위한 시스템은 만일 브릿지를 사용하지 않는다면, 전체적인 NUMA 시스템의 전체적인 서비스 율을 계산한다. 총 서비스 율은 단순하게 타겟 도달 가능 경로의 서비스 율이고, 아래의 식에 의해서 계산될 수 있다.
식 3-4
이는 도 16 및 도 17의 라인들 16, 25, 26으로부터 알 수 있다.
경로 선택 및 부하 분산을 위한 시스템은 만일 2개의 경로들: 타겟 도착 불가능 NUMA 경로(즉, 도 24에서 왼쪽 경로) 및 타겟 도착 가능 NUMA 경로(즉, 도 24에서 오른쪽 경로)를 포함하는 (도 16 및 도 17의 라인들 16 및 27-31에 도시된) 브릿지를 사용한다면, 전체 NUMA 시스템의 전반적인 서비스 율을 계산한다. 첫번째 경로(즉, Out→B→T)는 식 3-2를 사용하여 계산될 수 있고, 이후에 설명될 를 일시적으로 남겨둔다. 제2 경로(즉, In→T)에 대하여, 브릿지가 아래의 식으로 표현될 수 있는 “calPenalty” 기능을 호출함에 의해서 사용될 때 타겟-도착 가능 NUMA의 감소 정도를 반영하는 패널티 팩터 (도 17의 라인 29)를 계산할 필요가 있다.
식 3-5
이 calPenalty()는 런타임 동안 회귀될 수 있다. 오버헤드를 추가적으로 감소하기 위하여 이러한 회귀는 프리셋 타임 윈도우를 가지고 주기적으로 수행될 수 있다. 도 23의 표는 이 기능의 상세한 입력들을 나타낸다.
일단 패널티 팩터를 가지면, 최종적으로 오른쪽 경로의 서비스 율을 아래의 식을 사용하여 계산할 수 있다.
식 3-6
식 3-6에서, 는 타겟-도달 가능 NUMA로 디스패치되는 I/O들의 비율이다. 다시 말하면, 타겟-도달 불가능 NUMA에 의해서 사용되는 타겟-도달 가능 NUMA의 NIC 리소스의 서비스 율의 백분율이다. 만일 브릿지가 사용되지 않으면, 이다.
두 개의 서버 즉, NUMA "인"의 NUMA 코어 서비스 율과 NUMA "인"의 나머지 사용 가능한 NIC 서비스 율에 의해 병목 현상이 발생하는 것을 알 수 있다. 따라서, 브리지를 사용하는 전체 시스템 서비스 율은 다음과 같이 계산 될 수 있다.
식 3-7
아래의 식을 사용하여 를 최대화하는 의 스위트 스폿을 발견하기 위하여 기울기 감소 방법(gradient descent method)을 사용한다.
식 3-8
이 실시예에서 패널티 기능의 형태 또는 스위트 스폿을 찾는 방법을 제한하지 않는다. 예를 들어, 페널티 함수는 변수의 선형 함수 또는 변수의 다항 함수일 수 있다. 마지막으로, 경로 선택 및 부하 분산을 위한 시스템은 식 3-4 및 식 3-7의 값들을 비교하고, 현재 결정으로 더 큰 값을 가진 해결책을 선택한다. 일단 결정이 내려지면, 도 16 및 도 17의 라인들 18-24에 도시된 것처럼 에 기초하여 디스패치한다. 그 결과들은 도 17의 라인들 32 내지 40에 도시된 구성요소 2로 전송된다.
3.2.3.2 케이스 3(a): 두개의 NUMA들 모두 사용
도 16의 라인들 16 내지 18에 도시된 것처럼, 브릿지를 통하여 타겟-도달 가능 NUMA를 사용하는 성능 이득이 브릿지를 사용하지 않는 경우 보다 크면, 경로 선택 및 부하 분산을 위한 시스템은 브릿지의 도움으로 2개의 경로들을 모두 사용한다.
3.2.3.3 케이스 3(b): 하나의 NUMA를 사용
도 16의 라인들 13 내지 15b에 도시된 것처럼, 만일 브릿지를 사용하는 전체적인 NUMA 시스템의 전반적인 서비스 율이 실제적으로 브릿지를 사용하지 않는 경우 보다 작다면, 경로 선택 및 부하 분산을 위한 시스템은 브릿지를 사용하지 않고, 단순히 I/O 스트림들을 타겟-도달 가능 NUMA로 전송한다. 도 26에 도시된 것처럼, 이 예에서, 왼쪽 경로는 포기되고, 오른쪽 경로만 사용된다.
3.3 구성요소 2: NIC 부하 분산기
구성요소 1이 각 NUMA(즉, UA_CQ로부터 NUMA_CQs까지)로 할당하는 I/O 요청 스트림의 비율을 결정하지만, 해당 NUMA의 복수개의 NIC 포트들 사이(즉, NUMA_CQ로부터 NIC_CQs까지)에 I/O들을 추가적으로 디스패치하는 방법을 특정하지 않는다. 이는 경로 선택 절차 동안, 연산의 효율성을 위하여 구성요소 1은 부단락 3.1.1.1에 도시된 것처럼 하나의 단일"NIC 리소스 일체형"으로서 각 NUMA의 모든 NIC 포트 리소스들을 합한다.
그러나, 경로 선택 및 부하 분산을 위한 시스템은 NIC 포트들의 일부가 유휴 상태이고 나머지는 포화되어 리소스가 활용되지 않는 경우를 피하기 위하여 여전히 각 NUMA의 (선호 타겟에 도달할 수 있는) NIC 포트들을 통하여 부하들을 분산할 필요가 있다. 사실상, 경로 선택 및 부하 분산을 위한 시스템은 (단락 4에서 설명될) 구성요소들 3, 4, 및 5에서 각 NIC 포트 내부에서 보다 포괄적인 부하 분산을 수행한다.
포괄적인 부하 분산을 2번 수행하는 것을 피하기 위하여, 라운드 로빈 기술이 사용될 수 있으며, 이는 I/O 트래픽 속도를 개선하기 위하여 중요한 거의 무시할 수 있는 오버헤드이기 때문이다. 만일 NUMA 내에 m개의 NIC 포트들(NIC ID는 0부터 m-1일 수 있다)이 있다면, 이미 사용된 큐 쌍 ID 를 유지할 수 있다. 라운드 로빈은 각 새로운 I/O 요청에 대하여 에 1을 더함에 의해서 구현된다. 만일 결과가 경계치를 초과하면, 의 값은 아래의 식으로 표현된 것처럼 0으로 된다.
식 3-9
이는 또한 도 17의 라인들 33 내지 40으로부터 알 수 있다. 실제로, 만일 시스템이 충분하게 강력하다면(즉, 많은 유휴 상태의 CPU 및 메모리 리소스들을 가진다면), 하나는 또한 NIC-타겟 연결, 큐 워크로드 상태, 및 NIC-타겟 대역폭을 고려하는 단락 4에서 소개될 단순한 기술을 사용함에 의해서 이 단계에서 더 포괄적인 부하 분산을 수행할 수 있다.
4. 서브시스템 2: 큐 쌍 부하 분산 디스패처
제2 단계 디스패치 과정은 서브시스템 1에 의해서 할당된 NUMA-NIC 경로의 각 NIC 포트 내 큐 쌍들 사이에 I/O 부하들을 분산하는데 주력한다. 일부 실시예들에서, 경로 선택 및 부하 분산을 위한 시스템은 하드웨어 레벨 NIC 포트 연결을 수정하지 않으나, 각 NIC 포트의 큐 쌍들 내 부하 분산에 의해서 성능을 최적화하려고 한다.
이 단락에서, 먼저 큐잉 모델을 사용하여 문제를 공식화한다. 서브시스템 2에서 사용된 전반전인 워크플로우 및 알고리즘을 제안한다. 이 다음, 서브시스템 2에 구현된 3개의 구성요소들을 제시한다. 시스템을 더 잘 이해하기 위하여, 도 27에 도시된 표에 이러한 구성요소들의 주된 기능을 요약한다.
4.1 문제 공식화
일단 서브시스템 1이 NUMA-NIC 경로의 선택을 결정하면, I/O 요청들을 이 선택된 NUMA NIC 포트들에 할당한다. 각 선택된 NIC 포트에 대해, 이 할당된 I/O 요청들은 NIC 포트의 중앙 집중식 큐(즉, NIC_CQ) 내에 대기한다. 서브시스템 2는 각 NIC 포트 내부에 구현되고, 해당 NIC 포트 내 큐 쌍들을 통하여 부하를 분산하려고 한다.
이 부단락에서, 먼저 각 NIC 포트 내 큐 쌍들의 큐잉 모델을 제안하고, I/O 요청들의 데이터 구조 및 I/O들의 특징을 제안한다. 마지막으로, 서브시스템 2에서 사용될 수 있는 주된 워크플로우 및 알고리즘을 소개한다.
4.1.1. 큐 쌍들의 큐잉 모델
도 28은 각 NIC 포트(즉, NUMA-NIC 경로) 내부에서 I/O 디스패칭 및 큐 모델과 I/O 스택들 사이의 관계의 예를 도시한다. 여기에서, 타겟 그룹 2의 타겟 1에 연결하는 NUMA1 내 NIC3를 확대한다. 각 NIC 포트는 자신의 중앙 집중식 큐(즉, UA_CQ 및 NUMA_CQ가 아닌 NIC_CQ)를 가지고, 이 NIC 포트에 할당되는 모든 I/O들은 먼저 이 NIC_CQ 내에 대기한다. 디스패처는 이러한 큐된 I/O들을 부속된 큐 쌍들(QPs)로 하나씩 분배한다. 각 큐 쌍은 "층 4: 타겟"내에 대응하는 큐 쌍에 연결된다.
각 NIC 내에서 큐 쌍들의 연결 구성은 균일하고(즉, 이들 모두는 호스트 NIC 포트의 연결된 타겟을 억세스할 수 있다), 그러나, 큐 쌍들의 서비스 율들이 항상 런타임 동안 동일하다는 것을 용이하게 보장할 수 없다.
디스패처의 설계 목표는 선택된 NUMA-NIC 경로의 NIC 포트 내 모든 큐 쌍들을 통하여 부하를 분산하는 것이다(타겟 스택이 아닌 클라이언트 스택에서, 경로 선택 및 부하 분산을 위한 시스템은 타겟 스택 내에 어떤 것을 수정하는 것이 목적이 아니기 때문이다). NIC 포트의 큐 쌍들의 부하를 분산하면 결국 타겟 NIC들 내에 해당 큐 쌍들의 부하를 간접적으로 분산하는데 도움이 된다.
다음, 부하 분산을 수행하는데 필요한 객체들이 무엇인지를 특정할 필요가 있다. 일부 실시예들에서, NIC(NIC_CQ) 내 중앙 집중식 큐 내에 대기된 I/O 요청들을 분산한다. 단순화된 동종의 시나리오에서, 만일 이러한 I/O 요청들이 동일한 양의 워크로드를 가진다면(즉, 동일한 소요 시간을 소요하면), 대기된 I/O들의 개수에 기초하여 큐 쌍들(QPs)을 간단하게 분산할 수 있다. 그러나, I/O들이 동종이 아니고, 사실상, 어플리케이션들 또는 하나의 단일 어플리케이션으로부터 I/O들이 실제 경우들에서 큰 차이를 가질 수 있다.
다음 부단락에서, 일부 실시예들에서 I/O 요청들의 데이터 구조를 소개한다.
4.1.2 I/O 요청의 데이터 구조
NVMeOF 상의 경로 선택 및 부하 분산을 위한 시스템의 일부 실시예들에서, 각 I/O 요청은 아래와 같은 키 및 값 객체(object)를 포함하는 인스턴트화된 데이터 구조로 캡슐화될 수 있다.
IO _ pkt _ struct : [key_ ptr , value_ struct ]
value_struct는 아래와 같이 정의된다.
value_ struct : [value_ ptr , value_size, length, offset, operation]
도 29에 도시된 표는 각 파라메타의 세부 사항을 기술한다. 도 30은 추가적으로 이들의 토폴로지를 나타낸다.
관찰에 기초하여, 성능(대기 시간)에 영향을 미치는 이들 파라메타들 중 지배적인 요소는 "길이"(즉, I/O 크기) 및 "동작" (즉, 리드, 라이트, 삭제, 등)이다.
그 이유는 간단하다. 만일 I/O 요청 #1이 4KB 리드이고, I/O 요청 #2가 10MB 라이트인 경우, 디스패처는 다른 소요 시간(즉, I/O 종료 시간)으로 종료될 것이므로 동일하게 취급해서는 안된다.
따라서, 경로 선택 및 부하 분산을 위한 시스템은 그들의 (추정된) 실제 워크로드(소요 시간)에 기초하여 I/O들을 변환함에 의해서 그들의 특징에 기초하여 I/O들을 구별할 필요가 있다. 이 변환에 대한 상세 내용은 부단락 4.2에서 설명될 것이다.
4.1.3 구성요소들 사이의 전반적인 워크플로우
(i) 도 32 및 (ii) 도 33과 도 34에 서브시스템 2의 워크플로우 차트 및 알고리즘 코드를 각각 도시한다. 일단 NIC 포트가 서브시스템 1으로부터 할당된 I/O 요청들을 수신하면, 할당된 I/O 요청들이 NIC_CQ 내에 대기한다. 서브시스템 2는 이 NIC가 하나의 큐 쌍만 가지는지 아닌지 여부를 구성요소 3에게 묻는다(도 33의 라인 7). 만일 그렇다면, 모든 I/O들을 하나의 큐 쌍으로 전송한다. 이 경우에 모든 큐 쌍들로 부하를 분산할 필요가 없기 때문이다. 만일 아니라면, (도 33의 라인 10에 도시된 것처럼) 현재 시간이 새로운 전략 업데이트 윈도우에 도달했는지 여부를 추가적으로 체크한다. 도 35 내지 도 38에 도시된 표들은 서브시스템 2에서 사용되는 2개의 에포크 윈도우들과 이들의 기능들의 상세 내용을 도시한다.
만일 그렇다면, 경로 선택 및 부하 분산을 위한 시스템은 NIC_CQ 내에서 현재 I/O 트래픽의 스파이크 정도를 검출하기 위하여 구성요소 4를 호출한다. 일단 전략을 재조절할 시간이 되면, 중앙 집중식 큐 I/O 스파이크 정도를 계산하기 위하여 "구성요소 4: 워크로드 스파이크 검출기"가 호출된다. 그렇지 않으면, 현재의 에포크와 동일한 부하 분산 전략을 유지한다.
즉, 일단 부하 분산 전략이 결정되면, 서브시스템 2는 그 전략에 고정되고, (필요하다면) 현재 전략을 디스패치하는데 도움이 되도록 "구성요소 3: 큐 쌍 부하 모니터"가 사용된다. 이 게으른 "전략 업데이팅" 주파수는 업데이팅 비용을 줄이도록 설계되었다.
스파이크 정도 결과는 3가지 전략들 사이를 스위치하는 "구성요소 5: 큐 쌍 부하 분산기"로 전송된다(도 33의 라인들 10 내지 18 및 도 34의 라인들 19 내지 37). 이에 대한 상세 내용이 다음 부단락들에서 소개될 것이다.
부단락 4.1.2에 기술된 것처럼, I/O들의 개수가 충분하지 않은 것을 고려하면, 경로 선택 및 부하 분산을 위한 시스템은 I/O들을 (추측된) 실제 워크로드(소요 시간) 에 기초하여 I/O들을 변환함에 의해서 I/O들의 특징에 기초하여 I/O들을 구별할 필요가 있다. 경로 선택 및 부하 분산을 위한 시스템은 아래의 식으로서 I/O 요청의 동작 형태에 대하여 큐 쌍 q의 서비스 율에 의해서 I/O 요청의 크기를 나눔에 의해서 (로서 표기된) 단일 I/O의 실제 워크로드 양을 추측한다.
식 4-1
예를 들면, 만일 라이트 I/O가 1024KB 크기를 가지고, 이 큐 쌍의 라이트 율이 1024 MB/sec라면, 실제 워크로드 양은 대략 0.001sec이다. 다시 말하면, 식 4-1을 계산하기 위하여, 경로 선택 및 부하 분산을 위한 시스템은 새로운 I/O의 크기 및 형태의 정보, 및 이 새로운 I/O의 형태에 대한 각 큐 쌍의 서비스 율을 가져올 필요가 있다.
비록 동일 NIC 포트 내에 모든 큐 쌍들이 동일한 형태의 동작에 대해 대개 동일한 서비스 율을 가지는 것으로 보이지만, 식 4-1은 또한 동일한 NIC 포트가 동일한 형태의 동작에 대해 이종의 서비스 율을 가지는 (즉, 에 의해서 반영된)드문 경우를 지원한다.
식 4-1에 기초하여, 경로 선택 및 부하 분산을 위한 시스템은 큐 쌍 q 내에서 I/O 요청들의 모든 실제 워크로드의 양을 합산함에 의해서 아래의 식에 (로서 나타낸) 큐 쌍 q내서 모든 대기된 I/O 요청들의 총 실제 워크로드의 양을 추가적으로 계산할 수 있다.
식 4-2
이들 큐 워크로드 상태를 매우 빈번하게 모으고 계산하는 것은 비싼 작업일 수 있으며, 경로 선택 및 부하 분산을 위한 시스템은 주기적으로 큐 상태를 "재측정"(recalibrate)하기 위해 에포크 윈도우(queueStatusUpdateWindow)를 가진다. 이것은 오버헤드를 감소시킬 수 있으나, 차선의 디스패칭 해결책으로 이어질 수 있는 정보 지연을 초래한다.
예를 들면, 높은 트래픽 시간(예를 들면, 높은 I/O 스파이크 시간)에서, 이 지연은 마지막 에포크에서 가장 유휴 상태인 큐 쌍에 모든 I/O들을 할당하는 것으로 이어질 수 있으며, 반면에, 다른 큐 쌍들은 그들이 그들의 대기된 I/O들을 종료했기 때문에 유휴 상태일 수 있다. 이러한 불균형은 시스템 리소스를 낭비할 뿐만 아니라 백로그(baglog)를 유발한다. 따라서, 스파이크 정도(부단락 4.3)를 추가적으로 검출할 필요가 있고 다른 스파이크 정보 사나리오를 위한 다른 부하 분산 전략을 적용한다.
4.3 구성요소 4: 워크로드 스파이크 검출기
경로 선택 및 부하 분산을 위한 시스템이 단일 점수(즉, 정도 값)에서 I/O 요청 스파이크들을 정성적으로 캡쳐하고 스파이크 기간의 시작과 종료를 예측(또는 식별)할 수 있도록 하기 위하여, 구성요소 4에서 구현된 "SCV-자동상관(autocorrelation)"기반 스파이크 검출 방법을 제시한다. 상세하게, 스파이크의 정도는 확률론적 과정의 분산 인덱스 로서 아래의 식으로서 정의될 수 있다.
식 4-3
스파이크 정도는 자기 상관-기반 함수의 제곱 계수 변동(SCV: squared-coefficient of variation)이다. SCV와 자기 상관이 함께 존재하면 I/O 워크로드들을 다른 스파이크 강도들로 차별화하기에 충분하다.  는 ACF(예를 들면, 는 1, 2, 3, 4 등일 수 있음)의 가중치를 조절할 수 있는 미리 설정된 노브(knob)이다. 는 t와 사이의 지연(lag)이고, 는 NIC 중앙 집중식 큐(NIC_CQ) 대기된 I/O 수의 분산이다.
도착 분포는 시간 독립적인 과정을 의미하는 넓은 의미의 정적 과정을 따른다고 가정한다. 결과적으로, 상관 관계가 한쌍의 값들 사이의 시간-거리에만 의존하지만 시간에서 그들의 위치에는 의존하지 않기 때문에 자기 상관은 지연 에만 의존한다.
각 스파이크 정도 유형의 미리 설정된 범위에 따라, 경로 선택 및 부하 분산을 위한 시스템은 현재 에포크의 각 I/O 트래픽을 3개의 정도 중 하나로 용이하게 분류한다. 예를 들면, 도 39는 제안된 SCV-자기 상관 기반 스파이크 검출의 예를 나타내고, 여기에서, SS, MS, 및 WS는 강한 스파이크, 중간 스파이크, 및 약간 스파이크를 각각 나타낸다.
4.4 구성요소 5: 큐 쌍 부하 분산기
상술된 것처럼, 워크로드 불균형으로 인해 리소스가 제대로 활용되지 않을 수 있고 전체적인 시스템 성능이 저하될 수 있다.
부하 분산 절차 동안 하나의 도전 과제는 큐 쌍 상태 정보를 "신뢰"할 수 있는 정도를 결정하는 것이다.
하나는 큰 오버헤드를 유발하는 모든 상세한 정보를 지속적으로 수집할 수 없다.
또한, 하나는 오래된 지연은 부하 분산을 잘못 리드할 것이기 때문에, 이전 큐 쌍 상태에 단순하게 의존할 수 없다.
이러한 도전 과제를 극복하기 위하여, 경로 선택 및 부하 분산을 위한 시스템은 스파이크 정도를 검출하고, 큐 상태 정보에 대해 다른 "신뢰"정도를 가지는 3가지 다른 전략들 사이를 전환한다.
직관적으로, 높은 트래픽 I/O 시간에서 수집된 큐 쌍 상태 정보는 저 트래픽 시간에서의 큐 쌍 상태 정보 보다 신뢰하기가 어렵다.
3가지 다른 부하 분산 전략의 세부 사항은 아래의 3개의 부단락에서 설명될 것이다.
4.4.1 경우 1: 강한 스파이크 정도
강한 스파이크(구성요소 4에 의해서 검출된 많은 수의 I/O들)가 도착하는 경우(예를 들면, 워크로드 스파이크 정도가 제1 문턱 값을 초과하는 경우), 가장 간단한 디스패칭 방법들 중의 하나인 라운드 로빈 방법을 사용한다. 그 이유는 이러한 높은 트래픽 기간에 각 큐 쌍의 실제 워크로드의 양을 획득하는 것은 비용이 많이 들고 그 정보가 높은 트래픽으로 인해 지연된 것일 수 있기 때문이다. 이러한 지연은 모든 I/O들을 이전의 가장 낮은 워크로드 큐로 전송하여 해당 큐를 포화시켜 불균형을 유발함에 의해서 시스템을 잘못 이끌게 된다. 즉, 큐 쌍 상태 정보를 신뢰할 수 없고 높은 트래픽으로 인해 많은 복잡한 연산을 수행할 시간이 없다.
라운드 로빈은 큐 쌍 상태 정보를 얻는 것과 분산 정도를 계산하는 것의 두가지 동작에 대해 오버헤드가 없다(즉, 두가지 동작을 모두 수행할 필요가 없다). 이 구현에서, 경로 선택 및 부하 분산을 위한 시스템은 이전 큐 쌍 번호 k를 유지하고, 새로운 I/O 요청 마다 하나씩 추가한다. 만일 경계치를 초과하면, 아래의 식으로 표현된 것처럼 0으로 되돌아 가게 한다(큐 쌍 번호는 0에서 까지이다).
식 4-4
식 4-4로부터 볼 수 있듯이, 왼쪽 편 k는 새로운 I/O를 할당하기 위한 k의 다음 라운드 선택이고, 이 k는 그 자신의 이전 값 (k+1)에 실질적으로 기초한다. 라운드 로빈은 새로운 I/O 요청의 특징에 독립적이라는 것을 알 수 있다. 유일한 제약 조건은 아래의 식으로 표현된 것처럼 선택된 큐 쌍들이 가득차지 않았는지(즉, 적어도 새로운 I/O 요청에 대해 하나의 슬롯을 가지는지) 확인해야 한다는 것이다.
식 4-5
여기에서, 는 큐 쌍 k내에서 대기된 I/O들의 수를 의미하고, 는 큐 쌍 k의 미리 설정된 큐 크기(예를 들면, 큐 쌍 k내에 대기되도록 허여된 I/O들의 최대 수)를 의미한다.
4.4.2 경우 2: 중간 스파이크 정도
중간 스파이크 정도 상황 하에서(예를 들면, 워크로드 스파이크 정보가 제2 문턱 값을 초과하고, 제1 문턱 전압을 초과하지 않을 때), 큐 상태 정보 및 실질적 큐 상태의 지연은 고 스파이크 정도 에포크의 지연 보다 작다. 즉, 경로 선택 및 부하 분산을 위한 시스템은 높은 스파이크 보다 지연된 큐 상태 정보를 더 "신뢰"할 수 있고, 더 자세한 큐 상태 정보를 얻고 사용하기 위하여 "약간의 시간"이 더 필요하다.
결과로서, 경로 선택 및 부하 분산을 위한 시스템은 "결합 최단 큐(JSQ: Join Shortest Queue)"전략을 사용한다. JSQ는 다른 큐 쌍들이 유휴 상태인 때 여러 I/O들을 가지는 하나의 큐 쌍의 확률을 줄이기 위해 큐 쌍들의 부하를 분산하려고 한다. JSQ 전략을 구현하기 위한 2가지 옵션들이 있으며, 이들 중 어느 하나의 사용을 제한하지 않는다. 전반적인 시스템 이용 비율이 매우 높으면 옵션 1이 JSQ를 처리하기에 충분하고, 그렇지 않으면, 옵션 2는 보다 정확한 디스패치를 제공하기 위하여 사용될 수 있다.
옵션 1: 간단한 구현
워크로드 양을 나타내기 위해 대기된 I/O들의 수를 단순히 사용하는 것이 JSQ의 요청을 충족할 수 있는 빠른 동작이다. 트레이드오프는 I/O들의 차이를 고려하지 않기 때문에 정확하지 않을 수 있다는 것이다. 아래의 식 4-6은 가장 작은 수의 대기된 I/O 요청들을 가지는 큐 쌍으로 인커밍(incoming) 요청을 할당하는 과정을 보여준다. 가장 작은 수의 대기된 I/O 요청들을 가지는 큐 쌍은 "현재 대기된 I/O 번호"와 "1(이 큐 쌍에 할당할 수 있는 하나의 새로운 I/O 요청)"의 합이 가장 낮은 큐 쌍 k을 반환하는 큐 쌍이다. 반면에, 부단락 4.4.1과 마찬가지로 새로운 I/O 요청을 추가하기 전에 각 큐 쌍이 가득 차 있지 않은지 확인해야 한다.
식 4-6
그리디 접근법(greedy approach)으로서, 다음의 방법으로 쓰여질 수 있다. 큐 쌍들(Q)의 세트가 주어지면, k를 아래의 식으로 찾는다.
식 4-7
옵션 2: 실제 워크로드 양 변환 구현
각 큐 쌍의 실제 워크로드 양을 더 정확하게 반영하기 위하여, 제2 구현은 새로운 I/O의 (변환된) 실제 워크로드 양을 추가할 뿐만 아니라 각 큐 쌍의 실제 워크로드 양을 추가적으로 계산한다.
먼저, 새로운 I/O 요청 i가 큐 쌍 k에 할당될 때, 큐 쌍 q에 대기된 모든 I/O 요청들의 총 실제 워크로드 양을 정의한다. k가 주어지면, 큐 쌍 q의 총 워크로드의 양(로서 정의된)을 아래의 식을 사용하여 계산할 수 있다.
식 4-8
식 4-8에서 가 부분 함수인 이유는 큐 쌍 q가 워크로드 양과 함께 새로운 I/O k를 수신하기 위하여 선택될 때 새로운 I/O 요청의 워크로드 양 을 카운트할 필요가 있기 때문이다. 즉, 큐 쌍 k 및 새로운 I/O의 할당 큐 쌍 q이 주어지면, 식 4-8은 새로운 I/O가 이 큐 쌍( 또는 )에 할당되는지를 고려하여 이 큐 쌍 k의 총 워크로드 양을 계산하는 기능을 제공한다. I/O k를 수신하기 위하여 큐 쌍 k가 선택되는지 아닌지에 기초하여 k가 큐 쌍 q와 동일하거나 동일하지 않을 수 있음을 알 수 있다. 식 4-8에 기초하여, 식 4-9에 기재된 것처럼 (큐가 가득차지 않으면 새롭게 추가된 I/O를 포함하는) 가장 낮은 큐인 k를 찾는 최적화 프레임워크를 개발한다. 인커밍 요청을 대기된 요청들의 적어도 실제 워크로드 양을 가지는 큐 쌍으로 할당한다. 상세하게, 는 큐 쌍 k가 새로운 I/O 요청 i를 수신하기 위하여 선택되는 것을 의미하고, 는 대기된 I/O들의 총 워크로드의 양 과 새로운 I/O 요청들의 총 워크로드의 양 의 합이다. 즉, 옵션 2에서, I/O의 수보다는 예측된 워크로드에 기초하여 대기된 I/O들과 새로운 I/O를 처리한다.
식 4-9
유사하게, 이 식은 아래의 방법으로 쓰여질 수 있다.
큐 쌍들의 세트 Q 및 새로운 I/O 요청 i가 주어지면, k는 아래의 식으로 찾을 수 있다.
식 4-10
4.4.3 경우 3: 약한 스파이크 정도
약한 스파이크 정도 상황 동안(예를 들면, 워크로드 스파이크 정도가 제2 문턱 값보다 작을 때), 경로 선택 및 부하 분산을 위한 시스템은 (1) 실제 워크로드 양 및 (2) 더 정확한 분산 정도 측정을 고려하는 "완전한" 최적화를 수행하기 위한 시간을 가진다. 요구 1을 위하여, 식들 4-1 및 4-2를 사용할 수 있다. 요구 2를 위하여, 표준 편차(즉, 분산의 제곱근)를 사용하는 것이 일반적인 방법이지만 평균과 같은 "동일한 단위"(즉, 입력들의 절대 개수)와 결합된다.
이들을 분리하기 위해, 큐 쌍 워크로드 분포의 분산을 평가하기 위하여 "상대 표준 편차(RSD: Relative Standard Deviation)"로 알려진 "변동 계수(CV: Coefficient of Variation)"를 사용한다. 기본적으로, CV는 표준 편차와 평균의 비율이다. CV의 계산은 아래와 같이 나타낸다.
먼저, 주어진 k(I/O 요청을 할당하려고 시도하는 선택된 큐 쌍으로서)에 대해, 경로 선택 및 부하 분산을 위한 시스템은 큐 쌍들의 세트 Q 내에 모든 큐 쌍들에 대기된 모든 I/O 요청들의 평균 총 실제 워드로드 양을 계산한다.
식 4-11
경로 선택 및 부하 분산을 위한 시스템은 표준 편차를 식 4-11에서 계산된 평균으로 나눔에 의해서 CV를 계산한다.
식 4-12
이것은 새로운 I/O 요청 i를 받아들이기 위하여 선택된 큐 쌍 k가 주어지면, 새로운 I/O가 k에 추가된 후 큐 쌍 세트 Q내 모든 큐 쌍들의 분산 정도가  임을 의미한다. 작은 CV 값은 NIC포트 내에서 더 좋은 부하 분산 결과를 나타낸다. 이를 바탕으로, 식 4-13에 나타낸 것처럼 불균형(imbalance) 정도를 최소화하는 것을 목표로 하는 "minCV" 전략을 제시한다.
식 4-13
이것은 3가지 제약 조건들 하에 객체 함수를 최소화하는 최적화 프레임워크이다. 첫번째 제약 조건은 q(반복된 큐 쌍)와 k(새로운 I/O를 할당하기 위한 큐 쌍)가 NIC 포트에서 모든 이용가능한 큐 쌍들의 세트 내에 있어야 한다는 것이다. 두번째 및 세번째 제약 조건들은 큐 쌍들이 I/O 요청 수 단위로 미리 설정된 큐 용량 이상으로 대기해서는 안된다.
본 최적화 프레임워크는 큐 쌍 실제 워크로드 양의 CV를 최소화하려고 하기 때문에 "minCV"라고 부른다. 즉, CV의 최소 값을 취득하기 위하여 k를 찾으려고 한다.
식 4-14
여기에 설명된 동작들의 일부 또는 전부는 하나 이상의 처리 회로에 의해 수행될 수 있다. "처리 회로"라는 용어는 데이터 또는 디지털 신호를 처리하기 위해 사용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 의미하는 것으로 여기에서 사용된다. 처리 회로 하드웨어는 예를 들어 주문형 집적 회로 (ASIC), 범용 또는 특수 목적 중앙 처리 장치 (CPU), 디지털 신호 프로세서 (DSP), 그래픽 처리 장치 (GPU), 및 필드 프로그램 가능한 게이트 어레이 (FPGA)와 같은 프로그램 가능한 장치를 포함할 수 있다. 본 명세서에서 사용되는 처리 회로에서, 각 기능은 그 기능을 수행하기 위해 구성된 하드웨어 또는 비 일시적 저장 매체에 저장된 명령을 실행하도록 구성된 CPU와 같은 범용 하드웨어에 의해 수행된다. 처리 회로는 단일 인쇄 회로 기판 (PCB) 상에 제조되거나 몇몇 상호 접속 된 PCB 상에 분산되어 제조될 수 있다. 처리 회로는 다른 처리 회로를 포함할 수 있다. 예를 들어 처리 회로는 PCB 상에 상호 접속된 2개의 처리 회로, FPGA 및 CPU를 포함할 수 있다.
"제 1", "제 2", "제 3"등의 용어는 본 명세서에서 다양한 구성 요소들, 소자들, 영역들, 층들 및/또는 섹션들을 설명하기 위해 사용될 수 있지만, 이들 구성 요소들, 소자들, 영역들, 층들 및/또는 섹션들은 이들 용어들에 의해 제한되지 않아야 한다. 이들 용어는 하나의 구성 요소, 소자, 영역, 층 또는 섹션을 다른 구성 요소, 소자, 영역, 층 또는 섹션과 구별하기 위해서만 사용된다. 따라서, 본 명세서에서 논의된 제1 구성 요소, 소자, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않으면서 제2 구성 요소, 소자, 영역, 층 또는 섹션으로 지칭될 수 있다.
"아래에(beneath)", "아래에(below)", "아래에(lower)", "아래에(under)", "위에(above)" "상부에(upper)" 등과 같은 공간적으로 상대적인 용어는 본 명세서에서 설명의 편의를 위해 하나의 요소 또는 특징 도면에 도시된 바와 같이 다른 요소(들) 또는 특징(들)과의 관계를 나타낼 수 있다. 그러한 공간적으로 관련된 용어는 도면에 도시된 방향에 추가하여 사용 또는 작동 시 장치의 상이한 방향을 포함하도록 의도된 것으로 이해 된다. 예를 들어, 도면의 장치가 뒤집어지면, 다른 요소들 또는 특징들의 "아래(below)" 또는 "아래(beneath)"또는 "아래(under)"로 기술된 요소는 다른 요소들 또는 특징들의 "위에(above)"에 위치될 것이다. 따라서, "아래(below)"및 "아래(under)"의 예시적인 용어는 위와 아래의 방향 모두를 포함할 수 있다. 장치는 다른 방향으로 위치될 수 있고(예를 들어, 90도 또는 다른 방향으로 회전 될 수 있음), 본 명세서에서 사용된 공간적으로 상대적인 기술어는 그에 따라 해석되어야 한다. 또한, 하나의 층이 2개의 층들 사이에 있는 것으로 언급될 때, 2개의 층들 사이의 유일한 층일 수 있거나 하나 또는 그 이상의 개재된 층이 존재할 수 있음이 또한 이해 될 것이다.
본 명세서에서 사용된 용어는 특정 실시예를 설명하기 위한 것이며, 본 발명의 개념을 제한하고자 하는 것은 아니다. 본 명세서에서 사용되는 용어 "실질적으로", "약"및 유사한 용어는 근사 용어로 사용되며 학위 용어로 사용되지 않으며, 측정된 또는 계산된 값의 고유한 편차를 설명하기 위한 것이라는 것을 본 기술 분야의 통상의 지식을 가진 자라면 이해할 것이다.
본원에서 사용된 단수 형태 "a" 및 "an"은 문맥에 달리 명시되지 않는 한 복수 형태를 포함하는 것으로 의도된다. 본 명세서에서 사용되는 "포함하는" 및/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 소자 및/또는 구성 요소의 존재를 나타내지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 소자, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않음을 이해할 수있다. 본원에 사용된 바와 같이, "및/또는"이라는 용어는 하나 이상의 관련된 목록화된 항목의 임의의 조합 및 모든 조합을 포함한다. "적어도 하나"와 같은 표현은 소자 목록 앞에서 소자들의 전체 목록을 수정하고 목록의 개별 요소를 수정하지 않는다. 또한, 본 발명의 개념의 실시예를 기술할 때 "할 수 있다(may)"를 사용하는 것은 "본 발명의 하나 이상의 실시예"를 의미한다. 또한, "예시적인"이라는 용어는 예 또는 설명을 의미한다. 본 명세서에 사용된 바와 같이, 용어 "사용(use)", "사용하는(using)" 및 "사용된(used)"은 각각 "활용(utilize)", "활용(utilizing)" 및 "활용된(utilized)"과 동의어로 간주될 수 있다.
구성 요소 또는 층이 다른 구성 요소 또는 층의 "위에", "연결된", "결합 된"또는 "인접한"으로 언급 될 때, 이는 직접 또는 그 위에 연결될 수 있음을 이해할 것이다. 하나 이상의 개재 요소 또는 층이 존재할 수 있다. 대조적으로, 요소 또는 층이 다른 요소 또는 층에 "직접적으로 위에", "직접적으로 연결된", "직접적으로 결합된"또는 "바로 인접한"으로 언급 될 때, 개재하는 요소 또는 층이 존재하지 않는다.
본원에 인용된 임의의 수치 범위는 열거된 범위 내에 포함되는 동일한 수치 정밀도의 모든 하위 범위를 포함하도록 의도된다. 예를 들어, "1.0 내지 10.0"의 범위에는, 지정된 1.0의 값과 10.0의 값의 사이의 모든 부분 범위, 즉, 1.0과 동일하거나 큰 최소 값과 10.0과 동일하거나 작은 최대 값, 예를 들면, 2.4 내지 7.6과 같은 값을 포함하는 것으로 의도된다. 본원에 인용된 최대 수치 제한은 여기에 포함되는 더 낮은 모든 수치 제한을 포함하도록 의도되며, 본 명세서에 인용된 임의의 최소 수치 제한은 여기에 포함되는 모든 더 높은 수치 제한을 포함한다.
지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법의 예시적인 실시예가 본 명세서에 구체적으로 설명되고 예시되었지만, 많은 수정 및 변형이 당업자에게 명백할 것이다. 따라서, 본 명세서의 원리에 따라 구성된 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법은 여기에 구체적으로 기술된 것 이외에 구현될 수 있다는 것을 이해해야 한다. 본 발명은 또한 다음의 특허 청구 범위 및 그 균등물에 의해서 정의된다.

Claims (20)

  1. 복수개의 영구적인 스토리지 타켓들의 제1 부집합에 연결되는 제1 입력-출력 프로세서가 상기 복수개의 영구적인 스토리지 타겟들 중 제1 타겟에 연결되었는지를 판단하는 단계;
    상기 제1 부집합의 적어도 하나와 다른 적어도 하나의 영구적인 스토리지 타겟을 포함하는 상기 복수개의 영구적인 스토리지 타겟들의 제2 부집합에 연결되는 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되었는지를 판단하는 단계; 및
    상기 제1 입력-출력 프로세서가 상기 제1 부집합 중 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제2 부집합 중 상기 제1 타겟에 연결되는 것을 판단하는 것에 응답하여, 제1 복수개의 입력-출력 요청들 각각을 상기 제1 입력-출력 프로세서 또는 상기 제2 입력-출력 프로세서로 디스패치하는 단계를 포함하고,
    상기 디스패치하는 단계는 상기 제1 타겟에 대한 상기 제1 입력-출력 프로세서의 서비스 율 및 상기 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례하여 수행되는 것을 특징으로 하는 입력-출력 디스패치 방법.
  2. 제1 항에 있어서, 상기 제1 입력-출력 프로세서 및 상기 제2 입력-출력 프로세서는 브릿지에 의해서 연결되고,
    상기 방법은
    상기 제1 입력-출력 프로세서가 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 브릿지를 통해 상기 제1 타겟에 연결되는 것을 판단하는 것에 응답하여,
    입력-출력 요청들이 상기 제1 입력-출력 프로세서로만 디스패치되는 구성을 위한 제1 서비스 율을 예측하는 단계;
    상기 입력-출력 요청들이 상기 제1 입력-출력 프로세서 및 상기 제2 입력-출력 프로세서 모두로 디스패치되는 구성을 위한 제2 서비스 율을 예측하는 단계;
    상기 제1 서비스 율과 상기 제2 서비스 율을 비교하는 단계;
    상기 제1 서비스 율이 상기 제2 서비스 율을 초과하는 것을 판단하는 것에 응답하여, 복수개의 제2 입력-출력 요청들을 상기 제1 입력-출력 프로세서로 디스패치하는 단계; 및
    상기 제1 서비스 율이 상기 제2 서비스 율 보다 작다고 판단하는 것에 응답하여, 복수개의 제3 입력-출력 요청들의 제1 부집합을 상기 제1 입력-출력 프로세서로 디스패치하고, 상기 복수개의 제3 입력-출력 요청들의 제2 부집합을 상기 제2 입력-출력 프로세서로 디스패치하는 단계를 추가적으로 포함하는 입력-출력 디스패치 방법.
  3. 제2 항에 있어서, 상기 제2 서비스 율을 예측하는 단계는
    조정가능한 파라메타에 대한 서비스 율 함수의 최대 값을 찾는 단계를 포함하고,
    상기 조정가능한 파라메타는 상기 제2 입력-출력 프로세서로 디스패치되는 상기 입력-출력 요청들의 일부이고,
    상기 서비스 율 함수는 상기 제1 타겟에 대한 총 서비스 율의 모델인 입력-출력 디스패치 방법.
  4. 제3 항에 있어서, 상기 서비스 율 함수는 패널티 함수의 함수이고, 상기 패널티 함수는 상기 입력-출력 요청들의 라우팅의 결과로서 상기 제1 입력-출력 프로세서로부터 상기 제1 타겟으로 직접적으로 서비스 율의 감소를 예측하는 함수이고,
    상기 입력-출력 요청들의 라우팅은 상기 제2 입력-출력 프로세서, 상기 브릿지, 및 상기 제1 입력-출력 프로세서를 통하여 상기 제1 타겟으로의 라우팅인 입력-출력 디스패치 방법.
  5. 제1 항에 있어서, 상기 제1 입력-출력 프로세서는 제1 큐 쌍 및 제2 큐 쌍을 포함하는 제1 네트워크 인터페이스 카드를 포함하고,
    상기 방법은
    상기 제1 네트워크 인터페이스 카드의 중앙 집중된 큐 작업 수들에 따라 상기 제1 네트워크 인터페이스 카드의 워크로드의 측정인 워크로드 스파이크 정도를 예측하는 단계; 및
    상기 제1 네트워크 인터페이스 카드의 각 큐 쌍으로 각 인커밍 입력-출력 요청을 할당하는 전략을 선택하는 단계를 추가적으로 포함하는 입력-출력 디스패치 방법.
  6. 제5 항에 있어서, 상기 워크로드 스파이크 정도를 예측하는 단계는,
    제1 시점 및 제2 시점에서 중앙 집중화된 큐 대기 작업 수들, 상기 제1 시점 및 상기 제2 시점에서 평균 중앙 집중화된 큐 대기 작업 수들 및 제곱 변동 계수에 따라, 상기 워크로드 스파이크 정도를 계산하는 단계를 포함하는 입력-출력 디스패치 방법.
  7. 제5 항에 있어서, 상기 방법은,
    상기 워크로드 스파이크 정도와 제1 임계치를 비교하는 단계; 및
    상기 제1 큐 쌍의 길이를 예측하는 단계를 더 포함하고,
    상기 방법은,
    상기 워크로드 스파이크 정도가 상기 제1 임계치를 초과한다고 판단하는 것에 응답하여, 라운드 로빈 순서로 각 인커밍 입력-출력 요청을 상기 제1 네트워크 인터페이스 카드 내의 큐 쌍들로 할당하는 단계를 추가적으로 포함하는 입력-출력 디스패치 방법.
  8. 제7 항에 있어서, 상기 방법은
    상기 워크로드 스파이크 정도와 상기 제1 임계치 보다 작은 제2 임계치를 비교하는 단계;
    상기 제1 큐 쌍의 길이를 예측하는 단계; 및
    상기 제2 큐 쌍의 길이를 예측하는 단계를 포함하고,
    상기 방법은,
    상기 워크로드 스파이크 정도가 상기 제1 임계치 보다 작고 상기 제2 임계치를 초과한다고 판단하는 것에 응답하여, 인커밍 입력-출력 요청을 상기 제1 큐 쌍과 상기 제2 큐 쌍 중 더 짧은 하나로 할당하는 단계를 추가적으로 포함하는 입력-출력 디스패치 방법.
  9. 중앙 집중식 처리 회로,
    복수개의 영구 스토리지 타겟들,
    제1 입력-출력 프로세서, 및
    제2 입력-출력 프로세서를 포함하고,
    상기 중앙 집중식 처리 회로는
    상기 복수개의 영구적인 스토리지 타켓들의 제1 부집합에 연결되는 상기 제1 입력-출력 프로세서가 상기 복수개의 영구적인 스토리지 타겟들 중 제1 타겟에 연결되었는지를 판단하고;
    상기 제1 부집합의 적어도 하나와 다른 적어도 하나의 영구적인 스토리지 타겟을 포함하는 상기 복수개의 영구적인 스토리지 타겟들의 제2 부집합에 연결되는 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되었는지를 판단하고; 그리고,
    상기 제1 입력-출력 프로세서가 상기 제1 부집합 중 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제2 부집합 중 상기 제1 타겟에 연결된 것을 판단하는 것에 응답하여, 제1 복수개의 입력-출력 요청들 각각을 상기 제1 입력-출력 프로세서 또는 상기 제2 입력-출력 프로세서로 디스패치하고,
    상기 디스패치는 상기 제1 타겟에 대한 상기 제1 입력-출력 프로세서의 서비스 율 및 상기 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례하는 시스템.
  10. 시스템에서 입력-출력을 디스패치하는 방법으로서,
    상기 시스템은,
    처리를 위한 중앙 집중식 수단,
    복수개의 영구 스토리지 타겟들,
    제1 입력-출력 프로세서, 및
    제2 입력-출력 프로세서를 포함하고,
    상기 방법은,
    상기 복수개의 영구적인 스토리지 타켓들의 제1 부집합에 연결되는 상기 제1 입력-출력 프로세서가 상기 복수개의 영구적인 스토리지 타겟들 중 제1 타겟에 연결되었는지를 판단하는 단계;
    상기 제1 부집합의 적어도 하나와 다른 적어도 하나의 영구적인 스토리지 타겟을 포함하는 상기 복수개의 영구적인 스토리지 타겟들의 제2 부집합에 연결되는 상기 제2 입력-출력 프로세서가 상기 제1 타겟에 연결되었는지를 판단하는 단계; 및
    상기 제1 입력-출력 프로세서가 상기 제1 부집합 중 상기 제1 타겟에 연결되고 상기 제2 입력-출력 프로세서가 상기 제2 부집합 중 상기 제1 타겟에 연결된 것을 판단하는 것에 응답하여, 제1 복수개의 입력-출력 요청들 각각을 상기 제1 입력-출력 프로세서 또는 상기 제2 입력-출력 프로세서로 디스패치하는 단계를 포함하고,
    상기 디스패치하는 단계는 상기 제1 타겟에 대한 상기 제1 입력-출력 프로세서의 서비스 율 및 상기 제1 타겟에 대한 제2 입력-출력 프로세서의 서비스 율 각각에 비례하여 수행되는 방법.

  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020190159870A 2019-04-11 2019-12-04 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법 KR102663318B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020240057170A KR20240064613A (ko) 2019-04-11 2024-04-29 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962832616P 2019-04-11 2019-04-11
US62/832,616 2019-04-11
US16/459,166 2019-07-01
US16/459,166 US11144226B2 (en) 2019-04-11 2019-07-01 Intelligent path selection and load balancing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020240057170A Division KR20240064613A (ko) 2019-04-11 2024-04-29 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20200120477A KR20200120477A (ko) 2020-10-21
KR102663318B1 true KR102663318B1 (ko) 2024-05-07

Family

ID=72747851

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190159870A KR102663318B1 (ko) 2019-04-11 2019-12-04 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법
KR1020240057170A KR20240064613A (ko) 2019-04-11 2024-04-29 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020240057170A KR20240064613A (ko) 2019-04-11 2024-04-29 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법

Country Status (3)

Country Link
US (3) US11144226B2 (ko)
KR (2) KR102663318B1 (ko)
CN (1) CN111813330B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112019007406T5 (de) 2019-05-30 2022-03-17 Hewlett Packard Enterprise Development Lp Weiterleitung von nvsvse-overfabric-paketen
US11777804B2 (en) * 2019-06-11 2023-10-03 Hewlett Packard Enterprise Development Lp Automatic system provisioning for NVME-over-fabric storage
CN113994321A (zh) 2019-06-25 2022-01-28 慧与发展有限责任合伙企业 使用虚拟输出队列映射结构上nvme分组
CN114902337A (zh) * 2019-12-31 2022-08-12 美光科技公司 移动存储随机读取性能估计增强
US11422921B2 (en) * 2019-12-31 2022-08-23 Western Digital Technologies, Inc. Debug systems for deterministic validation of data storage devices
US11438217B1 (en) * 2021-02-12 2022-09-06 Dell Products L.P. Storage area network connectivity management using switch fabric conditions
CN116107954A (zh) * 2021-11-09 2023-05-12 华为技术有限公司 一种数据处理方法以及相关设备
US12001595B2 (en) * 2021-12-03 2024-06-04 Dell Products L.P. End-to-end encryption of logical storage devices in a Linux native multi-pathing environment
US11829602B2 (en) * 2022-03-16 2023-11-28 Dell Products L.P. Intelligent path selection in a distributed storage system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100748187B1 (ko) * 2007-06-01 2007-08-10 인하대학교 산학협력단 노드 가용도 예측 기반의 그리드 네트워크 혼잡 제어 장치및 방법
JP2013250905A (ja) * 2012-06-04 2013-12-12 Hitachi Ltd 仮想計算機システム及び仮想計算機システムの負荷制御方法
US20170031610A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Dynamic Routing of Input/Output Requests in Array Systems

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592672A (en) 1993-11-02 1997-01-07 Bell Communications Research, Inc. System for load balancing between message processors by routing all queued messages to a particular processor selected by a deterministic rule
JP2959539B2 (ja) 1997-10-01 1999-10-06 日本電気株式会社 バッファ制御方法および装置
JP2001109638A (ja) 1999-10-06 2001-04-20 Nec Corp 推定伸長率に基づくトランザクション負荷分散方法及び方式並びにコンピュータ可読記録媒体
GB2359444B (en) 2000-02-15 2003-07-09 3Com Corp Network switch including restriction of source address look-ups based on receive queue length
US20020124104A1 (en) 2001-03-01 2002-09-05 Yigal Rappaport Network element and a method for preventing a disorder of a sequence of data packets traversing the network
US20030067874A1 (en) 2001-10-10 2003-04-10 See Michael B. Central policy based traffic management
US7782776B2 (en) 2002-03-15 2010-08-24 Broadcom Corporation Shared weighted fair queuing (WFQ) shaper
US7289498B2 (en) 2002-06-04 2007-10-30 Lucent Technologies Inc. Classifying and distributing traffic at a network node
WO2004036381A2 (en) 2002-10-18 2004-04-29 Broadcom Corporation System and method for receive queue provisioning
US8145731B2 (en) 2003-12-17 2012-03-27 Hewlett-Packard Development Company, L.P. System and method for determining how many servers of at least one server configuration to be included at a service provider's site for supporting an expected workload
US7836181B2 (en) 2004-09-21 2010-11-16 Alcatel-Lucent Usa Inc. Fairness and load balancing in wireless LANs using association control
DE202004021684U1 (de) 2004-12-20 2010-04-29 Infineon Technologies Ag Einrichtungen und Vorrichtungen zur Verwendung bei einem Scheduling
US7448044B1 (en) 2005-02-02 2008-11-04 Sun Microsystems, Inc. Systems and methods for efficient queue pair number re-use
JP5089896B2 (ja) * 2006-03-17 2012-12-05 株式会社日立製作所 マイクロプロセッサの負荷分散機能を備えたストレージシステム
US7941805B2 (en) 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
US20110044338A1 (en) 2006-12-20 2011-02-24 Thomas Anthony Stahl Throughput in a lan by managing tcp acks
US8160085B2 (en) 2007-12-21 2012-04-17 Juniper Networks, Inc. System and method for dynamically allocating buffers based on priority levels
US9237034B2 (en) 2008-10-21 2016-01-12 Iii Holdings 1, Llc Methods and systems for providing network access redundancy
US20100157964A1 (en) * 2008-12-18 2010-06-24 Pantech & Curitel Communications, Inc. Server to guide reconnection in mobile internet, method for guiding server reconnection, and server reconnection method
US8346999B2 (en) 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8446824B2 (en) 2009-12-17 2013-05-21 Intel Corporation NUMA-aware scaling for network devices
CA2824337C (en) 2010-02-01 2017-02-28 Miovision Technologies Incorporated System and method for modeling and optimizing the performance of transportation networks
US8413143B2 (en) 2010-04-12 2013-04-02 International Business Machines Corporation Dynamic network adapter queue pair allocation
US8589941B2 (en) 2010-04-23 2013-11-19 International Business Machines Corporation Resource affinity via dynamic reconfiguration for multi-queue network adapters
US8782657B2 (en) * 2010-09-17 2014-07-15 Oracle International Corporation Dynamic creation and destruction of IO resources based on actual load and resource availability
US8522250B2 (en) 2010-09-29 2013-08-27 International Business Machines Corporation Managing access to a shared resource in a data processing system
US9021138B2 (en) 2011-08-26 2015-04-28 Microsoft Technology Licensing, Llc Performance of multi-processor computer systems
US9152448B2 (en) 2012-05-11 2015-10-06 Vmware, Inc. Performance of load balancing modules with migration awareness
WO2014050125A1 (en) 2012-09-28 2014-04-03 Nec Corporation Communication system, control apparatus, terminal, terminal control method, and program
US20140274011A1 (en) 2013-03-14 2014-09-18 Qualcomm Incorporated Method and apparatus for controlling operation of a user equipment based on physical layer parameters
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US20140325524A1 (en) 2013-04-25 2014-10-30 Hewlett-Packard Development Company, L.P. Multilevel load balancing
US9298648B2 (en) 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
US9785356B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US10027605B2 (en) 2013-08-26 2018-07-17 Vmware, Inc. Traffic and load aware dynamic queue management
US20150120224A1 (en) 2013-10-29 2015-04-30 C3 Energy, Inc. Systems and methods for processing data relating to energy usage
EP2869514A1 (en) 2013-10-30 2015-05-06 Alcatel Lucent Method and system for queue management in a packet-switched network
JP6299169B2 (ja) 2013-11-14 2018-03-28 富士通株式会社 ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム
CN103955422B (zh) * 2014-04-21 2017-04-12 中国科学院计算技术研究所 一种虚拟化环境中共存应用i/o性能干扰的分析方法及其系统
US9800523B2 (en) 2014-08-22 2017-10-24 Shanghai Jiao Tong University Scheduling method for virtual processors based on the affinity of NUMA high-performance network buffer resources
US9703742B2 (en) 2014-09-26 2017-07-11 Intel Corporation Unified device interface for a multi-bus system
US9459904B2 (en) 2014-09-30 2016-10-04 Vmware, Inc. NUMA I/O aware network queue assignments
WO2016118979A2 (en) 2015-01-23 2016-07-28 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US9948513B2 (en) * 2015-03-13 2018-04-17 International Business Machines Corporation Managing servers with quality of service assurances
US9876698B2 (en) 2015-04-09 2018-01-23 International Business Machines Corporation Interconnect congestion control in a storage grid
US9612751B2 (en) * 2015-05-28 2017-04-04 Netapp, Inc. Provisioning advisor
KR102403489B1 (ko) 2015-07-10 2022-05-27 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US9910700B2 (en) * 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
US10241674B2 (en) 2015-12-11 2019-03-26 Vmware, Inc. Workload aware NUMA scheduling
WO2017141413A1 (ja) 2016-02-19 2017-08-24 株式会社日立製作所 計算機、通信ドライバ、および通信制御方法
US10142231B2 (en) 2016-03-31 2018-11-27 Intel Corporation Technologies for network I/O access
US10394679B2 (en) 2016-04-29 2019-08-27 Nicira, Inc. Locality-aware scheduling for NIC teaming
US11016940B2 (en) 2016-06-02 2021-05-25 International Business Machines Corporation Techniques for improving deduplication efficiency in a storage system with multiple storage nodes
US10089144B1 (en) 2016-06-17 2018-10-02 Nutanix, Inc. Scheduling computing jobs over forecasted demands for computing resources
WO2018009212A1 (en) 2016-07-08 2018-01-11 Hewlett-Packard Development Company, L.P. Determining a device wear-rate
CN106254272B (zh) 2016-09-05 2019-08-02 盛科网络(苏州)有限公司 基于硬件实现的弹性的加权公平调度方法及调度系统
CN107741878A (zh) * 2016-11-01 2018-02-27 研祥智能科技股份有限公司 任务调度方法、装置及系统
US10277626B2 (en) * 2016-11-09 2019-04-30 Daniel Chien Systems and methods for suppressing denial of service attacks
US10637817B2 (en) 2016-11-28 2020-04-28 Amazon Technologies, Inc. Managing messaging protocol communications
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10244048B2 (en) 2017-04-28 2019-03-26 International Business Machines Corporation Sender system status-aware load balancing
US10310996B2 (en) 2017-05-31 2019-06-04 International Business Machines Corporation Hardware queue manager with water marking
US11102294B2 (en) 2017-06-09 2021-08-24 Samsung Electronics Co., Ltd. System and method for supporting energy and time efficient content distribution and delivery
US10698900B2 (en) 2017-09-25 2020-06-30 Splunk Inc. Generating a distributed execution model with untrusted commands
US20190196969A1 (en) 2017-12-22 2019-06-27 Samsung Electronics Co., Ltd. Method and apparatus for adaptive cache load balancing for ssd-based cloud computing storage system
US10599548B2 (en) 2018-06-28 2020-03-24 Intel Corporation Cache monitoring
US11681565B2 (en) 2018-09-13 2023-06-20 Intel Corporation Technologies for hierarchical clustering of hardware resources in network function virtualization deployments
US20190042331A1 (en) 2018-09-14 2019-02-07 Intel Corporation Power aware load balancing using a hardware queue manager
US10671302B1 (en) * 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
US10855596B2 (en) 2018-11-20 2020-12-01 Microsoft Technology Licensing, Llc Load balancing among multiple endpoint computing systems of a domain
US11588728B2 (en) * 2018-12-12 2023-02-21 Airbnb, Inc. Tree structure-based smart inter-computing routing model
US11467873B2 (en) 2019-07-29 2022-10-11 Intel Corporation Technologies for RDMA queue pair QOS management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100748187B1 (ko) * 2007-06-01 2007-08-10 인하대학교 산학협력단 노드 가용도 예측 기반의 그리드 네트워크 혼잡 제어 장치및 방법
JP2013250905A (ja) * 2012-06-04 2013-12-12 Hitachi Ltd 仮想計算機システム及び仮想計算機システムの負荷制御方法
US20170031610A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Dynamic Routing of Input/Output Requests in Array Systems

Also Published As

Publication number Publication date
US20200326868A1 (en) 2020-10-15
KR20200120477A (ko) 2020-10-21
US11144226B2 (en) 2021-10-12
US11740815B2 (en) 2023-08-29
US20230359377A1 (en) 2023-11-09
CN111813330A (zh) 2020-10-23
KR20240064613A (ko) 2024-05-13
US20210389891A1 (en) 2021-12-16
CN111813330B (zh) 2022-09-16

Similar Documents

Publication Publication Date Title
KR102663318B1 (ko) 지능형 경로 선택 및 부하 분산을 위한 시스템 및 방법
US11200486B2 (en) Convolutional neural networks on hardware accelerators
US12015563B2 (en) Management of resource affinities in computing systems having multiple cores
CN107710238B (zh) 具有堆栈存储器的硬件加速器上的深度神经网络处理
Mann et al. Remedy: Network-aware steady state VM management for data centers
US10296392B2 (en) Implementing a multi-component service using plural hardware acceleration components
EP3283974B1 (en) Systems and methods for executing software threads using soft processors
US10452971B2 (en) Deep neural network partitioning on servers
US8725912B2 (en) Dynamic balancing of IO resources on NUMA platforms
US20140068132A1 (en) Automatic construction of deadlock free interconnects
WO2012100544A1 (zh) 基于网络数据流向的虚拟机迁移方法、设备和集群系统
WO2014183531A1 (zh) 一种分配远程内存的方法及装置
CN112068768B (zh) 基于队列对的NVMeoF启动器-目标系统中I/O传输的系统和方法
KR20200080458A (ko) 클라우드 멀티-클러스터 장치
US10949313B2 (en) Automatic failover permissions
Wen et al. Load balancing job assignment for cluster-based cloud computing
JP2023539212A (ja) ストレージレベルの負荷分散
EP2912811B1 (en) Traffic engineering system for preventing demand deadlock and achieving uniform link utilization
JP2015119387A (ja) 誤り耐性ルータ、これを使用するic、及び誤り耐性ルータの制御方法
Seddiki et al. Queuing analysis of dynamic resource allocation for virtual routers

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant