KR102478233B1 - 멀티코어 기반 데이터 처리 방법 및 장치 - Google Patents

멀티코어 기반 데이터 처리 방법 및 장치 Download PDF

Info

Publication number
KR102478233B1
KR102478233B1 KR1020180056707A KR20180056707A KR102478233B1 KR 102478233 B1 KR102478233 B1 KR 102478233B1 KR 1020180056707 A KR1020180056707 A KR 1020180056707A KR 20180056707 A KR20180056707 A KR 20180056707A KR 102478233 B1 KR102478233 B1 KR 102478233B1
Authority
KR
South Korea
Prior art keywords
core
packet
processing
cores
flow
Prior art date
Application number
KR1020180056707A
Other languages
English (en)
Other versions
KR20180126401A (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 KR20180126401A publication Critical patent/KR20180126401A/ko
Application granted granted Critical
Publication of KR102478233B1 publication Critical patent/KR102478233B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/78Architectures of resource allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • 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/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • 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/29Flow control; Congestion control using a combination of thresholds
    • 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/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 개시는 4G 시스템 이후 보다 높은 데이터 전송률을 지원하기 위한 5G 통신 시스템을 IoT 기술과 융합하는 통신 기법 및 그 시스템에 관한 것이다.
본 개시는 멀티코어 기반 데이터 처리 방법 및 장치에 관한 것으로, 데이터 통신을 위한 하나 이상의 플로우 중 제1 플로우의 패킷 분산 조건이 충족되는지 판단하는 과정; 패킷 분산 조건이 충족된 경우, 복수의 CPU 코어들 중 제1 플로우의 패킷을 분산할 코어들을 선택하는 과정; 제1 플로우를 통해 수신된 패킷들을 선택된 코어들로 분산하여 할당하는 과정; 및 선택된 코어들이 병렬적으로 동작하여 제1 플로우로부터 분산 할당된 패킷들을 처리하는 과정을 포함한다. 이에 따르면, 멀티코어 시스템에서 데이터 트래픽을 효율적으로 분산할 수 있다. 또한, 데이터 처리를 가속화하여 트래픽 처리 성능을 향상시킬 수 있다.

Description

멀티코어 기반 데이터 처리 방법 및 장치{METHOD AND APPARATUS FOR DATA PROCESSING BASED ON MULTICORE}
본 개시는 멀티코어 기반 데이터 처리 방법 및 장치에 관한 것이다.
4G 통신 시스템 상용화 이후 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해, 개선된 5G 통신 시스템 또는 pre-5G 통신 시스템을 개발하기 위한 노력이 이루어지고 있다. 이러한 이유로, 5G 통신 시스템 또는 pre-5G 통신 시스템은 4G 네트워크 이후 (Beyond 4G Network) 통신 시스템 또는 LTE 시스템 이후 (Post LTE) 이후의 시스템이라 불리어지고 있다. 높은 데이터 전송률을 달성하기 위해, 5G 통신 시스템은 초고주파(mmWave) 대역 (예를 들어, 60기가(60GHz) 대역과 같은)에서의 구현이 고려되고 있다. 초고주파 대역에서의 전파의 경로손실 완화 및 전파의 전달 거리를 증가시키기 위해, 5G 통신 시스템에서는 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO), 전차원 다중입출력(Full Dimensional MIMO: FD-MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 및 대규모 안테나 (large scale antenna) 기술들이 논의되고 있다. 또한 시스템의 네트워크 개선을 위해, 5G 통신 시스템에서는 진화된 소형 셀, 개선된 소형 셀 (advanced small cell), 클라우드 무선 액세스 네트워크 (cloud radio access network: cloud RAN), 초고밀도 네트워크 (ultra-dense network), 기기 간 통신 (Device to Device communication: D2D), 무선 백홀 (wireless backhaul), 이동 네트워크 (moving network), 협력 통신 (cooperative communication), CoMP (Coordinated Multi-Points), 및 수신 간섭제거 (interference cancellation) 등의 기술 개발이 이루어지고 있다. 이 밖에도, 5G 시스템에서는 진보된 코딩 변조(Advanced Coding Modulation: ACM) 방식인 FQAM (Hybrid FSK and QAM Modulation) 및 SWSC (Sliding Window Superposition Coding)과, 진보된 접속 기술인 FBMC(Filter Bank Multi Carrier), NOMA(non orthogonal multiple access), 및SCMA(sparse code multiple access) 등이 개발되고 있다.
한편, 인터넷은 인간이 정보를 생성하고 소비하는 인간 중심의 연결 망에서, 사물 등 분산된 구성 요소들 간에 정보를 주고 받아 처리하는 IoT(Internet of Things, 사물인터넷) 망으로 진화하고 있다. 클라우드 서버 등과의 연결을 통한 빅데이터(Big data) 처리 기술 등이 IoT 기술에 결합된 IoE (Internet of Everything) 기술도 대두되고 있다. IoT를 구현하기 위해서, 센싱 기술, 유무선 통신 및 네트워크 인프라, 서비스 인터페이스 기술, 및 보안 기술과 같은 기술 요소 들이 요구되어, 최근에는 사물간의 연결을 위한 센서 네트워크(sensor network), 사물 통신(Machine to Machine, M2M), MTC(Machine Type Communication)등의 기술이 연구되고 있다. IoT 환경에서는 연결된 사물들에서 생성된 데이터를 수집, 분석하여 인간의 삶에 새로운 가치를 창출하는 지능형 IT(Internet Technology) 서비스가 제공될 수 있다. IoT는 기존의 IT(information technology)기술과 다양한 산업 간의 융합 및 복합을 통하여 스마트홈, 스마트 빌딩, 스마트 시티, 스마트 카 혹은 커넥티드 카, 스마트 그리드, 헬스 케어, 스마트 가전, 첨단의료서비스 등의 분야에 응용될 수 있다.
이에, 5G 통신 시스템을 IoT 망에 적용하기 위한 다양한 시도들이 이루어지고 있다. 예를 들어, 센서 네트워크(sensor network), 사물 통신(Machine to Machine, M2M), MTC(Machine Type Communication)등의 기술이 5G 통신 기술인 빔 포밍, MIMO, 및 어레이 안테나 등의 기법에 의해 구현되고 있는 것이다. 앞서 설명한 빅데이터 처리 기술로써 클라우드 무선 액세스 네트워크(cloud RAN)가 적용되는 것도 5G 기술과 IoT 기술 융합의 일 예라고 할 수 있을 것이다.
한편, UHD(Ultra High Definition), VR(Virtual Reality), 360도 비디오 등과 같이 고화질, 대용량 멀티미디어 컨텐츠의 증가와 함께 고속 데이터 처리의 필요성이 증대되고 있다. 모바일 환경에서도 이러한 수요를 충족시키기 위해 차세대 5G 네트워크는 Gbps급으로 진화하고 있다. 또한, 최근에는 전자 디바이스용 어플리케이션이 증가하고 많은 처리 성능을 요구하는 어플리케이션들이 증가하면서 전자 디바이스에도 멀티 코어(Multi-core) 프로세서를 적용하고 있다. 또한 무선 네트워크 환경의 진화와 전자 디바이스의 진화로 인하여 콘텐츠의 품질증가 및 그에 따른 네트워크 데이터 양도 증가하고 있다.
이에 따라 모바일 디바이스에서도 사용자 편의성을 향상시키기 위해 멀티 코어 프로세서를 적용하고 있으나 고속의 네트워크 수신 데이터 처리시에는 멀티 코어가 제대로 활용되고 있지 못하다. 이는 서버와 같은 대용량의 네트워크 트래픽 처리가 필요한 시스템과는 달리, 모바일 디바이스에서는 플로우 수가 많지 않기 때문이다. 멀티코어시스템은 복수의 코어들, 즉 CPU(central processing unit) 코어들을 탑재하여 데이터 처리 부하를 분산 병렬 처리함으로써 트래픽 처리 성능을 향상시킨다. 멀티코어 시스템에서는, 다중 연결(multiple connections)을 통해 데이터가 분산 처리되므로, 고속의 데이터 처리가 가능하다. 스마트 폰, 태블릿 PC와 같은 모바일 단말 또한 높은 처리 성능을 요구하는 어플리케이션의 증가와 함께 고속 대용량 데이터 처리를 위해 멀티코어가 적용된다.
그런데, 멀티코어 시스템에서 일부 플로우에서만 대량의 데이터 트래픽이 발생하여 특정 코어에 데이터 처리가 집중되는 경우, 복수의 코어들에 대한 데이터 분산이 효율적으로 이루어지지 못하고, 이로 인해 데이터 처리가 지연되어 트래픽 처리 성능이 저하되는 문제가 있다.
또한 서버에서 사용되는 멀티코어 기술을 모바일 디바이스에 사용할 경우, 모바일 디바이스에서는 비효율적인 패킷 처리로 배터리 소모를 야기 할 수 있다.
따라서, 전류 소모를 줄이기 위한 멀티 코어 환경을 구성할 필요가 있으며, VoIP과 같은 저지연 트래픽, 온라인 게임 또는 실시간 비디오 스트리밍과 같은 대용량 트래픽에 따라 적절하게 패킷을 코어에 할당할 필요가 있다.
본 개시는 멀티코어 시스템에서 데이터 트래픽을 효율적으로 분산하여 처리하는 방법 및 장치를 제공한다.
본 개시는 멀티코어 시스템에서 데이터 처리를 가속화하여 트래픽 처리 성능을 향상시키는 방법 및 장치를 제공한다.
본 개시는 멀티코어를 가지는 전자 디바이스를 통해 수신되는 플로우 정보에 기반하여 수신되는 패킷을 처리할 코어를 할당함으로써 패킷 처리 성능을 향상시킬 수 있는 방법 및 장치를 제공한다.
본 개시의 실시예에 따른 방법은, 멀티코어 시스템에서의 데이터 처리 방법에 있어서, 데이터 통신을 위한 하나 이상의 플로우 중 제1 플로우의 패킷 분산 조건이 충족되는지 판단하는 과정; 상기 패킷 분산 조건이 충족된 경우, 복수의 CPU(central processing unit) 코어들 중 상기 제1 플로우의 패킷을 분산할 코어들을 선택하는 과정; 상기 제1 플로우를 통해 수신된 패킷들을 상기 선택된 코어들로 분산하여 할당하는 과정; 및 상기 선택된 코어들이 병렬적으로 동작하여 상기 제1 플로우로부터 분산 할당된 패킷들을 처리하는 과정을 포함한다.
상기 선택된 코어들은 제1 코어 및 제2 코어를 포함하고, 상기 선택된 코어들이 병렬적으로 동작하여 상기 제1 플로우로부터 분산 할당된 패킷들을 처리하는 과정에서, 상기 제1 코어 및 상기 제2 코어가 각자 할당받은 패킷을 동시에 네트워크 계층 처리할 수 있다.
상기 선택된 코어들은 네트워크 계층 및 전송 계층 패킷 처리를 함께 하는 제1 코어 및 제2 코어를 포함하고, 상기 제1 코어가 현재 패킷을 전송 계층 처리하는 동안 상기 제2 코어는 다음 패킷을 네트워크 계층 처리할 수 있다.
상기 패킷 분산 조건의 충족 여부는, 상기 제1 플로우의 데이터 수신 속도, 상기 제1 플로우의 패킷 분산 이력에 대한 컨텍스트 정보, 상기 제1 플로우를 할당받은 코어의 패킷 처리율, 및 상기 코어의 사용률 중 하나 이상을 기반으로 판단될 수 있다.
상기 제1 플로우의 패킷을 분산할 코어들은, 각 코어의 패킷 처리율 또는 각 코어의 사용률을 기반으로 선택될 수 있다.
상기 제1 플로우의 패킷 분산 이력에 대한 컨텍스트 정보를 생성하여 저장하는 과정을 더 포함할 수 있다.
상기 제1 플로우의 패킷 분산 조건이 충족되는지 판단하는 과정은, 주기적으로, 또는 상기 복수의 코어들 중 사용률이 임계값 이상인 코어가 발생하는 경우, 또는 새로운 플로우가 생성되는 경우, 수행될 수 있다.
순차적으로 수신된 상기 패킷들이 상기 선택된 코어들에 번갈아 할당되어 처리되고, 상기 선택된 코어들은 제1 코어 및 제2 코어를 포함하며, 상기 선택된 코어들이 병렬적으로 동작하여 상기 제1 플로우로부터 분산 할당된 패킷들을 처리하는 과정에서, 상기 제2 코어는 상기 제1 코어의 직전 패킷 처리가 시작된 후 패킷 처리를 시작할 수 있다.
상기 제2 코어는 상기 제1 코어의 직전 패킷 처리가 시작되고, 기 설정된 보호 시간만큼 대기한 후 패킷 처리를 시작하되, 상기 보호 시간은 상기 제2 코어의 평균 패킷 처리 시간 미만으로 설정될 수 있다.
상기 선택된 코어들에 상기 제1 플로우로부터 분산 할당된 패킷 처리 외의 다른 작업이 추가되지 않도록 설정하거나, 상기 선택된 코어들 중 적어도 어느 하나에 기 할당되어 있던 제2 플로우를 상기 선택된 코어들을 제외한 다른 코어로 재 할당하는 과정을 더 포함할 수 있다.
본 개시의 실시예에 따른 장치는, 멀티코어 시스템에서의 데이터 처리 장치에 있어서, 데이터 통신을 위한 하나 이상의 플로우 중 제1 플로우를 통해 패킷들을 수신하는 송수신부; 및 상기 제1 플로우의 패킷 분산 조건이 충족되는지 판단하고, 상기 패킷 분산 조건이 충족된 경우, 복수의 CPU(central processing unit) 코어들 중 상기 제1 플로우의 패킷을 분산할 코어들을 선택하며, 상기 제1 플로우를 통해 상기 송수신부로 수신된 패킷들을 상기 선택된 코어들로 분산하여 할당하는 제어부를 포함하고, 상기 선택된 코어들이 병렬적으로 동작하여 상기 제1 플로우로부터 분산 할당된 패킷들을 처리하도록 구성된다.
상기 선택된 코어들은 제1 코어 및 제2 코어를 포함하고, 상기 제1 코어 및 상기 제2 코어가 각자 할당받은 패킷을 동시에 네트워크 계층 처리할 수 있다.
상기 선택된 코어들은 네트워크 계층 및 전송 계층 패킷 처리를 함께 하는 제1 코어 및 제2 코어를 포함하고, 상기 제1 코어가 현재 패킷을 전송 계층 처리하는 동안 상기 제2 코어가 다음 패킷을 네트워크 계층 처리할 수 있다.
상기 패킷 분산 조건의 충족 여부는, 상기 제1 플로우의 데이터 수신 속도, 상기 제1 플로우의 패킷 분산 이력에 대한 컨텍스트 정보, 상기 제1 플로우를 할당받은 코어의 패킷 처리율, 및 상기 코어의 사용률 중 하나 이상을 기반으로 판단될 수 있다.
상기 제1 플로우의 패킷을 분산할 코어들은, 각 코어의 패킷 처리율 또는 각 코어의 사용률을 기반으로 선택될 수 있다.
상기 제어부는, 상기 제1 플로우의 패킷 분산 이력에 대한 컨텍스트 정보를 생성하여 저장할 수 있다.
상기 제어부는, 주기적으로, 또는 상기 복수의 코어들 중 사용률이 임계값 이상인 코어가 발생하는 경우, 또는 새로운 플로우가 생성되는 경우, 상기 제1 플로우의 패킷 분산 조건이 충족되는지 판단할 수 있다.
상기 제어부는 상기 제1 플로우를 통해 수신된 패킷들을 상기 선택된 코어들로 분산하여 처리하는 경우, 순차적으로 수신된 상기 패킷들을 상기 선택된 코어들에 번갈아 할당하여 처리하고, 상기 선택된 코어들은 제1 코어 및 제2 코어를 포함하며, 상기 제2 코어는 상기 제1 코어의 직전 패킷 처리가 시작된 후 패킷 처리를 시작할 수 있다.
상기 제2 코어는 상기 제1 코어의 직전 패킷 처리가 시작되고, 기 설정된 보호 시간만큼 대기한 후 패킷 처리를 시작하되, 상기 보호 시간은 상기 제2 코어의 평균 패킷 처리 시간 미만으로 설정될 수 있다.
상기 제어부는, 상기 선택된 코어들에 상기 제1 플로우로부터 분산된 패킷 처리 외의 다른 작업이 추가되지 않도록 설정할 수 있다.
본 개시에 따른 멀티코어를 가지는 전자 디바이스의 코어 할당 방법은 상기 전자 디바이스에서 실행되는 어플리케이션을 감지하는 과정, 상기 감지된 어플리케이션의 플로우(flow) 정보를 식별하는 과정 및 상기 플로우 정보에 기반하여 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어를 할당하는 과정을 포함할 수 있다.
상기 플로우 정보는 플로우의 아이피 어드레스(IP-address) 정보, 포트(port) 정보, 프로토콜(protocol) 정보 또는 해시(hash) 정보를 포함할 수 있다.
상기 코어 할당 과정은 상기 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함되는지 여부를 결정하는 과정 및 상기 감지된 어플리케이션이 상기 어플리케이션 그룹에 포함되는 경우, 기설정된 제1 코어를 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어로 할당하는 과정을 포함할 수 있다.
또한, 상기 감지된 어플리케이션이 상기 어플리케이션 그룹이 포함되지 않는 경우, 상기 감지된 어플리케이션의 코어 할당 이력을 식별하는 과정 및 상기 코어 할당 이력에 기반하여 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어를 할당하는 과정을 포함할 수 있다.
또한, 상기 감지된 어플리케이션이 상기 어플리케이션 그룹에 포함되는 경우, 감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값을 초과하는지 여부를 결정하는 과정 및 상기 감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값을 초과하는 경우 기설정된 제2 코어를 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어로 할당하고, 상기 감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값 이하인 경우 상기 제1 코어를 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어로 할당하는 과정을 포함할 수 있다.
상기 제2 코어의 데이터 처리 가능량은 상기 제1 코어의 데이터 처리 가능량보다 큰 것을 특징으로 할 수 있따.
상기 어플리케이션 그룹은 스트리밍(streaming) 서비스를 지원하는 어플리케이션을 포함할 수 있다.
또한, 상기 할당된 코어로 패킷을 처리하는 과정 및 상기 패킷 처리 결과에 기반하여 상기 감지된 어플리케이션의 코어 할당 이력을 업데이트하는 과정을 포함할 수 있다.
본 개시에 따른 멀티코어를 가지는 전자 디바이스는 패킷을 처리하는 복수개의 코어 및 상기 전자 디바이스에서 실행되는 어플리케이션을 감지하고, 상기 감지된 어플리케이션의 플로우 정보를 식별하며, 상기 플로우 정보에 기반하여 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어를 할당하는 제어부를 포함할 수 있다.
상기 플로우 정보는 플로우의 아이피 어드레스(IP-address) 정보, 포트(port) 정보, 프로토콜(protocol) 정보 또는 해시(hash) 정보를 포함할 수 있다.
상기 제어부는 상기 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함되는지 여부를 결정하고, 상기 감지된 어플리케이션이 상기 어플리케이션 그룹에 포함되는 경우, 기설정된 제1 코어를 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어로 할당할 수 있다.
상기 제어부는 상기 감지된 어플리케이션이 상기 어플리케이션 그룹이 포함되지 않는 경우, 상기 감지된 어플리케이션의 코어 할당 이력을 식별하고, 상기 코어 할당 이력에 기반하여 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어를 할당할 수 있다.
상기 제어부는 상기 감지된 어플리케이션이 상기 어플리케이션 그룹에 포함되는 경우, 감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값을 초과하는지 여부를 결정하고, 상기 감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값을 초과하는 경우 기설정된 제2 코어를 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어로 할당하고, 상기 감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값 이하인 경우 상기 제1 코어를 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어로 할당할 수 있다.
상기 제2 코어의 데이터 처리 가능량은 상기 제1 코어의 데이터 처리 가능량보다 큰 것을 특징으로 할 수 있다.
상기 어플리케이션 그룹은 스트리밍(streaming) 서비스를 지원하는 어플리케이션을 포함할 수 있다.
상기 제어부는 상기 코어의 패킷 처리 결과에 기반하여 상기 감지된 어플리케이션의 코어 할당 이력을 업데이트할 수 있다.
본 개시에 따른 멀티코어 시스템에서의 데이터 처리 방법은, 제1 코어에 의해 TCP 헤더 및 IP 헤더를 포함하는 복수의 패킷들 중 제1 패킷에 대해 전송 계층 프로세싱을 수행하는 과정; 및 상기 제1 코어가 전송 계층 프로세싱을 수행하는 동안, 제2 코어에 의해 제2 패킷에 대해 네트워크 계층 프로세싱을 수행하는 과정;를 포함할 수 있다.
상기 제1 코어에 의해 전송 계층 프로세싱이 수행된 제1 패킷을 제3 코어에 의해 어플리케이션 계층에 포함되는 버퍼로 이동시키는 과정; 및 상기 전송 계층 프로세싱이 수행된 제1 패킷을 상기 제3 코어가 이동시키는 동안, 상기 제1 패킷의 다음 패킷인 제3 패킷의 전송 계층 프로세싱이 중단되는 과정;를 더 포함할 수 있다.
상기 제1 패킷의 다음 패킷인 제3 패킷의 전송 계층 프로세싱이 중단되는 과정은, 상기 제1 코어에 의해 상기 제3 패킷을 전송 계층 프로세싱이 수행되는 버퍼로 이동시키는 과정을 더 포함할 수 있다.
본 개시에 따른 멀티코어 시스템에서 데이터 트래픽을 효율적으로 분산하여 처리할 수 있고, 멀티코어 시스템에서 데이터 처리를 가속화하여 트래픽 처리 성능을 향상시킬 수 있다.
본 개시에 따를 경우 실행되는 어플리케이션을 통해 생성되는 패킷의 데이터량에 따라 코어가 사전에 할당됨으로써 어플리케이션 동작 초기에 데이터량이 많이 발생하는 비디오 스트리밍과 같은 어플리케이션의 데이터 처리 성능을 향상시킬 수 있으며, 이를 통해 사용자 체감을 향상시킬 수 있다.
또한 어플리케이션에 의해서 수신되는 트래픽을 분배 처리함으로써 코어의 사용률을 낮출 수 있으며, 이를 통해 코어의 전류 소모량을 감소시킬 수 있다.
도 1a 및 1b는 코어 할당 방법을 나타내는 도면이다.
도 2는 본 개시의 일실시예에 따라 패킷이 멀티코어로 할당되는 모습을 나타내는 도면이다.
도 3은 본 개시에 따른 멀티코어를 가지는 전자 디바이스의 코어 할당 방법을 나타내는 순서도이다.
도 4는 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함되는 경우 코어 할당 방법을 나타내는 순서도이다.
도 5는 본 개시에 따른 전자 디바이스의 구성도이다.
도 6a 및 도 6b는 멀티코어를 포함하는 라우터 및 멀티코어를 포함하는 클라이언트를 설명하기 위한 도면이다.
도 7a 및 도 7b는 본 개시의 실시예에 적용 가능한 멀티코어 기반 데이터 처리 원리를 설명하기 위한 도면이다.
도 8는 본 개시의 실시예에 따른 멀티코어 기반 데이터 처리 방법을 나타낸 흐름도이다.
도 9a는 하나의 플로우에 하나의 코어가 할당되는 경우를 설명하기 위한 도면이며, 도 9b는 하나의 플로우에 복수의 코어가 할당되는 경우를 설명하기 위한 도면이다.
도 10a는 도 9a에 따른 싱글코어 시스템의 소켓 락 절차를 설명하기 위한 도면이며, 도 10b는 도 9b에 따른 멀티코어 시스템의 소켓 락 절차를 설명하기 위한 도면이다.
도 11a 내지 도 11c는 도 8의 패킷 분산 과정을 예시한 도면이다.
도 12 및 도 13은 본 개시의 실시예에서 코어들 간 타이밍 불일치 및 비순차(Out-of-order) 처리를 해결하는 방안을 설명하기 위한 도면이다.
도 14a 및 도 14b는 본 개시의 실시예에 따른 효과를 예시한 도면이다.
도 15는 본 개시의 실시예에 따른 멀티코어 기반 데이터 처리 장치 구성을 예시한 도면이다.
이하, 본 개시의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 개시를 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
이하에서 설명되는 본 개시의 실시예들은 설명의 편의를 위하여 분리된 것이지만, 상호 충돌되지 않는 범위 내에서 적어도 둘 이상의 실시예는 결합되어 수행될 수 있다.
후술되는 용어들은 본 개시의 실시예들에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 개시의 실시예는 다양한 변경을 가할 수 있고 여러 가지 실시예들을 가질 수 있는 바, 특정 실시예들을 도면들에 예시하여 상세하게 설명한다. 그러나, 이는 본 개시를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다. 본 실시예들은 본 개시의 개시가 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시는 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
또한, 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의하여 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
또한, 본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 개시를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 과정, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 과정, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 개시에서 제안하는 장치 및 방법은 롱 텀 에볼루션(Long-Term Evolution: LTE), 롱 텀 에볼루션-어드밴스드(Long-Term Evolution-Advanced: LTE-A), 4G 및 5G, 고속 하향 링크 패킷 접속(high speed downlink packet access: HSDPA), 고속 상향 링크 패킷 접속(high speed uplink packet access: HSUPA), 3세대 프로젝트 파트너쉽 2(3rd generation project partnership 2: 3GPP2)의 고속 레이트 패킷 데이터(high rate packet data: HRPD), 3GPP2의 광대역 코드 분할 다중 접속(Wideband Code Division Multiple Access: WCDMA), 3GPP2의 코드 분할 다중 접속(Code Division Multiple Access: CDMA), 국제 전기 전자 기술자 협회(Institute of Electrical and Electronics Engineers: IEEE) 802.16m, 진화된 패킷 시스템(Evolved Packet System: EPS), 모바일 인터넷 프로토콜(Mobile InternetProtocol: Mobile IP) 등과 같은 다양한 무선 및 이동 통신 시스템들에 적용 가능하다.
또한, 본 개시에서 제안하는 장치 및 방법은 상기한 무선 및 이동 통신 시스템과 연계하는 유선 통신 시스템이나 유무선 통합 시스템 등, 인터넷 프로토콜(internet protocol, IP) 기반의 모든 통신 시스템 또는 네트워크 요소들, 예컨대 서버-클라이언트 연결 사이의 네트워크 요소들인 서버, 클라이언트, 서버-클라이언트 사이의 스위치, 라우터, 유무선 공유기, 액세스 포인트 등 IP 기반으로 통신(예컨대, IPv4나 IPv6)하는 모든 멀티코어 시스템에 적용 가능하다.
일반적으로 통신 시스템은 네트워크 상에서 서버-클라이언트 간 연결에 유일한 IP 주소(Internet Protocol address), 포트(Port) 번호, 그리고 TCP(Transmission Control Protocol)나 UDP(User Datagram Protocol)와 같은 전송 계층 프로토콜을 설정한다. 이와 같이 설정된 각 연결을 통해 데이터 통신이 이루어진다.
이하의 설명에서는, 데이터 통신을 위한 하나의 연결을 플로우(flow)로 명명한다. 일 예로, 플로우는 특정 IP 주소, 포트 번호 및 전송 계층 프로토콜에 의해 유일하게 설정된 통신 경로를 의미한다.
이하, 본 개시는 도 1a 내지 도 5를 참조하여 멀티코어를 가지는 전자 디바이스에서 실행되는 어플리케이션(application)을 고려하여 복수의 플로우를 코어를 할당하는 방법을 설명하고, 도 6a 내지 도 15을 참조하여 하나의 플로우에 포함된 복수의 패킷을 코어에 할당하는 방법에 대해 설명할 것이다.
도 1a, 1b는 코어 할당 방법을 나타내는 도면이다.
구체적으로 도 1a는 해시 기반의 코어 할당 방법을 나타내는 도면이다. 해시 기반의 코어 할당 방법은 네트워크를 통해 수신되는 플로우의 해시 값을 추출하여 수신되는 플로우를 구분하고, 각 플로우별로 코어를 할당하는 방법을 의미한다.
여기서 플로우는 TCP 세션(session)을 의미하는 것으로 특정 프로그램 또는 어플리케이션을 동작시키기 위한 복수개의 패킷 흐름을 의미한다. 따라서 하나의 플로우(또는 패킷 플로우)에는 복수개의 패킷이 포함될 수 있으며, 각 패킷에 포함되어 있는 데이터량은 서로 상이할 수 있다. 예를 들어, 특정 어플리케이션을 통해서 동영상을 감상하는 과정이 하나의 플로우(또는 패킷 플로우)라고 한다면, 상기 하나의 플로우(또는 패킷 플로우)에는 3개의 패킷이 포함될 수 있으며, 각 3개의 패킷에 포함되는 데이터량은 서로 상이할 수 있다.
도 1a에 따를 경우 최초 수신되는 패킷의 헤더를 파싱하여 해시 키를 생성하며, 상기 해시 키에 매핑되어 있는 코어를 판별하여, 패킷을 판별된 코어로 할당한다.
즉, 해시 기반의 코어 할당 방법에 따를 경우, 수신되는 패킷의 해시 키에 기반하여 랜덤(random)하게 또는 순차적인 방식을 통해 코어가 할당되므로 도 1a와 같이 3개의 패킷이 하나의 코어(core 3)에만 할당되는 경우가 발생할 수 있다.
도 1a는 일례로써, 하나의 플로우에 3개의 패킷이 포함되고, 각 패킷의 데이터량이 동일한 것을 가정하였으나, 앞서 개시한 바와 같이 하나의 플로우에는 복수개의 패킷이 포함될 수 있으며 각 패킷은 서로 상이한 데이터량을 가질 수 있다.
따라서 이 경우, core 3에 오버헤드가 발생할 수 있는바, core 3이 할당된 패킷을 처리함에 있어 지연이 발생할 수 있다.
도 1b도 코어 할당 방법을 나타낸 도면으로, 플로우의 데이터량을 고려하지 않은 코어 할당으로 인하여 코어에 오버헤드가 발생하는 경우를 나타낸 도면이다.
앞서 개시한 바와 같이 하나의 플로우는 복수개의 패킷으로 구성될 수 있으며, 각각의 플로우를 구성하는 패킷의 수는 서로 다를 수 있다. 따라서 플로우를 구성하는 패킷의 수에 따라 각 플로우의 데이터량 또한 서로 다를 수 있다.
예를 들어, 문자를 송수신하는 플로우는 과정의 복잡성이 크지 않으므로 플로우를 구성하는 패킷의 수가 적을 것이며, 이에 따라 플로우의 데이터량도 적을 것이다. 반면에, 고화질의 영상통화와 같은 스트리밍 서비스 플로우의 데이터량을 클 것이다.
도 1b에서 개시하고 있는 멀티코어에서 core 1, 2는 데이터 처리 가능량이 낮은 코어이며 core 3, 4는 데이터 처리 가능량이 높은 코어이다. 또한 멀티 코어로 수신되는 플로우 중 하나의 플로우는 데이터량이 다른 플로우에 비해 큰 것을 확인할 수 있다.
그러므로 이 경우 데이터량이 큰플로우는 core 3 또는 core 4로 할당하고, 데이터량이 작은 플로우는 core 1 또는 core 2로 할당하는 것이 바람직할 것이다.
그러나, 코어의 데이터 처리 가능량 또는 플로우의 데이터량을 고려하지 않고 코어를 할당면 도 1b에서 도시하고 있는 바와 같이 core 2의 데이터 처리 가능량보다 큰 데이터량을 가지는 플로우가 core 2에 할당될 수 있다. 즉, core 2에 오버헤드가 발생할 수 있으며, 이로 인해 멀티코어에서 플로우를 구성하는 패킷을 처리함에 있어 지연이 발생할 수 있다.
따라서 본 개시에서는 수신되는 플로우 정보를 통해 플로우를 구성하는 패킷에 대한 정보를 식별하며, 이를 통해 적절하게 패킷을 처리할 수 있는 방법을 제안하고자 한다.
또한, 상기 방법을 통해 코어가 소모하는 전류 소모량도 감축시킬 수 있는 바, 상기 방법은 전류소모에 민감한 모바일 디바이스를 포함하는 전자 디바이스에 적용할 수 있을 것이다.
도 2는 본 개시의 일실시예에 따라 패킷이 멀티코어로 할당되는 모습을 나타내는 도면이다.
구체적으로 도 2는 총 3개의 플로우을 도시하고 있으며, 그 중 코어에 마지막에 수신되는 플로우은 다른 플로우보다 데이터량이 큰 것을 확인할 수 있다.
즉, 앞선 예를 활용해 볼 때 처음으로 수신되는 플로우(데이터량이 적은 플로우)는 문자서비스와 관련된 플로우일 수 있으며 두 번째로 수신되는 플로우(데이터량이 적은 플로우)는 날씨 정보 어플리케이션과 관련된 플로우일 수 있고, 마지막으로 수신되는 플로우(데이터량이 큰 플로우)은 동영상 서비스와 관련된 플로우일 수 있다.
이 경우, 처음으로 수신된 플로우와 두 번째로 수신되는 플로우는 데이터량이 크지 않으므로 모두 core 1로 할당될 수 있다. 도 2에서 개시하고 있는 바와 같이 core 1의 데이터 처리 가능량이 처음으로 수신된 플로우 데이터량과 두 번째로 수신된 플로우의 데이터량의 합보다 크므로, core 1로 하여금 두 플로우를 모두 처리하게 하는 것이 멀티코어의 전류소모 측면에서 바람직하다.
도 2에서는 첫 번째 수신된 플로우와 두 번째 수신된 플로우를 처리하기 위한 코어로 core 1을 할당하는 것을 도시하고 있으나, core 1과 동일한 데이터 처리 가능량을 가지는 core 2를 플로우를 처리하기 위한 코어로 할당하여도 무방할 것이다.
한편, 데이터 처리 가능량 측면에서 보았을 때 core 3과 core 4를 첫 번째 수신된 플로우와 두 번째 수신된 플로우를 처리하기 위한 코어로 할당할 수도 있다.
그러나 core 3과 core 4는 데이터 처리 가능량이 core 1과 core 2보다 큰 대신 전류 소모량이 크다. 따라서 이 경우에는 core 3 또는 core 4 보다는 core 1 또는 core 2를 첫 번째 플로우와 두 번째 플로우를 처리하기 위한 코어로 할당하는 것이 바람직하다.
반면에 세 번째 플로우는 첫 번째 플로우와 두 번째 플로우와는 달리 데이터량이 크다. 구체적으로는 세 번째 플로우는 core 1 또는 core 2의 데이터 처리 가능량보다 큰 데이터량을 가질 수 있다.
이 경우 세 번째 플로우를 core 1 또는 core 2에 할당하는 것은 멀티코어에 오버헤드를 발생시키므로, core 3 또는 core 4를 세 번째 플로우를 처리하기 위한 코어로 할당하는 것이 바람직할 것이며, 도 2에서는 일례로써 core 3이 세 번째 플로우를 처리하기 위한 코어로 할당된 경우를 도시하고 있다.
즉, 도 2에서 개시하고 있는 코어 할당 방법에 따를 경우, 각 플로우의 데이터량에 맞게 코어의 할당이 가능하며, 전류 소모량이 큰 코어의 패킷 처리를 최소화 할 수 있어 멀티코어의 동작에 따른 전류 소모량도 최소화 할 수 있다.
한편, 도 2에서는 big.little 타입의 멀티코어 구성을 설명하고 있지만, 본 개시의 권리범위가 이에 국한되어서는 안 될 것이며, 본 개시는 다양한 타입의 멀티코어 구성에 적용될 수 있을 것이다.
구체적으로 본 개시에 따른 코어 할당 방법이 어떤 과정을 통해 수행되는 도 3에 대한 설명을 통해 후술하도록 하겠다.
도 3은 본 개시에 따른 멀티코어를 가지는 전자 디바이스의 코어 할당 방법을 나타내는 순서도이다.
S300 과정에서, 제어부는 어플리케이션 실행을 감지할 수 있다. 상기 과정을 통해 제어부는 어플리케이션 실행을 통해 플로우가 생성될 것임을 예측할 수 있으며, 이를 통해 패킷을 처리하기 위한 코어를 할당할 준비를 수행할 수 있다.
이후 S310 과정을 통해 제어부는 상기 감지된 어플리케이션이 기설정된 어플리케이션 또는 어플리케이션 그룹이 포함되는지 여부를 결정한다.
여기서 기설정된 어플리케이션 또는 어플리케이션 그룹은 데이터량이 큰 플로우을 생성할 가능성이 높은 어플리케이션 그룹을 의미한다. 예를 들어 스트리밍 서비스를 지원하는 어플리케이션이 상기 어플리케이션 그룹에 포함될 수 있다.
또한, 상기 어플리케이션 그룹은 복수개의 그룹으로 구분될 수 있으며, 각 그룹은 우선 순위를 가질 수 있다. 예를 들어 어플리케이션 그룹은 제1 우선 순위를 가지는 제1 그룹, 제2 우선 순위를 가지는 제2 그룹, 제3 우선 순위를 가지는 제3 그룹으로 구분될 수 있다. 위와 같이 그룹을 구분하는 이유는 패킷의 코어 할당을 보다 세분화하기 위함이며, 제어부는 그룹의 우선 순위에 따라 코어를 할당할 수 있다.
예를 들어 실시간 보이스(voice) 서비스를 지원하는 어플리케이션이 상기 제1 그룹에 포함될 수 있으며, 실시간 동영상 서비스를 지원하는 어플리케이션이 상기 제2 그룹에 포함될 수 있고, 실시간 SNS(Social Network Service)를 지원하는 어플리케이션이 상기 제3 그룹에 포함될 수 있다.
이 경우 실시간 보이스 서비스를 지원하는 어플리케이션, 실시간 동영상 서비스를 지원하는 어플리케이션 및 실시간 SNS를 지원하는 어플리케이션이 동시에 실행된다면 제어부는 식별된 어플리케이션의 우선 순위 등급에 따라 코어를 할당할 수 있다. 즉, 우선적으로 실시간 보이스 서비스를 지원하는 어플리케이션에 관련된 패킷을 별도의 코어에 할당할 수 있다.
본 개시에서는 어플리케이션 그룹을 결정하는 방법에 대한 일례만을 제시하고 있는 것인바, 본 개시의 권리범위가 상기의 실시예들에 한정되어서는 안 되며, 본 개시의 권리범위는 통상의 기술자가 적절히 변경할 수 있는 범위까지 미칠 수 있다.
S310 과정을 통해 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함된다면 멀티코어로 수신되는 플로우의 데이터량은 클 가능성이 높다. 따라서 이 경우 제어부는 S330 과정을 통해 상기 플로우를 구성하는 패킷을 처리하기 위한 코어로 제1 코어 또는 제2 코어를 할당할 수 있다.
이에 대한 자세한 설명은 도 4를 통해 후술할 것인 바, S310 과정에서 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함되지 않는 경우부터 먼저 살펴보도록 한다.
감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함되지 않는다면, 플로우의 데이터량이 작을 가능성이 높다. 따라서 이 경우 S320 과정을 통해 제어부는 플로우 정보를 식별한다. 상기 플로우 정보는 플로우의 아이피 어드레스(IP-address) 정보, 포트(port) 정보, 프로토콜(protocol) 정보 또는 해시(hash) 정보를 포함할 수 있다.
전자 디바이스에서는 동시에 복수개의 어플리케이션을 실행할 수 있는 바, 제어부는 S320 과정을 통해 동시에 복수개의 플로우 정보를 식별할 수 있다. 예를 들어, 음악 감상 어플리케이션이 실행되고 있는 동시에, 게임 어플리케이션이 실행되고 있다면, 제어부는 S310 과정을 통해 음악 감상 어플리케이션에 대한 플로우 정보와 게임 어플리케이션에 대한 플로우 정보를 식별할 수 있다.
S320 과정을 통해 플로우 정보를 식별하였다면, 제어부는 S340 과정을 통해 감지된 어플리케이션의 코어 할당 이력을 식별할 수 있다.
상기 코어 할당 이력은 이전에 상기 어플리케이션의 패킷을 처리하기 위해 할당된 코어 정보를 의미하는데, 상기 코어 할당 이력은 제어부 내부에 저장될 수 있으며, 또는 제어부 외부에 별도로 마련된 서버에 저장될 수도 있다.
S340 과정을 통해 감지된 어플리케이션의 코어 할당 이력이 식별되었다면, 제어부는 S350 과정을 통해 코어 할당 이력에 기반하여 감지된 어플리케이션을 통해 생성되는 패킷을 처리할 코어를 할당한다.
예를 들어, 주식 정보 어플리케이션의 코어 할당 이력이 core 2였다면, 제어부는 S350 과정을 통해 주식 정보 어플리케이션의 패킷을 처리하기 위한 코어로 core 2를 할당할 수 있다.
S330 과정 또는 S350 과정을 통해 패킷을 처리하기 위한 코어가 할당된 이후에는 S360 과정을 통해 멀티코어로 수신되는 패킷이 각각 할당된 코어로 분배되어 처리된다.
이후, S370 과정을 통해 패킷 처리 결과에 기반하여 감지된 어플리케이션의 코어 할당 이력을 업데이트할 수 있다. 앞선 예를 다시 인용하여, 주식 정보 어플리케이션 패킷이 core 2에 할당되어 처리되었다면, S370 과정을 통해 제어부는 주식 정보 어플리케이션이 core 2에 두 번 할당되어 처리되었음을 업데이트 할 수 있다.
한편, 주식 정보 어플리케이션이 core 2의 오버헤드로 인하여 core 1에 할당되어 처리되었다면, 제어부는 주식 정보 어플리케이션이 core 1에 의하여 한 번 core 2에 의하여 한 번 할당되어 처리되었다고 코어 할당 이력을 업데이트 할 수 있다.
이 경우 이후에 S340 과정을 통해 주식 정보 어플리케이션의 코어 할당 이력을 식별할 때 core 1과 core 2가 동일하게 한 번 씩 할당되어 처리되었는바, 제어부가 코어를 할당함에 있어 경합이 생길 수 있다. 따라서 이 경우에는 가장 최근에 업데이트 된 내용에 기반하여 코어를 할당하는 방법등을 고려해 볼 수 있다.
반면에 S300 과정을 통해 어플리케이션 실행이 감지되지 않는 경우에도 플로우가 생성되는 경우가 발생할 수 있다. 이 경우에는 감지된 어플리케이션 정보가 없으므로 S310 과정을 통해 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함되는지 여부를 결정할 수 없다.
따라서 제어부는 이 경우 S320 과정을 통해 플로우 정보를 식별하며, S340 과정을 통해 코어 할당 이력을 식별하고, S350 과정을 통해 식별된 코어 할당 이력에 기반하여 코어를 할당할 수 있다.
도 4는 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함되는 경우 코어 할당 방법을 나타내는 순서도이다.
앞서 개시한 바와 같이 감지된 어플리케이션이 기설정된 어플리케이션 그룹에 포함된다면, 감지된 어플리케이션이 게임 어플리케이션 또는 실시간 보이스 어플리케이션과 같이 데이터량이 큰 어플리케이션이라는 의미이다. 따라서 이 경우 S400 과정을 통해 제어부는 감지된 어플리케이션의 플로우 정보를 식별한다. S400 과정에 대한 구체적인 설명은 앞서 개시한 S320 과정의 플로우 정보 식별 과정과 유사하므로 생략하도록 한다.
S400 과정을 통해 플로우 정보가 식별되었다면, S410 과정을 통해 감지된 어플리케이션의 코어 할당 이력을 식별할 수 있다. S410 과정에 대한 구체적인 설명도 앞서 개시한 S340 과정과 유사하므로 생략하도록 한다.
한편 S410 과정을 통해 감지된 어플리케이션의 코어 할당 이력이 식별되었다면, 제어부는 S420 과정을 통해 감지된 어플리케이션 그룹에 대한 정보와 식별된 코어 할당 이력에 기반하여 감지된 어플리케이션의 패킷을 처리하기 위한 코어를 할당한다.
반면에, S410 과정에서 코어 할당 이력 식별에 실패하면 제어부는 S430 과정을 통해 감지된 어플리케이션 그룹에 대한 정보에 기반하여 패킷을 처리하기 위한 코어를 할당한다.
S420 또는 S430 과정을 통해 패킷을 처리하기 위한 코어를 할당하였다면 S330 과정은 종료되며, S360 과정으로 복귀하여 할당된 코어로 패킷을 처리할 수 있다.
한편, 본 개시에 따를 경우 플로우의 데이터량과 코어의 데이터 처리 가능량에 기반한 코어 할당이 가능할 수 있다.
구체적으로 제어부는 감지된 어플리케이션을 통해 생성되는 플로우의 데이터량이 기설정된 임계값을 초과하는지 여부를 결정할 수 있다. 제어부에서 플로우의 데이터량을 기설정된 임계값과 비교하는 이유는 앞서 개시한 바와 같이 멀티코어를 구성하는 각 코어의 데이터 처리 가능량에 차이가 있을 수 있기 때문이다.
전자 디바이스 또는 모바일 디바이스에 활용되는 멀티코어는 모두 동일한 성능을 가지는 코어로 구성될 수도 있지만, big.little 타입의 멀티코어로 구성될 수도 있다. big.little 타입의 멀티코어는 데이터 처리 가능량이 낮은 코어(little 코어)와 데이터 처리 가능량이 높은 코어(big 코어)로 구성되는 멀티코어이다.
데이터 처리 가능량이 낮은 코어는 한 번에 처리할 수 있는 데이터량이 적어 경우에 따라 코어에 오버헤드를 야기할 수 있지만, 전류소모량이 데이터 처리 가능량이 높은 코어에 비해 낮으므로 발열 및 배터리 소모 측면에서는 데이터 처리 가능량이 낮은 코어로 패킷을 처리하는 것이 바람직할 수 있다.
따라서 본 개시에서는 감지된 어플리케이션을 통해 생성되는 플로우의 데이터량을 기설정된 임계값과 비교하고 비교결과에 기반하여 상기 감지된 어플리케이션을 통해 생성되는 패킷을 처리하기 위한 코어를 할당한다. 그러므로 여기서의 기설정된 임계값은 데이터 처리 가능량이 낮은 코어의 최대 데이터 처리 가능량이 될 수 있다.
감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값을 초과한다면, 데이터 처리 가능량이 낮은 코어를 통해서는 패킷을 처리할 수 없으므로 제어부는 데이터 처리 가능량이 높은 코어를 패킷을 처리하기 위한 코어로 할당한다.
반면에 감지된 어플리케이션을 통해 생성되는 패킷의 데이터량이 기설정된 임계값 이하라면, 데이터 처리 가능량이 낮은 코어를 통해서도 충분히 패킷을 처리할 수 있으므로, 제어부는 데이터 처리 가능량이 낮은 코어를 패킷을 처리하기 위한 코어로 할당할 수 있다.
도 5는 본 개시에 따른 전자 디바이스의 구성도이다.
본 개시에 따른 전자 디바이스(500)는 어플리케이션(570), 제어부(520) 및 멀티코어(510)를 포함할 수 있다.
멀티코어(510)는 도시된 바와 같이 n개의 코어를 포함할 수 있으며, big.little 타입으로 구성될 수 있다. 예를 들어 코어 1(511)과 코어 2(512)는 데이터 처리 가능량이 낮은 little 타입의 코어로 구성될 수 있으며 코어 n(513)은 데이터 처리 가능량이 높은 big 타입의 코어로 구성될 수 있다.
본 개시에 따른 제어부(520)는 어플리케이션(570)에 의해 실행을 감지하며, 수신된 패킷을 코어로 할당하고, 코어가 패킷을 처리한 이력을 관리하는 등의 동작을 수행할 수 있다. 상기 제어부(520)는 프로세서와 같은 하드웨어가 될 수 있으며, 또는 운영체제제와 같은 소프트웨어가 될 수도 있다.
구체적으로 본 개시에 따른 제어부(520)는 어플리케이션 관리자(530), 패킷 이력 관리자(540), 패킷 모니터(550) 및 코어 할당부(560)를 포함할 수 있다.
어플리케이션 관리자(530)는 전자 디바이스(500)의 배경화면(foreground)에서 실행되는 어플리케이션(570)을 감지하는 동작을 수행한다. 어플리케이션(570)의 실행이 감지되면 실행되는 어플리케이션(570)의 카테고리를 분석할 수 있으며, 카테고리 정보를 포함하는 어플리케이션 정보가 확인되면 상기 어플리케이션 정보를 패킷 이력 관리자(540), 패킷 모니터(550) 및 코어 할당부(560)로 전달할 수 있다.
패킷 이력 관리자(540)는 과거 패킷 처리 이력을 관리하는 장치로써, 과거에 패킷이 할당되어 처리된 이력을 기록하고, 코어 할당, 트래픽양 및 어플리케이션 정보를 관리하는 동작을 수행할 수 있다.
패킷 모니터(550)는 전자 디바이스(500)를 통해 송수신되는 플로우를 모니터링하는 동작을 수행할 수 있다. 또한 어플리케이션 관리자(530)로부터 수신된 어플리케이션 정보에 기반하여 수신될 플로우 정보를 식별하고, 수신될 플로우 및 패킷을 예측할 수 있다. 또한 수신되는 플로우 및 패킷을 확인할 수 있으며, 수신되는 플로우 및 패킷 정보를 코어 할당부(560)로 전달할 수 있다.
또한 패킷 모니터(550)는 수신된 플로우의 트래픽양을 모니터링 할 수 있으며, 수신된 패킷의 데이터량이 할당된 코어의 데이터 처리 가능량을 초과하는지 여부를 모니터링 할 수 있다.
만약 수신된 패킷의 데이터량이 할당된 코어의 데이터 처리 가능량을 초과하는 경우 코어 할당부(560)로 이에 대한 정보를 전달하여 다른 코어가 수신된 패킷을 처리할 수 있도록 할 수 있다.
코어 할당부(560)는 어플리케이션 관리자(530)로부터 수신된 어플리케이션 정보와 패킷 모니터(550)로부터 수신된 플로우 정보에 기반하여 멀티코어(510)로 수신될 패킷을 예측하고 상기 패킷을 처리할 코어를 할당할 수 있다.
또한 패킷 이력 관리자(540)로부터 수신한 코어 할당 이력에 기반하여 멀티코어(510)로 수신될 패킷을 예측하고 상기 패킷을 처리할 코어를 할당할 수 있다.
만약 수신된 패킷의 데이터량이 할당된 코어의 데이터 처리 가능량을 초과하는 경우 코어 할당부(560)는 상기 패킷을 처리하기 위한 코어로 다른 코어를 할당할 수 있으며, 코어를 할당한 이후에는 코어 할당 정보와 패킷 정보를 패킷 이력 관리자(540)로 전송할 수 있다. 이하, 도 6a 내지 도 15를 참조하여 하나의 플로우에 포함된 복수의 패킷을 코어에 할당하는 방법에 대해 설명한다.
도 6a 및 도 6b는 멀티코어를 포함하는 라우터 및 멀티코어를 포함하는 클라이언트를 설명하기 위한 도면이다.
도 6a 및 도 6b는 데이터가 서버(server, 610)로부터 라우터(router, 620)를 거쳐 클라이언트(client, 630)로 전송되는 경로를 설명하기 위한 도면이다. 도 6a는 멀티코어에 기반한 라우터(620)에 의한 효과를 설명하기 위한 도면이며, 도 6b는 멀티코어를 포함하는 클라이언트(630)에 의한 효과를 설명하기 위한 도면으로, 멀티코어를 포함하는 라우터(620) 및 클라이언트(630)의 효과를 비교하기 위해 함께 설명한다. 통상적으로, 패킷의 분산 처리는 서버(610) 또는 라우터(620)에서 수행될 수 있으나, 본 개시의 실시예는 멀티코어를 포함하는 클라이언트(630)에서 복수의 코어 사이의 패킷 분산 처리 방법에 관한 것이다.
서버(610)의 어플리케이션 계층(APP layer)에서 발생되는 데이터는 전송 계층(TCP layer), 네트워크 계층(IP layer), 데이터 링크 계층(MAC layer), 물리 계층(PHY layer)을 거치면서, 각각의 계층 마다 인식될 수 있는 헤더(header)에 의해 씌워지는 과정(캡슐화, encapsulation)을 거치게 된다.
특히, 데이터는 전송 계층에서 인터넷 상에서 전달되기 용이한 TCP 패킷으로 변환(데이터에 TCP 헤더가 부가)될 수 있고, 네트워크 계층에서 인터넷 상의 특정 주소로 이동할 수 있도록 하기 위해 TCP/IP 패킷(TCP 패킷에 IP 헤더가 부가)으로 변환될 수 있다.
캡슐화를 거친 데이터는 클라이언트(630)의 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층을 거쳐지는 과정(디캡슐화, de-encapsulation)을 거칠 수 있고, 디캡슐화를 거친 데이터는 클라이언트(630)의 어플리케이션 계층에 포함되는 코어에 의해 처리될 수 있다. 최종적으로 어플리케이션 계층에 포함되는 코어에 의해 처리된 데이터는 사용자에게 특정 서비스로서 제공될 수 있다.
실시예에 따라, 클라이언트(630)는 멀티코어를 포함하는 전자 디바이스일 수 있으며, 멀티코어 시스템(예컨대, 단말, 스마트 폰, 태블릿 PC와 같은 모바일 단말, 가정용 유무선 공유기 등)로 지칭될 수 있다. 실시예에 따라, 클라이언트(630)가 단말일 경우, 클라이언트(630)은 기지국(도면미도시)으로부터 캡슐화된 데이터를 수신할 수 있다.
라우터(620)는 캡슐화된 데이터에 포함된 TCP/IP 패킷을 인터넷 상의 특정 주소로 전달할 수 있다. 라운터(620)는 캡슐화된 데이터에 포함된 TCP/IP 패킷을 분석하여 캡슐화된 데이터의 경로를 결정할 수 있고, 결정된 경로에 따라 클라이언트(620)에 캡슐화된 데이터를 전달할 수 있다.
도 6a를 참조하면, 라우터(620)는 멀티코어(621, 623, 625, 627)를 포함할 수 있다. 싱글코어를 포함한 라우터에 의해 분석되는 TCP/IP 패킷의 량보다 멀티코어(621, 623, 625, 627)를 포함하는 라우터(620)에 의해 분석되는 TCP/IP 패킷의 량은 많을 수 있다. 멀티코어를 포함하는 라우터(620)는 싱글코어를 포함하는 라우터 보다 많은 캡슐화된 데이터의 경로를 분석하여, 보다 많은 캡슐화된 데이터를 클라이언트(630)으로 전달할 수 있다. 결과적으로, 멀티코어를 포함한 라우터(620)는 TCP/IP 패킷의 라우팅 처리 성능을 향상시킬 수 있다.
도 6b를 참조하면, 본 개시의 일 실시예에 따른 클라이언트(630)는 멀티코어(631, 633, 635, 637)를 포함할 수 있다. 멀티코어(621, 623, 625, 627)를 포함하는 라우터(620)와 비교하면, 멀티코어(631, 633, 635, 637)를 포함하는 클라이언트(630)는 종단간 수신 패킷의 처리량(throughput)을 향상시킬 수 있다. 실시예에 따라, 처리량은 단위 시간당 클라이언트(630)가 처리하는 패킷량으로 산출될 수 있다.
실시예에 따라, 멀티코어를 포함하는 클라이언트(630)는 수신 패킷의 처리량을 보다 향상시키기 위해 TCP/IP 패킷이 저장될 메모리를 더 포함할 수 있다. 일 실시예에 따라, 메모리는 스택(stack) 구조의 메모리일 수 있다. 다른 일 실시예에 따라, 메모리는 큐(queue) 구조의 메모리일 수 있다.
실시예에 따라, TCP/IP 패킷이 저장될 메모리의 개수는 클라이언트(630)에 포함되는 코어의 개수에 대응될 수 있다. 예를 들어, TCP/IP 패킷을 처리하는 코어가 2개 인 경우, TCP/IP 패킷이 저장될 메모리는 2개일 수 있다. 다만, 메모리의 개수가 반드시 코어의 개수에 한정되지 않으며, 클라이언트(630)는 어플리케이션 계층에서 데이터를 처리하는 코어가 사용하는 메모리(예를 들어, 백업 큐(backup queue))를 더 포함할 수 있다.
이하, 도 7a 및 도 7b에서 설명되는 멀티코어 기반 데이터 처리 원리는 멀티코어를 포함하는 클라이언트(630, "멀티코어 시스템"으로 지칭될 수 있다)에서 수행될 수 있다.
한편, 멀티코어 시스템은 두 가지로 분류될 수 있다. 제1 멀티코어 시스템은 복수의 코어를 포함할 수 있고, 복수의 코어 각각은 하나씩 플로우를 할당 받을 수 있다. 예를 들어, 제1 멀티코어 시스템은 제1 플로우를 처리하는 제1 코어, 제2 플로우를 처리하는 제2 코어를 포함할 수 있다. 다시 말해서, 제1 멀티코어 시스템은 제1 플로우를 제1 코어에만 할당하여 플로우를 처리할 수 있다.
실시예에 따라, 제1 멀티코어 시스템은 멀티코어 시스템에서 구동되는 어플리케이션을 고려하여 특정 플로우를 멀티코어 중 특정 코어에 할당할 수 있다. 실시예에 따라, 어플리케이션이 이전에 구동되었던 이력 정보(예를 들어, 네트워크 트래픽(traffic)량, 패킷의 IP 주소, 플로우가 발생한 서버에 대한 정보), 이전에 플로우를 할당 받았던 코어에 대한 이력 정보(예를 들어, 코어 식별정보, 코어 사용률)가 고려되어, 제1 멀티코어 시스템은 어플리케이션 별로 특정 플로우를 특정 코어에 할당할 수 있다. 예를 들어, 제1 멀티코어 시스템은 제1 어플리케이션의 플로우(즉, 제1 어플리케이션과 관련된 패킷)의 처리를 위해 제1 코어에 할당할 수 있고, 제2 어플리케이션의 플로우(즉, 제2 어플리케이션과 관련된 패킷)의 처리를 위해 제2 코어에 할 당할 수 있다.
제2 멀티코어 시스템은 하나의 플로우에 포함된 제1 패킷, 제2 패킷을 각각 제1 코어, 제2 코어에 할당하여 플로우를 처리할 수 있다. 이하에서 설명하는 멀티코어 시스템은 제2 멀티코어 시스템과 같이, 하나의 플로우에 복수의 코어가 할당되는 시스템을 지칭한다.
실시예에 따라, 멀티코어는 트래픽 처리 성능에 따라 전력 소모가 많지만 처리 능력이 큰 코어(이하, "빅(big) 타입 코어"로 지칭될 수 있다)와 전력 소모가 적지만 처리 능력도 작은 코어(이하, "리틀(little) 타입 코어"로 지칭될 수 있다)로 분류될 수 있다. 이때, 멀티코어 시스템은 하나의 플로우에 포함된 복수의 패킷을 할당할 때, 트래픽 처리 성능이 동일한 코어들에 할당할 수 있다. 하나의 플로우에 포함된 패킷을 할당하기 때문에, 패킷 간의 순서가 중요하기 때문이다.
예를 들어, 멀티코어 시스템은 빅 타입 코어로 분류된 제1 코어 및 제3 코어를 포함할 수 있고, 리틀 타입 코어로 분류된 제2 코어 및 제4 코어를 포함할 수 있다. 이때, 멀티코어 시스템은 제1 패킷을 제1 코어에 할당할 경우, 제2 패킷을 리틀 타입 코어인 제2 코어가 아닌 빅 타입 코어인 제3 코어에 할당할 수 있다. 이에 따라, 제1 패킷에 대한 처리가 종료되는 시기가 제2 패킷에 대한 처리가 종료되는 시기와 비슷할 수 있고, 결과적으로 제1 패킷과 제2 패킷 사이의 순서가 유지될 수 있다. 만약, 제1 패킷이 제2 코어에 할당되고, 제2 패킷이 제1 코어에 할당되면, 제2 패킷에 대한 처리가 종료되는 시기가 제1 패킷에 대한 처리가 종료되는 시기 보다 빠를 수 있고, 결과적으로, 결과적으로 제1 패킷과 제2 패킷의 순서가 어긋나는 문제가 발생할 수 있기 때문이다.
도 7a 및 도 7b는 본 개시의 실시예에 적용 가능한 멀티코어 기반 데이터 처리 원리를 설명하기 위한 도면이다.
도 7a는 기존의 멀티코어 기반 데이터 처리를 도시한 것으로, 도 7b와의 비교를 위해 도시되었다.
복수의 플로우들(Flow 1 내지 4)을 통해 데이터를 수신한 경우, 멀티코어 시스템은 플로우를 구분하기 위해 각 플로우를 통해 전송된 패킷의 헤더 정보로부터 해시(Hash)값을 추출한다. 그리고, 해시값에 따라 각 플로우를 멀티코어 시스템에 탑재된 코어들(Core 1 내지 4) 중 하나에 할당하여 각 플로우별 패킷을 분산 처리한다. 패킷 헤더 정보에는 발신지 IP 주소, 발신지 포트, 목적지 IP 주소, 목적지 포트, 및 전송 계층 프로토콜이 포함될 수 있다.
이와 같은 패킷 분산 처리 기술은 수신 패킷 스티어링(receive packet steering, RPS)으로 명명한다.
수신 패킷 스티어링은 복수의 플로우들(Flow 1 내지 4)에서 발생하는 패킷들을 여러 코어들(Core 1 내지 4)을 사용해 동시에 처리할 수 있기 때문에, 고속 대용량의 데이터 처리에 적합하다.
수신 패킷 스티어링에 대해 보다 상세히 설명하면 다음과 같다.
멀티코어 시스템은 탑재된 전체 코어들 중 수신 패킷 스티어링을 위한 코어 셋(set)을 설정할 수 있으며, 각 플로우에 할당된 설정값(markable value)을 이용해 코어 셋에 속하는 코어들 중 어떤 코어들을 사용할지 지정할 수 있다. 특정 플로우를 통해 전송된 데이터는 그 플로우의 설정값에 따라, 지정된 코어들 중 하나의 코어에 분배된다. 설정값은 네트워크 인터페이스 별로 설정이 가능하다.
하나의 플로우를 통해 패킷이 수신되면, 멀티코어 시스템의 네트워크 드라이버는 수신 패킷을 처리하는 디폴트 코어에 명령(인터럽트)을 전송한다. 명령을 수신한 디폴트 코어는 상기 플로우의 해시값을 추출한다. 추출된 해시값을 기반으로, 코어 셋으로 지정된 코어들 중 하나의 코어가 상기 플로우를 위한 코어로 지정된다. 디폴트 코어는 각 플로우별 수신 패킷을 지정된 코어의 백로그 큐(backlog queue)에 전달하고, 상기 코어가 패킷을 처리하도록 명령(인터럽트)을 보낸다.
이와 같이, 수신 패킷 스티어링에서는 플로우 단위로 패킷들이 분산 처리된다. 즉, 각 플로우를 통해 전송된 패킷의 헤더 정보 내 해시값에 따라 그 패킷을 처리할 코어가 지정되고, 지정된 코어에서 상기 플로우의 모든 패킷들이 처리된다.
이 경우, 동시에 생성되는 플로우 수가 많고 각 플로우별 데이터 트래픽이 비슷한 멀티코어 시스템(예컨대, 서버)에서는 각 코어별 부하(패킷 처리 부하)를 균등하게 분배하기 용이하다. 그러나, 동시 연결되는 플로우 수가 대부분 많지 않은 경우, 또는 각 플로우별 데이터 트래픽 차이가 큰 경우가 흔히 발생하는 멀티코어 시스템(예컨대, 스마트 폰, 태블릿 PC와 같은 모바일 단말, 가정용 유무선 공유기 등)에서는, 패킷 분산 처리가 제대로 이루어지지 않을 수 있다. 또한, 생성 플로우 수가 많더라도 일부 플로우에서 대용량의 데이터 트래픽이 발생할 경우 특정 코어에만 데이터 처리 부하가 집중되어 트래픽 처리 성능이 떨어질 수 있다. 예를 들어, 모바일 단말에서 대용량 비디오 파일을 하나 다운로드 받는다면, 하나의 플로우(예컨대, 하나의 TCP 연결)가 생성될 것이고, 이 플로우에서 수신되는 패킷을 처리하기 위한 부하는 한 코어에 집중될 것이다.
해시값을 기반으로 랜덤하게 데이터 트래픽을 분산하고자 할 경우, 해시 함수를 이용한 연산 후 모듈러(modular) 연산이 수행된다(예컨대, N개의 데이터 패킷에 대해 해시 함수 적용 후 mod 2, mod 4, ??). 이때, 표본 개수(즉 플로우 수)가 충분하다면 랜덤하게 분배하더라도 트래픽이 거의 균등하게 분배될 수 있지만, 표본이 부족하면(즉 플로우 수가 적으면), 한 코어에 다른 코어 대비 더 많은 플로우가 할당되어 데이터 트래픽이 집중될 가능성이 높다.
이렇게 플로우 수가 적은 상황에서 특정 플로우에 대용량 데이터 트래픽이 집중될 경우 트래픽 처리 성능을 개선하는데 한계가 있다.
또한, 많은 수의 플로우들(예컨대, 도 7a의 Flow 1 내지 4)이 생성되고, 플로우 수를 동일하게 나누어 코어들(Core 1 내지 4)의 패킷 처리 부하를 균등하게 분배하더라도, 데이터 트래픽(패킷 양)이 한 플로우(Flow 3)에만 집중될 경우(S700), 상기 플로우의 패킷 처리용으로 지정된 코어(Core 3)의 부하만 현저하게 높아져 트래픽 처리 성능 저하가 발생할 수 있다.
도 7b는 본 개시의 실시예에 적용 가능한 멀티코어 기반 데이터 처리를 예시한 것이다.
전술한 것처럼, 멀티코어 시스템에서, 동시 연결되는 플로우 수가 많지 않은 경우, 각 플로우마다 다양한 트래픽이 발생하거나 각 플로우별 데이터 트래픽 차이가 큰 경우, 생성 플로우 수가 많더라도 일부 플로우에 대용량의 데이터 트래픽이 집중되는 경우가 흔히 발생한다. 따라서, 플로우 단위로 코어를 단순 지정할 경우, 즉 플로우를 랜덤하게 코어들 중 하나에 할당할 경우 일부 코어에 부하가 집중되어 트래픽 처리 성능 저하가 발생할 수 있다. 특히, 도 7a와 같이, 특정 플로우(예컨대, Flow 3)에서 고속 대용량 데이터의 수신이 발생할 경우, 상기 플로우의 전체 데이터 트래픽을 하나의 코어(예컨대, Core 3)에서 처리(S700)함으로 인해 충분한 데이터 수신 속도를 얻지 못할 수 있다.
본 개시의 실시예는 이러한 문제를 해결하기 위해, 특정 플로우(예컨대, 도 7b의 Flow 4)에서 고속 대용량 데이터의 처리가 요구되는 경우 상기 플로우의 패킷들을 복수의 코어들(예컨대, 도 7b의 Core 3, 4)로 분배한다. 이에 따라, 한 플로우(예컨대, 도 7b의 Flow 4)의 패킷들이 2개 이상의 코어들(예컨대, 도 7b의 Core 3, 4)에서 동시에 처리(S720)됨으로써 데이터 처리가 가속화되어 트래픽 처리 성능이 향상될 수 있다.
즉, 본 실시예에 따른 패킷 분산 처리 기술은 한 플로우의 데이터 트래픽을 복수의 코어들로 분산하여 처리하는 방식으로, 이하 "플로우 스캐터링(flow scattering, FS)"으로 명명한다.
FS를 모든 플로우들에 대해 항상 적용하여 모든 플로우들의 데이터 트래픽을 패킷 단위로 복수의 코어들에서 처리할 경우, 패킷 순서가 뒤바뀌는(Out-of-order) 문제가 심각해질 수 있으며, 그 때문에 트래픽 처리 성능이 오히려 떨어질 수 있다.
따라서, 본 개시의 실시예에서는 FS를 기반으로, FS를 효율적으로(예를 들어, 특정한 상황에서 특정 플로우에 대해서만) 적용하는 방안, FS의 적용 시 사용할 (최적) 코어를 선택하는 방안을 함께 제안한다.
도 8는 본 개시의 실시예에 따른 멀티코어 기반 데이터 처리 방법을 나타낸 흐름도이다.
하기의 설명에서 장치는 멀티코어를 탑재하여 데이터 수신 및 처리를 실행할 수 있도록 구성된 개체를 의미하는 것으로서, 상기 방법을 설명하기 위한 목적으로 예시된 것일 뿐, 본 개시의 실시 형태를 한정하지 않는다.
예컨대, 본 개시의 실시예에 따른 방법은, 스마트 폰이나 태블릿 PC와 같은 모바일 단말, 서버나 클라이언트, 서버-클라이언트 사이의 스위치, 라우터, 공유기, 기타 유무선 사용자 단말, 네트워크, 통신 시스템 등, 임의의 장치나 시스템, 또는 그 장치나 시스템의 하드웨어/펌웨어/소프트웨어적 일부 프로세서나 컨트롤러에 의해 실행될 수 있다. 혹은 운영체제나 커널(Kernel) 단에 포함된 일부 기능이나 구성요소 또는 모듈과 같은 형태로 구현될 수도 있다.
도 8를 참조하면, 장치는 일정 주기가 도래하는지 또는 FS 적용 여부를 판단해야 하는 특정 이벤트가 발생하는지 여부를 체크한다(S810). 예를 들어, 장치는 부하가 임계값 이상인 코어가 발생하는 경우 또는 새로운 플로우가 생성(연결)되는 경우, FS 적용 여부를 판단해야 하는 특정 이벤트가 발생한 것으로 인지할 수 있다.
주기적으로, 또는 특정 이벤트가 발생한 경우(예컨대, 부하가 임계값 이상인 코어가 발생한 경우, 새로운 플로우가 생성된 경우), 장치는 한 플로우에 대하여 FS 적용이 가능한지 여부, 즉 플로우의 패킷 분산 조건이 충족되는지 여부를 판단한다(S820).
일 예로, 부하가 임계값 이상인 코어가 발생한 경우, 장치는 상기 코어에 기 할당되어 있던 플로우의 패킷 분산 조건이 충족되는지 판단한다. 혹은, 일정 주기가 도래한 경우, 장치는 사용 중인 플로우(들)의 패킷 분산 조건이 충족되는지 판단할 수도 있다. 혹은, 새로운 플로우가 생성된 경우, 장치는 생성된 새로운 플로우의 패킷 분산 조건이 충족되는지 여부를 판단할 수도 있다.
특정 플로우가 패킷 분산 조건을 충족하는지 여부는, 상기 플로우의 데이터 수신 속도, 상기 플로우의 패킷 분산 이력에 대한 컨텍스트 정보, 상기 플로우를 할당받은 코어의 패킷 처리율, 및 상기 코어의 사용률 중 하나 이상을 기반으로 판단될 수 있다.
특정 플로우에 대한 FS 적용 조건, 즉 패킷 분산 조건을 보다 상세히 예시하면 다음과 같다.
A) 한 플로우의 패킷 분산 이력에 대한 컨텍스트 정보가 존재하고, 상기 컨텍스트를 만족하는가
B) 특정 코어의 패킷 처리율이 일정 임계값#1 [%] 이상인가? - 예를 들어, 피크 사용률 95% 또는 평균 사용률 80%가 임계값#1로 지정되고, 특정 코어의 피크 사용률이 95% 이상이거나 평균 사용률이 80%인 경우 임계값#1 이상인 것으로 판단될 수 있다.
C) 조건 B에 해당하는 코어 내 최대 데이터량(Throughput, 데이터 수신 속도) 발생 플로우의 데이터량, 또는 전체 플로우들 중 최대 데이터량 발생 플로우의 데이터량이 일정 임계값#2 [Mbps] 이상인가? - 예를 들어, 임계값#2는 현재 코어의 최대 클럭 속도(clock speed, frequency)에서 사용률 50%로 얻을 수 있는 최대 데이터 수신 속도 [Mbps]로 설정될 수 있다.
D) 조건 B 및/또는 조건 C를 만족하는 시간이 일정 임계값#3 [sec] 이상인가? - 예를 들어, 조건 B 및 C를 만족하는 시간이 1sec를 초과할 경우에만 FS가 적용될 수 있다.
E) 조건 B에 해당하는 코어 이외의 코어들 중 사용률이 일정 임계값#4 [%] 미만인 코어가 존재하는가? 또는 조건 B에 해당하는 코어(최고 사용률을 갖는 코어)와의 사용률 차이가 일정 비율 이상인 코어가 존재하는가? - 예를 들어, 조건 B에 해당하는 코어와의 사용률 차이가 50% 이상인 코어가 존재하는 경우, 또는 사용률이 20% 미만인 코어가 존재하는 경우 상기 코어가 FS 처리용 코어로 선택될 수 있다.
실시예에 따라, 전술한 A 내지 E 조건 중 일부만 충족되는 경우에 대해서도 FS가 적용될 수 있다.
S820 과정의 판단 결과 한 플로우의 패킷 분산 조건이 충족된 경우, 장치는 전체 코어들 중 복수 개의 FS 처리용 코어들을 선택하고, 상기 플로우에 대한 플로우 정보, 상기 선택된 코어들에 대한 코어 정보로부터 FS 테이블을 생성한다(S830).
이후, FS 적용 중인 플로우의 데이터 수신 속도가 일정 임계값#5 [Mbps] 미만이 되거나 이러한 상태가 일정 시간(예컨대, 1sec 이상) 유지되는 경우 상기 플로우는 FS 테이블에서 제거될 수 있다. 이 경우, 상기 플로우에 대한 FS 적용이 중지된다.
상기한 S830 과정에서, 장치는 FS가 적용되는 플로우에 대한 정보, FS 처리용으로 선택된 코어들에 대한 코어 정보와 더불어, 상기 플로우의 컨텍스트 정보를 생성하여 플로우 DB(database)에 함께 저장할 수 있다. 이는 향후 필요한 경우(예컨대, 새로운 플로우의 생성 시), 플로우 DB로부터 과거 동일한 플로우 및/또는 동일한 컨텍스트에서 FS 적용 이력이 있었던 경우 상기 이력에 기반하여 바로 FS를 적용할 수 있도록 하기 위함이다.
저장되는 컨텍스트 정보를 예시하면 다음과 같다.
- 플로우 정보: 서버 IP 주소, 포트 번호, 전송 계층 프로토콜(e.g., TCP, UDP)
- 어플리케이션 정보: 사용자 Name(User ID, UID), 백그라운드 또는 포그라운드(Background or Foreground) 여부
- 장치 상태: 화면 온/오프(Screen On/Off), 네트워크 연결(예컨대, WiFi or LTE), 배터리 상태(%), 위치, 이동성
상기한 S830 과정에서, 장치는 코어 정보, 예컨대 탑재된 전체 코어들의 패킷 처리율 또는 개별 사용률 정보를 모니터링하여 모니터링 결과를 기초로 상기 플로우의 FS 처리를 위한 코어들을 선택하여 FS 테이블로 저장할 수 있다.
일 예로, 장치는 패킷 처리를 위한 코어 사용률이 일정 임계값(예컨대, 20%) 미만인 코어를 FS 처리용 코어로 선택할 수 있다. 혹은, 사용률이 일정 임계값 미만인 코어 또는 최고 사용률을 갖는 코어와의 사용률 차이가 일정 비율(예컨대, 50%) 이상인 코어를 FS 처리용 코어로 선택할 수 있다. 혹은, 플로우를 전혀 할당받지 않고 대기 상태에 있는 코어들 또는 FS 처리용이 아닌 일반 플로우를 할당받은 코어들 중, 사용률이 일정 임계값 미만이거나 최고 사용률을 갖는 코어와의 사용률 차이가 일정 비율 이상인 코어를 FS 처리용 코어로 선택할 수 있다.
상기한 S820 과정의 판단 결과 한 플로우의 패킷 분산 조건이 충족된 경우, 장치는 상기 플로우에 FS를 적용하여 그 플로우를 통해 수신되는 패킷들을 S830 과정을 통해 선택된 복수의 코어들로 분배한다(S840).
상기한 S840 과정에서, 장치는 기 저장된 FS 테이블로부터 FS가 적용된 플로우를 식별하여 식별된 플로우의 패킷들을 해시값에 따라 필터링(filtering)하고, 필터링된 패킷들을 S830 과정을 통해 지정된 복수 개의 FS 처리용 코어들로 분산하여 할당할 수 있다.
장치는 필요한 경우, FS 처리용으로 선택된 코어들에 상기 플로우로부터 분산 할당된 패킷 처리 외의 다른 작업이 추가되지 않도록 설정할 수 있다. 예를 들어, 선택된 코어들 중 적어도 어느 하나가, 상기 플로우의 패킷 처리 외의 다른 작업은 하지 못하도록 설정할 수 있다. 혹은, 선택된 코어들 중 적어도 어느 하나에 기 할당되어 있던 FS 처리용이 아닌 일반 플로우를 선택된 코어들을 제외한 다른 코어로 재 할당할 수도 있다. 즉, 선택된 코어들 중 적어도 하나에 대하여, 선택된 코어에 할당되어 있던 일반 플로우를 다른 코어(예컨대, 어떤 플로우도 할당받지 않은 대기 상태의 코어 또는 FS 처리용으로 선택되지 않은 코어, 대기 상태 또는 FS 처리용으로 선택되지 않은 코어들 중 사용률이 낮은 코어 등)로 재 할당하는 것이다.
상기한 S820 과정의 판단 결과, 특정 플로우의 패킷 분산 조건이 충족되지 않는 경우에는, 상기 플로우에 대해 FS가 적용되지 않는다. FS 미적용 플로우에 대해서는 FS 처리용 코어를 제외한 나머지 코어에서 기존 방식으로 패킷들을 처리한다(S850). 즉, 특정 플로우의 패킷 분산 조건이 충족되지 않으면, 상기 플로우의 패킷들을 복수 코어들로 분배하는 FS 처리 없이, 상기 플로우에 할당되어 있던 기존 코어에서 계속해서 상기 플로우의 모든 패킷들을 처리한다.
도 9a는 하나의 플로우에 하나의 코어가 할당되는 경우를 설명하기 위한 도면이며, 도 9b는 하나의 플로우에 복수의 코어가 할당되는 경우를 설명하기 위한 도면이다.
도 9a 및 도 9b는 싱글코어 시스템과 멀티코어 시스템의 동작을 비교하기 위해 함께 설명한다. 도 9a 및 도 9b를 참조하면, 하나의 플로우는 복수의 패킷을 포함할 수 있고, 각각의 패킷은 TCP 헤더와 IP 헤더를 포함할 수 있다. 도 6a에서 설명한 바와 같이, 멀티코어 시스템은 캡슐화된 데이터를 수신할 수 있는데, 캡슐화된 데이터의 디캡슐화는 TCP 헤더를 제거하는 과정 및 IP 헤더를 제거하는 과정을 포함할 수 있다. 상세하게, 하나의 플로우에 포함된 복수의 패킷에 대한 디캡슐화는 계층에 따른 순서가 고려되어 과정적으로 수행되며, TCP 헤더를 제거하는 과정으로서 전송 계층에서의 디캡슐화(이하, "TCP 절차", "TCP 프로세싱" "전송 계층 처리" 또는 "전송 계층 프로세싱"으로 지칭될 수 있다) 및 IP 헤더를 제거하는 과정으로서 네트워크 계층에서의 디캡슐화(이하, "IP 절차", "IP 프로세싱", "네트워크 계층 처리" 또는 "네트워크 계층 프로세싱"으로 지칭될 수 있다)를 포함할 수 있다.
도 9a를 참조하면, 싱글코어 시스템은 TCP 헤더와 IP 헤더를 포함하는 8개의 패킷이 하나의 플로우에 포함될 수 있다. 8개의 패킷을 포함하는 플로우는 제1 코어(913)에 포함된 제1 큐에 위치할 수 있다.
제1 코어(913)는 먼저 IP 절차(S910)를 수행한 이후, TCP 절차(S930)를 수행할 수 있으며, TCP 절차(S930)가 완료된 패킷은 TCP 수신 버퍼(916, TCP receive buffer)에 저장될 수 있고, 이후 TCP 수신 버퍼(916)에 저장된 패킷은 어플리케이션 계층으로 분류되는 유저 버퍼(919, user buffer) 또는 어플리케이션 코어로 제공될 수 있다. 상세하게, 제1 코어(913)는 IP 절차(S910) 이후, 기 설정된 개수만큼의 패킷만 TCP 절차(S930)을 수행하고, 남은 패킷에 대해서는 TCP 절차(S930)의 수행을 중단시키는 소켓 락 절차(S920)가 수행될 수 있다. 이때, TCP 절차(S930)가 수행되지 않은 소켓은 제1 백로그큐(backlog queue)에 저장될 수 있다.
IP 절차(910)가 수행된 후, TPC 절차(930)가 수행된 패킷을 TCP 수신 버퍼(916)를 거쳐 유저 버퍼(919)에 전달할 때 소켓 락 절차(S920)가 수행됨으로써, TCP 절차(S930)가 완료된 패킷을 TCP 수신 버퍼(916)에 저장하는 과정과 TCP 수신 버퍼(916)에서 유저 버퍼(919)로 복사하는 과정이 충돌하지 않을 수 있다. 결과적으로, 유저 버퍼(919)에서 TCP 수신 버퍼(916)의 패킷을 복사하는 동안, 제1 코어(913)는 TCP 절차(S930)가 수행되지 않은 패킷에 대한 TCP 절차(S930)를 수행할 수 없다. 이후, 소켓 락 절차(S920)가 해제되면, 비로소 제1 백로그큐에 저장된 4개의 패킷에 대한 TCP 절차가 수행될 수 있다. 제1 코어가 TCP 절차(S930)을 수행하지 않게 되는 소켓 락 절차(S920)가 수행되는 동안 처리되는 패킷량은 없을 수 있다.
도 9b에 따른 멀티코어 시스템은 하나의 플로우에 포함된 제1 패킷, 제2 패킷을 각각 제2 코어(923), 제3 코어(933)에 할당하여 플로우를 처리할 수 있다.
도 9b를 참조하면, TCP 헤더와 IP 헤더를 포함하는 8개의 패킷이 하나의 플로우에 포함될 수 있다. 제2 멀티코어 시스템은 멀티코어 패킷 스케줄(multi core packet schedule, MPCS)을 통해 제2 코어(923) 및 제3 코어(933)에 각각 4개씩 패킷이 분배될 수 있다. 실시예에 따라, 제2 코어(923)에 분배된 4개의 패킷은 제2 코어(923)에 포함된 제2 큐에 위치할 수 있고, 제3 코어(933)에 분배된 4개의 패킷은 제3 코어(933)에 포함된 제3 큐에 위치할 수 있다.
제2 코어(923) 및 제3 코어(933) 각각이 IP 절차(S910)를 수행한 이후, 그 결과를 제2 코어(923) 및 제3 코어(933) 각각에 대응되는 제2 백로그큐 및 제3 백로그큐에 저장할 수 있다. IP 절차(S910)가 수행된 8개의 TCP 패킷은 소켓 락 과정을 거치지 않고, 순서대로 TCP 절차(S930)을 거쳐 백업 수신 버퍼(926, backup receive buffer)에 저장될 수 있다. 백업 수신 버퍼(926)에 저장된 패킷은 TCP 수신 버퍼(916)에 이동된 후, 소켓 락 절차(S920) 없이 유저 버퍼(919)로 복사될 수 있다.
결과적으로, 도 9b의 제2 멀티코어 시스템은 IP 절차(S910) 후, 소켓 락 절차(S920) 없이 TCP 절차(S930)을 수행할 수 있기 때문에 도 9a의 제1 멀티코어 시스템보다 많은 처리량을 가질 수 있다.
실시예에 따라, 제2 코어(923), 제3 코어(933)는 동일한 트래픽 처리 능력을 가질 수 있다. 예를 들어, 제2 코어(923)이 빅 타입 코어이면, 제3 코어(933)도 빅 타입 코어일 수 있다. 제2 코어(923)가 리틀 타입 코어이면, 제3 코어(933)도 리틀 타입 코어일 수 있다. 만약,
빅 타입 코어인 제2 코어(923)와 리틀 타입 코어인 제3 코어(933)가 FS에 적용되는 경우, 제2 코어(923)에 의한 처리 시간과 제3 코어(933)에 의한 처리 시간의 차이가 클 수 있고, 제2 코어(923)가 제3 코어(933)의 처리가 완료될 때까지 대기해야 하는 문제가 발생할 수 있기 때문이다.
도 10a는 도 9a에 따른 싱글코어 시스템의 소켓 락 절차를 설명하기 위한 도면이며, 도 10b는 도 9b에 따른 멀티코어 시스템의 소켓 락 절차를 설명하기 위한 도면이다.
도 10a 및 도 10b는 싱글코어 시스템의 소켓 락 절차와 멀티코어 시스템의 소켓 락 절차를 비교하기 위해 함께 설명한다.
도 10a을 참조하면, 싱글코어 시스템은 IP 절차 및 TCP 절차를 수행하는 제1 코어(1010)와 어플리케이션 계층에 속하는 프로세스 코어를 포함할 수 있다.
제1 코어(1010)는 입력 패킷 큐(1011) 및 TCP 백로그큐(1013)을 포함할 수 있다. 제1 코어(1010)는 TCP 백로그큐(1013)에서 IP 절차가 수행된 패킷에 대해 TCP 절차를 수행할 수 있다. 프로세서 코어가 TCP 수신 버퍼(1015)에서 사용자 버퍼(1016)로 TCP 절차가 수행된 패킷을 복사할 때(이동시킬 때), 다음 패킷에 대한 TCP 절차를 수행하기 위해, 제1 코어(1010)는 입력 패킷 큐(1011)에 저장된 패킷을 TCP 백로그큐(1013)에 이동시키거나 복사할 수 있다(S1010).
제1 코어(1010)가 입력 패킷 큐(1011)에 저장된 패킷 중 기 설정된 량의 패킷을 TCP 백로그큐(1013)에 이동시키거나 복사할 때, TCP 백로그큐(1013)에서 IP 절차가 수행된 패킷에 대한 TCP 절차의 소켓 락 절차가 수행되며, 소켓 락 절차가 수행되는 중에 프로세서 코어는 TCP 수신 버퍼(1015)에서 사용자 버퍼(1016)로 TCP 절차가 수행된 패킷을 복사할 수 있다(S1010).
프로세서 코어가 TCP 백로그큐(1013)에서 TCP 절차가 수행된 패킷을 TCP 수신 버퍼(1015)에 이동시킬 때, 다음 패킷에 대한 TCP 절차를 수행하기 위해, 제1 코어(1010)는 입력 패킷 큐(1011)에 저장된 패킷을 TCP 백로그큐(1013)에 이동시키거나 복사할 수 있다(S1020).
제1 코어(1010)가 입력 패킷 큐(1011)에 저장된 패킷을 TCP 백로그큐(1013)에 이동시키거나 복사할 때, 프로세서 코어는 TCP 절차가 수행된 패킷을 TCP 수신 버퍼(1015)로 이동시키거나 복사할 수 있다(S1020).
도 10b을 참조하면, 멀티코어 시스템은 IP 절차 및 TCP 절차를 수행하는 제2 코어(1020), 제3 코어(1030) 및 어플리케이션 계층에 속하는 프로세스 코어를 포함할 수 있다.
제2 코어(1020)는 제2 입력 패킷 큐(1021) 및 제2 TCP 백로그큐(1023)을 포함할 수 있으며, 제3 코어(1030)는 제3 입력 패킷 큐(1031) 및 제2 TCP 백로그큐(1033)을 포함할 수 있다. 제2 코어(1020) 및 제3 코어(1030)는 TCP 백로그큐(1023, 1033)에서 IP 절차가 수행된 패킷에 대해 TCP 절차를 수행할 수 있다. 예를 들어, 제2 코어(1020)은 홀수로 넘버링된 패킷에 대한 IP 절차 또는 TCP 절차를 수행할 수 있고, 제3 코어(1030)은 짝수로 넘버링된 패킷에 대한 IP 절차 또는 TCP 절차를 수행할 수 있다.실시예에 따라, 제2 코어(1020) 및 제3 코어(1030) 각각이 TCP 백로그큐(1023, 1033)에서 TCP 절차를 수행하는 시점은 동일할 수 있고, 상이할 수 있다. 프로세서 코어가 TCP 수신 버퍼(1015)에서 사용자 버퍼(1016)로 TCP 절차가 수행된 패킷을 복사할 때(이동시킬 때), 다음 패킷에 대한 TCP 절차를 수행하기 위해, 제2 코어(1020) 및 제3 코어(1030)는 입력 패킷 큐(1021, 1031)에 저장된 패킷을 TCP 백로그큐(1023, 1033)에 이동시키거나 복사할 수 있다. 동시에, 제2 코어(1020) 및 제3 코어(1030)는 TCP 백로그큐(1023, 1033)에서 TCP 절차가 수행된 패킷을 백업 수신 큐(1041)에 이동시키거나 복사할 수 있다(S1030).
실시예에 따라, 백업 수신 큐(1041)는 제2 코어(1020) 및 제3 코어(1030)가 공유하는 메모리이거나, 제2 코어(1020) 및 제3 코어(1030)가 모두 접근할 수 있는 메모리일 수 있다.
실시예에 따라, 제2 코어(1020) 및 제3 코어(1030)는 TCP 절차가 수행된 패킷을 넘버링된 패킷의 순서에 맞게 백업 수신 큐(1041)에 이동시키거나 복사할 수 있다.
실시예에 따라, 제2 코어(1020)이 TCP 절차를 수행하는 동안, 제3 코어(1030)은 IP 절차를 수행할 수 있다. 반대로, 제2 코어(1020)이 IP 절차를 수행하는 동안, 제3 코어(1030)은 TCP 절차를 수행할 수 있다.
예를 들어, 제2 코어(1020)에서 TCP 패킷 3에 대해 TCP 절차를 수행할 때, 동시에 제3 코어(1030)은 패킷 4에 대해 TCP 절차를 수행할 수 없다. TCP 패킷의 경우, 패킷 사이의 순서를 갖기 때문이다(이와 관련하여, 도 11c에서 상세하게 설명한다). 이때, 제3 코어(1030)는 패킷 3에 대한 TCP 절차가 완료되기 전까지 IP 절차를 수행할 수 있다.
제1 코어(1010)가 TCP 절차를 수행하는 동안, 제2 코어(1020)는 IP 절차를 수행할 수 있다. 예를 들어, 제1 코어(1010)가 패킷3에 대한 TCP 절차를 수행하는 동안, 제2 코어(1020)는 패킷6에 대한 IP 절차를 수행하고, IP 절차가 수행된 패킷6을 TCP 백로그큐(1033)로 이동시킬 수 있다.
반대로, 제1 코어(1010)가 IP 절차를 수행하는 동안, 제2 코어(1020)는 TC0P 절차를 수행할 수 있다. 제2 코어(1020)가 패킷4에 대해 TCP 절차를 수행하는 동안, 제1 코어(1010)은 패킷5에 대해 IP 절차를 수행하고, IP 절차가 수행된 패킷을 TCP 백로그큐(1023)로 이동시킬 수 있다.
실시예에 따라, 제1 코어(1010)가 TCP 절차를 수행하고, 제2 코어(1020)가 IP 절차를 수행하는 시간 동안, 프로세서 코어는 TCP 수신 버퍼(1015)에 위치하는 TCP 절차가 수행된 패킷을 유저 버퍼(1016)로 이동시킬 수 있다.
제2 코어(1020) 및 제3 코어(1030)는 TCP 백로그큐(1023, 1033)에서 TCP 절차가 수행된 패킷을 백업 수신 큐(1041)에 이동시키거나 복사할 때, TCP 백로그큐(1023, 1033)에서 소켓 락 절차가 수행되며, 프로세서 코어는 TCP 수신 버퍼(1015)에서 사용자 버퍼(1016)로 TCP 절차가 수행된 패킷을 복사할 수 있다(S1030).
제2 코어(1020) 및 제3 코어(1030)가 TCP 절차 또는 IP 절차를 수행하고 입력 패킷 큐(1021, 1031)에 저장된 패킷을 TCP 백로그큐(1023, 1033)에 이동시키거나 복사할 때, 프로세서 코어는 TCP 수신 버퍼(1015)에 위치한 패킷을 유저 버퍼(1016)로 복사할 수 있다(S1040). 이에 따라, TCP 수신 버퍼(1015)가 비워지면, TCP 절차가 수행된 패킷을 백업 수신 큐(1041)에서 TCP 수신 버퍼(1015)로 이동시키거나 복사(queue swapping)할 수 있다.
실시예에 따라, 프로세서 코어는 패킷의 순서를 고려하여 TCP 수신 버퍼(1015)에 이동시키거나 복사할 수 있다.
도 11a 내지 도 11c은 상기한 패킷 분산 과정(S840)를 추가 설명하기 위한 것으로, 장치가 FS 적용 플로우의 패킷들에 대해 2개의 코어들(Core 1, Core 2)을 지정하여 FS 처리를 수행하는 경우를 예시적으로 도시한다.
도 11a 내지 도 11c의 예시에서, 상기 장치는 어플리케이션 계층 아래에 전송 계층 및 네트워크 계층(User - Kernel - NIC)을 포함하는 계층 구조를 가진다. 각 사각박스는 패킷을 의미한다. 박스 내 번호는 패킷 도착 순서를 의미한다. Core 1, Core 2를 FS 처리용 코어로 설정했을 경우, 네트워크 인터페이스 카드(Network Interface Card, NIC)에 순차적으로 도달한 한 플로우의 패킷들#1~#10은 커널 단에서 각 코어(Core 1, Core 2)의 백로그 큐(Backlog Queue)에 도시된 바와 같이 인터리빙(Interleaving) 방식으로 추가된다. 각 코어(Core 1, Core 2)는 추가된 순서대로 패킷들을 처리한다.
도 11a를 참조하면, 네트워크 계층을 통해 수신된 패킷들#1~#10은 전송 계층 프로세싱에서 복수의 코어들에 인터리빙 방식으로 분배되어 처리될 수 있다. 하나의 데이터 스트림으로부터 분할된 패킷들#1~#10은 한 플로우를 통해 순차적으로 수신(S1120)되어 선택된 코어들(Core 1, Core 2)에 번갈아 할당된다(S1140). 선택된 코어들(Core 1, Core 2)은 병렬적으로 동작(S1140)하여 입력받은 패킷들을 순차적으로 처리해 상기 패킷들이 어플리케이션 계층에서 하나의 데이터 스트림으로 재조립(S1160)될 수 있도록 한다.
예를 들어, N개의 코어들이 FS 처리용 코어로 지정된 경우 장치는 FS가 적용된 플로우를 통해 전송된 패킷들을 순차적 어드레스에 따라 순차적으로 N개의 코어들에 분할 할당하고, i번째 패킷이 i mod N 코어에 할당되도록 한다. 그럼으로써, 수신된 패킷들이 하나의 데이터 스트림으로 조립될 때, N개의 코어들 전체가 병행 동작하여 N배의 속도가 얻어질 수 있다.
이와 같은 패킷 처리는 FS 처리용 코어들 간의 처리 계층에 따라 도 11b 및 도 11c와 같이 2가지 경우로 나누어 적용될 수 있다.
FS 처리용 코어들(Core 1, Core 2)이 네트워크 계층(IP 계층)만 처리할 경우, 도 11b에 도시된 바와 같이, 패킷 처리 타이밍만 조절되고(Core 1, Core 2가 번갈아 네트워크 계층 프로세싱), 상기 코어들이 한 플로우로부터 수신된 패킷들을 동시 처리하여 전송 계층(예컨대, TCP나 UDP)으로 전달할 수 있다. 이러한 패킷 동시 처리에 의해, FS 처리를 위한 복수의 코어들 전체가 병렬적으로(병행) 동작하여 FS 처리되는 플로우의 트래픽 처리 속도가 크게 향상될 수 있다.
또한, 도 11c에 도시된 바와 같이, FS 처리용 코어들(Core 1, Core 2)이 전송 계층 처리도 할 경우에는, 전송 계층의 상태에 기반한 순차적 처리 특성으로 인해 상기 코어들(Core 1, Core 2)이 동시에 TCP 절차를 수행하는 것이 불가능하다(Core 1, Core 2가 번갈아 전송 계층 프로세싱).
한편, 하나의 플로우에 포함된 복수의 패킷(예를 들어, TCP 패킷)은 패킷의 순서에 따라 디캡슐화될 필요가 있다. 플로우에 포함된 복수의 패킷은 순서를 가질 수 있고, 순서대로 디캡슐화될 필요가 있다. 도 11c에 도시된 바와 같이, 넘버링된 TCP 패킷들(#1 내지 #4)은 낮은 숫자를 우선순위로 하는 순서를 가질 수 있다. 예를 들어, 멀티코어 시스템이 동영상 패킷들(또는 음성 패킷 또는 텍스트 패킷)을 수신한 경우, 출력되는 영상의 순서가 중요하기 때문에 동영상 서비스는 동영상 패킷들 간의 순서가 중요할 수 있다.
따라서, 한 코어(예컨대 Core 1)가 전송 계층 처리를 하는 동안 다른 코어(예컨대 Core 2)는 다음 패킷의 네트워크 계층까지 처리하여 전송 계층으로 전달할 수 있다. 예를 들어, 한 코어(예컨대 Core 1)가 TCP 패킷 #1에 대해 TCP 절차를 완료하기 전에 다른 한 코어(예컨대 Core 2)는 TCP 패킷 #2에 대한 TCP 절차를 수행할 수 없다.
한 코어(예컨대 Core 1)가 TCP 패킷 #1에 대해 TCP 절차를 수행하는 동안, 다른 한 코어(예컨대 Core 2)는 IP 패킷 #2에 대한 IP 절차를 진행할 수 있고, 이를 통해 네트워크 계층 및 전송 계층 간 동시 처리 효과를 얻을 수 있다.
도 12 및 도 13는 본 개시의 실시예에서 코어들 간 타이밍 불일치 및 비순차(Out-of-order) 처리를 해결하는 방법을 설명하기 위한 도면이다.
상기한 도 11a 내지 도 11c의 예시에서, 장치는 Core 1의 직전 패킷 처리가 시작되었을 경우에만 Core 2의 각 패킷 처리가 시작될 수 있도록 함으로써, 패킷 처리 순서가 뒤바뀌는 것을 방지할 수 있다.
예컨대, 도 12에 도시된 바와 같이, Core 2의 패킷#2에 대한 처리는 Core 1의 패킷#1 처리가 시작되었을 경우에만 시작될 수 있고, Core 1의 패킷#3 처리는 Core 2의 패킷#2 처리가 시작되었을 경우에만 시작될 수 있다.
도 12는 FS 처리에 의해 패킷들이 인터리빙 방식으로 두 코어들의 백로그 큐에 분배되었을 때, 두 코어들의 패킷 처리 시작 시간이 차이가 날 경우(코어들 간 타이밍 불일치 시)를 보여준다. 이 경우 앞서 설명한 방식으로 동작하면 Core 1이 패킷#1을 처리한 후, Core 2가 패킷 처리를 시작하기까지 기다렸다가 패킷#3을 처리하면 되므로, 비순차적 패킷 처리 문제를 해결할 수 있다.
그러나 이 경우, 처리 시작 시간의 차이만큼 먼저 시작한 코어가 처리 중 대기(Busy wating)을 해야 해서 코어 자원 사용 효율성이 낮아질 수 있다.
도 13는 인터리빙 방식으로 패킷을 처리하는 중에 Core 1의 특정 패킷(도 13의 예시에서는, 패킷#5) 처리 시간이 상대적으로 매우 길어져서 패킷#5와 패킷#6 간에 비순차 처리 문제가 발생하는 경우를 보여준다.
이 경우, 장치는 추가적인 비순차 처리를 방지하기 위하여 패킷#7 처리 시작 후 패킷#8 처리를 시작하기 전에 정해진 보호 시간(Guard time, GT2)만큼 추가로 기다렸다가 패킷#8을 처리할 수 있다.
Core 1의 패킷과 Core 2의 패킷 간 순서가 뒤바뀌는(Out-of-order) 확률을 감소시키기 위하여, Core 2의 패킷 처리 시작 시간과 관련하여, 장치는 Core 1의 패킷 처리가 시작된 후 일정 보호 시간(GT1)만큼 더 기다렸다가 Core 2의 패킷 처리가 시작되도록 할 수 있다.
보호 시간(GT1, GT2)은 평균 패킷 처리 시간보다 짧은 시간으로 설정한다. 예를 들어, 평균 패킷 처리 시간이 10㎲이고, 보호 시간이 3㎲로 설정된 경우, 0sec에서 Core 1의 패킷#1 처리를 시작하면 Core 2의 패킷#2 처리 시작 시간은 최소 3㎲이 된다. 기본적으로, 보호 시간은 Core 2에서의 패킷 처리 시작 시 첫번째 패킷에만 적용된다(GT1). 후속 패킷들은 첫번째 패킷 이후 일정 간격으로(예컨대, 평균 패킷 처리 시간마다) 처리되기 때문이다. 이후, 특정 패킷(예컨대, 패킷#5)의 처리 시간이 일정 시간 이상 길어지는 경우에는 다시 보호 시간(GT2)이 적용될 수 있다.
한편, 두 코어들의 패킷 처리 이외의 작업량 차이가 클 경우 도 12 및 도 13에서 설명한 코어들 간 타이밍 불일치 및 비순차 처리 문제의 발생 빈도가 더 높아질 수 있다.
이에 따라, 본 개시의 실시예에서, 장치는 FS 처리용 코어에 FS 적용 플로우의 패킷 처리 외의 다른 작업이 추가되는 것을 방지할 수 있다. 예를 들어, 장치는 필요한 경우, FS 처리용 코어에 할당되어 있던 다른 일반 플로우를 FS 처리용이 아닌 다른 코어에서 처리하도록 설정을 변경할 수 있다. 또한, 장치는 필요한 경우, FS 처리용 코어가 FS 적용 플로우의 패킷 처리 외 다른 프로세싱은 하지 못하도록 설정할 수 있다.
도 14a 및 도 14b는 본 개시의 실시예에 따른 효과를 예시한 도면이다.
도 14a는 4개의 코어를 갖는 모바일 단말에서 하나의 대용량 데이터 플로우 발생 시 코어별 사용률에 대해, 기존의 인용예(S1400)와 본 개시의 실시예(S1420)를 비교한 그래프이다. 도시된 바와 같이, 인용예(S1400)에서는 하나의 대용량 데이터 플로우를 분산 처리하지 못하여 Core 2에 패킷 처리 부하가 집중됨을 알 수 있다. 반면, 실시예(S1420)에서는 Core 2에 집중된 패킷 처리 부하가 Core 3, Core 4로 분산되어 처리됨을 볼 수 있다.
도 14a의 예시에서, Core 1은 네트워크 계층으로부터 패킷들을 수신하여 다른 코어로 패킷 처리를 분배하는 역할 및 전송 계층 ACK(예컨대, TCP ACK)를 네트워크 계층으로 전달하는 역할을 하기 때문에 트래픽 처리 속도가 증가할수록 사용률이 증가한다. 그리고, Core 2의 패킷들을 Core 3, Core 4로 분산한 후에도 Core 2에서 어플리케이션 계층의 패킷 처리가 함께 수행되고 있기 때문에, Core 2의 사용률은 높은 수준으로 유지된다.
이와 같이, 복수 개의 FS 처리용 코어들(Core 2, Core 3, Core 4)이 병렬적으로 동작하여 특정 코어(Core 2)에 집중된 한 플로우로부터 패킷들을 분배 받아 동시 처리한다. 더불어, FS 처리용 코어들(Core 2, Core 3, Core 4) 간에 처리 계층에 따른 패킷 동시 처리가 이루어짐으로 인해, 트래픽 처리 속도가 최대화될 수 있다.
도 14b는 한 플로우에 대해 기존의 인용예(S1440)와 본 개시의 실시예(S1460) 각각의 데이터량(Throughput, 데이터 수신 속도)를 보여주는 그래프이다. 데이터 수신 속도 비교를 위해, WiFi 접속 단말에서 1GHz CPU core 4개를 사용하여 Iperf 어플리케이션을 통한 TCP 데이터 수신 속도를 측정하였다. 측정 결과, 동일 조건에서 한 플로우의 패킷들을 분산하여 지정된 코어들을 통해 동시 처리하는 본 개시의 실시예(S1460)를 적용할 경우 한 플로우의 패킷들을 모두 한 코어에서 처리하는 인용예(S1440)에 비해 약 50%의 데이터 수신 속도 증가를 얻을 수 있었다.
도 15은 본 개시의 실시예에 따른 멀티코어 기반 데이터 처리 장치 구성을 예시한 도면이다. 본 실시예에 따른 장치는 수신 장치이며, 송신 장치 - 수신 장치 간 네트워크 계층(IP)이 데이터 통신을 위한 하나 이상의 플로우를 통해 서로 연결된다.
기본 동작에서, 수신 장치는 송신 장치와 연결된 플로우로부터 네트워크 드라이버(1510)를 통해 데이터 패킷들을 수신한다. 수신 패킷 프로세싱 엔진(Received Packet Processing Engine)(1520)은 장치 내에 탑재된 복수 개의 전체 코어들 중, 네트워크 드라이버(1510)를 통해 수신되는 패킷을 처리할 코어를 지정한다. 이후, 지정된 코어 상의 패킷 프로세싱 스택(Packet Processing Stack)(1530)에서, 패킷의 네트워크 계층(IP), 전송 계층(TCP, UDP 등) 프로세싱을 하여 어플리케이션(1540)으로 전달한다. 이때, 패킷들은 한 번에 하나의 코어에서 순차적으로 처리된다.
플로우 제어부(1550)는 한 플로우의 패킷 분산 조건이 충족되는지 판단하고, 패킷 분산 조건이 충족된 경우, 복수의 코어들 중 상기 플로우의 패킷을 분산할 FS 처리용 코어들을 선택한다.
이를 위해, 플로우 제어부(1550)는 코어 모니터링부(1570) 및/또는 플로우 모니터링부(1580)로부터 과부하 코어 정보 및/또는 현재 최고 속도 플로우에 대한 정보를 수신한다. 이들 정보 중 적어도 하나가 정해진 임계값을 초과하고, 추가적인 FS 적용 조건을 만족하는 경우, 플로우 제어부(1550)는 FS 적용 플로우 및 상기 플로우의 FS 처리를 위한 복수 개의 코어들을 선택하고, 이러한 플로우 정보 및 코어 정보를 포함하는 FS 테이블을 생성하여 플로우 DB(Database)(1560)로 저장한다. 수신 패킷 프로세싱 엔진(1520)은 플로우 제어부(1550)를 통해 플로우 DB(1560) 및 플로우 DB(1560) 내 FS 테이블에 접근할 수 있다.
플로우 DB(1560)는 플로우 제어부(1550)를 통해 생성된 FS 테이블을 저장한다. 또한, 플로우 DB(1560)는 각 플로우의 데이터량, 플로우 지속 시간, FS 적용 이력(플로우별 패킷 분산 이력)에 대한 컨텍스트(화면 온/오프, 이동성, 위치, 네트워크 연결, 사용 어플리케이션 등)와 같은 정보를 저장할 수 있다. 이후 기 저장된 컨텍스트 재 발생 시, 수신 패킷 프로세싱 엔진(1520)은 플로우 DB(1560)로부터 이를 감지하여 상기 컨텍스트 내 플로우에 대해 FS를 적용할 수 있다.
코어 모니터링부(1570)는 각 코어별 패킷 처리 부하를 모니터링하여 특정 코어의 패킷 처리율이나 사용률이 일정 임계값 이상인 경우 이벤트를 발생시켜 상기 코어 정보나 사용률 또는 전체 코어들의 개별 사용률 정보를 플로우 제어부(1550)에 전달한다.
플로우 모니터링부(1580)는 코어 모니터링부(1570)에서의 이벤트 발생 시, 예컨대 특정 CPU 코어의 패킷 처리율 또는 사용률이 일정 임계값을 초과하거나, 주기적으로, 또는 새로운 플로우 생성 시, 사용 중인 각 플로우별로 일정 시간 동안 수신 데이터량을 계산하고 수신 데이터량이 최대인 순서로 하나 또는 두 개의 플로우 정보를 플로우 제어부(1550)에 전달한다.
수신 패킷 프로세싱 엔진(1520)은 기본적으로 플로우 단위로 코어를 할당하여 한 플로우를 통해 수신된 패킷들이 하나의 코어에서 처리되도록 한다. 또한, 플로우 DB(1560) 내 FS 테이블에 기반하여 FS 적용 플로우를 식별하고, 상기 FS 적용 플로우를 통해 수신된 패킷들을 필터링하며, 상기 패킷들을 그 플로우에 대해 지정된 복수 개의 코어들로 분배한다. 패킷 프로세싱 스택(1530) 내에는 코어들의 백로그 큐들이 위치하며, 수신 패킷 프로세싱 엔진(1520)을 통해 분배된 패킷들은 지정된 코어들 각각의 백로그 큐로 전달되어 처리된다.
상술한 본 개시의 특정 측면들은 또한 컴퓨터 리드 가능 기록 매체(computer readable recording medium)에서 컴퓨터 리드 가능 코드(computer readable code)로서 구현될 수 있다. 컴퓨터 리드 가능 기록 매체는 컴퓨터 시스템에 의하여 리드될 수 있는 데이터를 저장할 수 있는 임의의 데이터 저장 디바이스이다. 상기 컴퓨터 리드 가능 기록 매체의 예들은 리드 온니 메모리(Read-Only Memory: ROM)와, 랜덤-접속 메모리(Random-Access Memory: RAM)와, CD-ROM들과, 마그네틱 테이프(magnetic tape)들과, 플로피 디스크(floppy disk)들과, 광 데이터 저장 디바이스들, 및 캐리어 웨이브(carrier wave)들(상기 인터넷을 통한 데이터 송신과 같은)을 포함할 수 있다. 상기 컴퓨터 리드 가능 기록 매체는 또한 네트워크 연결된 컴퓨터 시스템들을 통하여 분산될 수 있고, 따라서 상기 컴퓨터 리드 가능 코드는 분산 방식으로 저장 및 실행된다. 또한, 본 개시를 성취하기 위한 기능적 프로그램들, 코드, 및 코드 세그먼트(segment)들은 본 개시가 적용되는 분야에서 숙련된 프로그래머들에 의하여 쉽게 해석될 수 있다.
또한 본 개시의 일 실시예에 따른 장치 및 방법은 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합의 형태로 실현 가능하다는 것을 알 수 있을 것이다. 이러한 임의의 소프트웨어는 예를 들어, 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 본 개시의 일 실시예에 따른 방법은 제어부 및 메모리를 포함하는 컴퓨터 또는 휴대 단말에 의하여 구현될 수 있고, 상기 메모리는 본 개시의 실시예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다.
따라서, 본 개시는 본 명세서의 임의의 청구항에 기재된 장치 또는 방법을 구현하기 위한 코드를 포함하는 프로그램 및 이러한 프로그램을 저장하는 기계(컴퓨터 등)로 읽을 수 있는 저장 매체를 포함한다. 또한, 이러한 프로그램은 유선 또는 무선 연결을 통하여 전달되는 통신 신호와 같은 임의의 매체를 통하여 전자적으로 이송될 수 있고, 본 개시는 이와 균등한 것을 적절하게 포함한다
또한 본 개시의 일 실시예에 따른 장치는 유선 또는 무선으로 연결되는 프로그램 제공 장치로부터 상기 프로그램을 수신하여 저장할 수 있다. 상기 프로그램 제공 장치는 상기 프로그램 처리 장치가 기 설정된 컨텐츠 보호 방법을 수행하도록 하는 지시들을 포함하는 프로그램, 컨텐츠 보호 방법에 필요한 정보 등을 저장하기 위한 메모리와, 상기 그래픽 처리 장치와의 유선 또는 무선 통신을 수행하기 위한 통신부와, 상기 그래픽 처리 장치의 요청 또는 자동으로 해당 프로그램을 상기 송수신 장치로 송신하는 제어부를 포함할 수 있다.
본 개시의 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 과정들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 과정들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다. 또한 실시예에서 '~부'는 하나 이상의 프로세서를 포함할 수 있다.
본 명세서와 도면에 개시된 본 개시의 실시예들은 본 개시의 기술 내용을 쉽게 설명하고, 본 개시의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 개시의 범위를 한정하고자 하는 것은 아니다. 또한 앞서 설명된 본 개시에 따른 실시예들은 예시적인 것에 불과하며, 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 범위의 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 다음의 특허청구범위에 의해서 정해져야 할 것이다.
또한 상기 각각의 실시 예는 필요에 따라 서로 조합되어 운용할 수 있다. 예컨대, 본 개시의 실시예들의 일부분들이 서로 조합되어 서버(또는 라우터) 및 클라이언트에서 운용될 수 있다. 또한 상기 실시예들은 LTE 시스템을 기준으로 제시되었지만, 5G 혹은 NR 시스템 등 다른 시스템에도 상기 실시예의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능할 것이다.

Claims (20)

  1. 복수의 코어들을 포함하는 단말의 데이터 처리 방법에 있어서,
    데이터 통신을 위한 하나 이상의 패킷 플로우(packet flow) 중 제1 패킷 플로우의 조건이 충족되는지 판단하는 과정;
    상기 조건이 충족된 경우, 상기 제1 패킷 플로우를 통해 수신된 패킷들을 상기 복수의 코어들 중 선택된 코어들로 분산하는 과정; 및
    상기 선택된 코어들이 병렬적으로 동작하도록 하여 상기 제1 패킷 플로우로부터 분산된 패킷들을 처리하는 과정을 포함하고,
    상기 선택된 코어들에서 처리하던 상기 제1 패킷 플로우 이외의 다른 패킷 플로우들을 통해 수신되는 패킷들은 상기 복수의 코어들 중 상기 선택된 코어들 이외의 적어도 하나의 코어에서 처리되고,
    상기 제1 패킷 플로우를 통해 순차적으로 수신된 상기 패킷들은 상기 선택된 코어들에 의해 교대로 처리되고,
    상기 선택된 코어들은 제1 코어 및 제2 코어를 포함하고,
    상기 제2 코어는 상기 제1 코어가 상기 제1 패킷 플로우를 통해 순차적으로 수신된 순서에 따라 먼저 처리될 제1 패킷의 처리를 시작한 후 기 설정된 보호 시간만큼 대기한 후에 수신된 순서에 따라 제1 패킷의 다음 순서로 처리될 제2 패킷의 처리를 시작하도록 구성되고, 및
    상기 보호 시간은 상기 제2 코어의 평균 패킷 처리 시간 미만으로 설정되는 데이터 처리 방법.
  2. 제1항에 있어서,
    상기 선택된 코어들이 병렬적으로 동작하도록 하여 상기 제1 패킷 플로우로부터 분산된 패킷들을 처리하는 과정은, 상기 제1 코어 및 상기 제2 코어 각각으로 분산된 패킷을 IP(internet protocol) 헤더를 제거하는 네트워크 계층 처리를 동시에 수행하는 과정을 포함하는 데이터 처리 방법.
  3. 제1항에 있어서,
    상기 제1 코어 및 상기 제2 코어는 네트워크 계층 처리 및 TCP(transmission control protocol) 헤더를 제거하는 전송 계층 처리를 함께 수행하도록 구성되고,
    상기 제1 코어가 제3 패킷을 전송 계층 처리를 수행하는 동안 상기 제2 코어는 상기 제3 패킷의 다음 순서로 수신된 패킷을 네트워크 계층 처리하는 데이터 처리 방법.
  4. 제1항에 있어서,
    상기 조건의 충족 여부는,
    상기 제1 패킷 플로우의 데이터 수신 속도, 상기 제1 패킷 플로우를 통해 수신된 패킷들의 분산 이력에 대한 컨텍스트 정보, 상기 제1 패킷 플로우를 통해 수신된 패킷들이 분산된 코어의 패킷 처리율, 및 상기 코어의 사용률 중 하나 이상을 기반으로 판단되며,
    상기 제1 패킷 플로우의 조건이 충족되는지 판단하는 과정은,
    주기적으로, 또는 상기 복수의 코어들 중 사용률이 임계값 이상인 코어가 발생하는 경우, 또는 새로운 패킷 플로우가 생성되는 경우에 판단하는 과정을 포함하는 데이터 처리 방법.
  5. 제1항에 있어서,
    상기 복수의 코어들 중 상기 제1 패킷 플로우를 통해 수신된 패킷들을 분산할 코어들은,
    패킷 처리율 또는 사용률을 기반으로 선택되는 데이터 처리 방법.
  6. 제1항에 있어서,
    상기 제1 패킷 플로우로부터 분산된 패킷들을 처리하는 과정은,
    상기 제1 패킷 플로우에 포함되는 TCP(transmission control protocol) 헤더 및 IP(internet protocol) 헤더를 포함하는 복수의 패킷들 중 상기 제1 패킷에 대해 상기 제1 코어에 의해 전송 계층 처리를 수행하는 과정; 및
    상기 제1 코어가 전송 계층 처리를 수행하는 동안, 상기 제2 코어에 의해 상기 제2 패킷에 대해 네트워크 계층 처리를 수행하는 과정을 더 포함하는 데이터 처리 방법.
  7. 제6항에 있어서,
    상기 제1 코어에 의해 전송 계층 처리가 수행된 상기 제1 패킷을 제3 코어에 의해 어플리케이션 계층에 포함되는 버퍼로 이동시키는 과정; 및
    상기 전송 계층 처리가 수행된 상기 제1 패킷을 상기 제3 코어가 상기 버퍼로 이동시키는 동안, 상기 제1 패킷의 다음 순서로 상기 제1 코어에서 처리되는 패킷인 제3 패킷의 전송 계층 처리를 중단하는 과정을 더 포함하는 데이터 처리 방법.
  8. 복수의 코어들을 포함하는 단말에 있어서,
    데이터 통신을 위한 하나 이상의 패킷 플로우(packet flow) 중 제1 패킷 플로우를 통해 패킷들을 수신하는 송수신부; 및
    상기 제1 패킷 플로우의 조건이 충족되는지 판단하고, 상기 조건이 충족된 경우, 상기 송수신부로 상기 제1 패킷 플로우를 통해 수신된 패킷들을 상기 복수의 코어들 중 선택된 코어들로 분산하고, 상기 선택된 코어들이 병렬적으로 동작하도록 하여 상기 제1 패킷 플로우로부터 분산된 패킷들을 처리하도록 구성되는 제어부를 포함하고,
    상기 선택된 코어들에서 처리하던 상기 제1 패킷 플로우 이외의 다른 패킷 플로우들을 통해 수신되는 패킷들은 상기 복수의 코어들 중 상기 선택된 코어들 이외의 적어도 하나의 코어에서 처리되고,
    상기 제1 패킷 플로우를 통해 순차적으로 수신된 상기 패킷들은 상기 선택된 코어들에 의해 교대로 처리되고,
    상기 선택된 코어들은 제1 코어 및 제2 코어를 포함하고,
    상기 제2 코어는 상기 제1 코어가 상기 제1 패킷 플로우를 통해 순차적으로 수신된 순서에 따라 먼저 처리될 제1 패킷의 처리를 시작한 후 기 설정된 보호 시간만큼 대기한 후에 다음 순서로 처리될 제2 패킷의 처리를 시작하도록 구성되고, 및
    상기 보호 시간은 상기 제2 코어의 평균 패킷 처리 시간 미만으로 설정되는 단말.
  9. 제8항에 있어서,
    상기 제어부는
    상기 제1 코어 및 상기 제2 코어 각각으로 분산된 패킷을 IP(internet protocol) 헤더를 제거하는 네트워크 계층 처리를 동시에 수행하도록 구성되는 단말.
  10. 제8항에 있어서,
    상기 제1 코어 및 상기 제2 코어는 네트워크 계층 처리 및 TCP(transmission control protocol) 헤더를 제거하는 전송 계층 처리를 함께 수행하도록 구성되고, 상기 제1 코어가 제3 패킷을 전송 계층 프로세싱 처리를 수행하는 동안 상기 제2 코어는 상기 제3 패킷의 다음 순서로 수신된 패킷을 네트워크 계층 처리를 수행하는 단말.
  11. 제8항에 있어서, 상기 조건의 충족 여부는,
    상기 제1 패킷 플로우의 데이터 수신 속도, 상기 제1 패킷 플로우를 통해 수신된 패킷들의 분산 이력에 대한 컨텍스트 정보, 상기 제1 패킷 플로우를 통해 수신된 패킷들이 분산된 코어의 패킷 처리율, 및 상기 코어의 사용률 중 하나 이상을 기반으로 판단되는 단말.
  12. 제8항에 있어서,
    상기 복수의 코어들 중 상기 제1 패킷 플로우를 통해 수신된 패킷들을 분산할 코어들은,
    패킷 처리율 또는 사용률을 기반으로 선택되는 단말.
  13. 복수의 코어를 포함하는 단말의 데이터 처리 방법에 있어서,
    상기 단말에서 수행되는 어플리케이션(application)을 감지하는 과정;
    상기 감지된 어플리케이션에 관한 패킷 플로우 정보를 식별하는 과정; 및
    상기 패킷 플로우 정보에 기반하여 상기 감지된 어플리케이션을 통해 생성되는 패킷들을 제1 코어(core) 및 제2 코어로 분산하여 처리하는 과정을 포함하고,
    상기 감지된 어플리케이션 이외의 적어도 하나의 어플리케이션을 통하여 생성된 패킷 플로우는 상기 제1 코어 및 상기 제2 코어를 제외한 적어도 하나의 제3 코어에서 처리되고,
    상기 제2 코어는 상기 제1 코어가 상기 감지된 어플리케이션을 통해 생성되는 패킷들 중 순서에 따라 먼저 처리될 제1 패킷의 처리를 시작한 후 기 설정된 보호 시간만큼 대기한 후에 순서에 따라 제1 패킷의 다음으로 처리될 제2 패킷의 처리를 시작하도록 구성되고, 및
    상기 보호 시간은 상기 제2 코어의 평균 패킷 처리 시간 미만으로 설정되는 데이터 처리 방법.
  14. 제13항에 있어서,
    상기 패킷 플로우 정보는 아이피 어드레스(IP-address) 정보, 포트(port) 정보, 프로토콜(protocol) 정보 또는 해시(hash) 정보 중 적어도 하나를 포함하는 데이터 처리 방법.
  15. 제13항에 있어서,
    상기 제1 코어 및 상기 제2 코어로 상기 감지된 어플리케이션을 통해 생성되는 패킷들을 분산하여 처리하는 과정은,
    상기 감지된 어플리케이션이 기 설정된 어플리케이션 그룹에 속하는지 여부를 결정하는 과정; 및
    상기 감지된 어플리케이션이 상기 기 설정된 어플리케이션 그룹에 속하는 경우, 기 설정된 상기 제1 코어 및 상기 제2 코어를 상기 감지된 어플리케이션을 통해 생성되는 패킷들을 처리하는 코어로서 결정하는 과정을 포함하는 데이터 처리 방법.
  16. 복수의 코어를 가지는 단말에 있어서,
    패킷을 처리하는 제1 코어(core) 및 제2 코어를 포함하는 복수개의 코어; 및
    상기 단말에서 실행되는 어플리케이션(application)을 감지하고, 상기 감지된 어플리케이션의 패킷 플로우 정보를 식별하며, 상기 패킷 플로우 정보에 기반하여 상기 감지된 어플리케이션을 통해 생성되는 패킷들을 상기 제1 코어 및 상기 제2 코어로 분산하여 처리하는 제어부를 포함하고,
    상기 감지된 어플리케이션 이외의 적어도 하나의 어플리케이션을 통하여 생성된 패킷 플로우는 상기 제1 코어 및 상기 제2 코어를 제외한 적어도 하나의 제3 코어에서 처리되고,
    상기 제2 코어는 상기 제1 코어가 상기 감지된 어플리케이션을 통해 생성되는 패킷들 중 순서에 따라 먼저 처리될 제1 패킷 처리를 시작한 후 기 설정된 보호 시간만큼 대기한 후에 순서에 따라 제1 패킷의 다음으로 처리될 제2 패킷의 처리를 시작하도록 구성되고, 및
    상기 보호 시간은 상기 제2 코어의 평균 패킷 처리 시간 미만으로 설정되는, 단말.
  17. 제16항에 있어서,
    상기 패킷 플로우 정보는 아이피 어드레스(IP-address) 정보, 포트(port) 정보, 프로토콜(protocol) 정보 또는 해시(hash) 정보 중 적어도 하나를 포함하는 단말.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020180056707A 2017-05-17 2018-05-17 멀티코어 기반 데이터 처리 방법 및 장치 KR102478233B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20170061214 2017-05-17
KR1020170061214 2017-05-17
KR1020170061263 2017-05-17
KR20170061263 2017-05-17

Publications (2)

Publication Number Publication Date
KR20180126401A KR20180126401A (ko) 2018-11-27
KR102478233B1 true KR102478233B1 (ko) 2022-12-19

Family

ID=62528229

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180056707A KR102478233B1 (ko) 2017-05-17 2018-05-17 멀티코어 기반 데이터 처리 방법 및 장치

Country Status (3)

Country Link
US (1) US10802885B2 (ko)
EP (1) EP3404533B1 (ko)
KR (1) KR102478233B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929253B2 (en) * 2018-09-28 2021-02-23 Intel Corporation Systems and methods for safety analysis including consideration of dependent failures
US11061728B2 (en) * 2019-02-12 2021-07-13 Western Digital Technologies, Inc. Systems and methods for heterogeneous address space allocation
KR20200112439A (ko) * 2019-03-22 2020-10-05 삼성전자주식회사 멀티 코어를 포함하는 전자 장치 및 이의 패킷 처리를 위한 방법
US20220286399A1 (en) * 2019-09-11 2022-09-08 Intel Corporation Hardware queue scheduling for multi-core computing environments
CN112396474A (zh) * 2020-12-23 2021-02-23 上海苍苔信息技术有限公司 一种根据广告主预算分配流量的系统和方法
KR20220098586A (ko) * 2021-01-04 2022-07-12 삼성전자주식회사 사용자 평면 기능에서의 벡터 기반 패킷 처리 방법 및 장치
KR20220134899A (ko) * 2021-03-29 2022-10-06 삼성전자주식회사 전자 장치 및 전자 장치에서 수신된 데이터 패킷을 처리하는 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7990974B1 (en) * 2008-09-29 2011-08-02 Sonicwall, Inc. Packet processing on a multi-core processor
US8798034B2 (en) * 2009-03-31 2014-08-05 Motorola Solutions, Inc. System and method for selecting a route based on link metrics incorporating channel bandwidth, spatial streams and/or guard interval in a multiple-input multiple-output (MIMO) network
KR101594112B1 (ko) 2009-12-10 2016-02-26 한국전자통신연구원 플로우 기반의 네트워크 환경에서의 패킷 스케줄링 장치 및 방법
US9888042B2 (en) * 2013-05-21 2018-02-06 Citrix Systems, Inc. Systems and methods for multipath transmission control protocol connection management
TWI602125B (zh) 2014-04-17 2017-10-11 國立臺灣大學 資源分配方法
US20180285151A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Dynamic load balancing in network interface cards for optimal system level performance

Also Published As

Publication number Publication date
US20180336067A1 (en) 2018-11-22
EP3404533A1 (en) 2018-11-21
KR20180126401A (ko) 2018-11-27
US10802885B2 (en) 2020-10-13
EP3404533B1 (en) 2021-05-05

Similar Documents

Publication Publication Date Title
KR102478233B1 (ko) 멀티코어 기반 데이터 처리 방법 및 장치
CN109845218B (zh) 用于与客户机-服务器数据信道一起使用的信道数据封装系统和方法
US11223976B2 (en) Multiple-slice application delivery based on network slice associations
CN113760452B (zh) 一种容器调度方法、系统、设备及存储介质
US20140379928A1 (en) Method for implementing network using distributed virtual switch, apparatus for performing the same, and network system based on distributed virtual switch
US11902108B2 (en) Dynamic adaptive network
KR102083273B1 (ko) 클라우드 무선 액세스 네트워크의 동적 구성을 위한 방법 및 장치
JP2017534222A (ja) クラウドベースのアクセスネットワーク
CN1946061B (zh) 一种快速处理报文的方法及装置
US9686123B2 (en) System for media distribution and rendering on spatially extended wireless networks
US11689968B2 (en) Method and apparatus for executing virtualized network function
WO2021210666A1 (ja) ユーザデータ処理装置、ネットワークインタフェース、方法、及びコンピュータ可読媒体
EP3503484A1 (en) Message transmission method, device and network system
US9693260B2 (en) Data transmission system and method
US10547510B2 (en) Assigning network devices
CN114827781B (zh) 网络协同方法、装置、设备及存储介质
CN112020101B (zh) 用于执行无线电接入网络功能的方法和设备
US20210092050A1 (en) Enhanced dynamic encryption packet segmentation
KR20220079191A (ko) 무선 접속 네트워크 기능을 수행하는 방법 및 장치
WO2023079354A1 (en) Analytics generation in a communication network
US10020979B1 (en) Allocating resources in multi-core computing environments
JP2013034199A (ja) 通信ネットワークを通じてデータパケットを送信するためにデータパケットに時間−周波数資源を割り当てるための方法及びデバイス、このような方法を実行するためのコンピュータプログラム、並びにこのようなコンピュータプログラムを格納するための情報格納手段
KR20220064806A (ko) 소프트웨어 패키지에 gpu를 할당하는 방법 및 장치
KR101787448B1 (ko) 단일 데이터 센터 클라우드 컴퓨팅 환경에서의 확률적 가상 네트워크 요청 방법, 이를 이용한 요청 수신 장치, 이를 이용한 자원 할당 방법, 자원 할당 장치, 이를 수행하는 프로그램 및 기록매체
KR101357907B1 (ko) 오버레이 된 2 계층 협력 네트워크에서의 통신 방식

Legal Events

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