KR101773593B1 - 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법 - Google Patents

멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법 Download PDF

Info

Publication number
KR101773593B1
KR101773593B1 KR1020150189609A KR20150189609A KR101773593B1 KR 101773593 B1 KR101773593 B1 KR 101773593B1 KR 1020150189609 A KR1020150189609 A KR 1020150189609A KR 20150189609 A KR20150189609 A KR 20150189609A KR 101773593 B1 KR101773593 B1 KR 101773593B1
Authority
KR
South Korea
Prior art keywords
agent
fog
mobile
basic block
basic
Prior art date
Application number
KR1020150189609A
Other languages
English (en)
Other versions
KR20170071381A (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 KR20170071381A publication Critical patent/KR20170071381A/ko
Application granted granted Critical
Publication of KR101773593B1 publication Critical patent/KR101773593B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법이 개시된다.
이 방법에서 모바일 단말이 애플리케이션의 코드를 복수의 기본 블록으로 분할한 후 일부 기본 블록을 모바일 포그(mobile fog)로 오프로딩한다. 그 후, 상기 모바일 포그가 상기 모바일 단말로부터 오프로딩되는 기본 블록을 처리하기 위해 복수의 에이전트 중 기본 에이전트를 선택한다. 다음, 상기 기본 에이전트가 상기 오프로딩되는 기본 블록을 처리하며, 상기 복수의 에이전트는 상기 오프로딩되는 기본 블록을 처리하기 위한 위치를 관리한다.

Description

멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법{MOBILE FOG COMPUTING SYSTEM FOR PERFORMING MULTI-AGENT BASED CODE OFFLOADING AND METHOD THEREOF}
본 발명은 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법에 관한 것이다.
스마트폰과 같은 이동 단말과 이를 이용한 무선 네트워크 기술의 급속한 발전 및 보급에 따라서 기존의 클라우드 컴퓨팅과는 다른 모바일 클라우드 컴퓨팅(mobile cloud computing) 기술이 대두되었다.
모바일 클라우드 컴퓨팅이란, 필요한 만큼 사용하고 쓴 만큼 지불하는 클라우드 컴퓨팅과 모바일 서비스를 결합한 것이다. 스마트폰은 물론이고 이동성을 갖는 기기들, 즉 노트북과 넷북, PDA 등을 모두 포괄한다.
이러한 모바일 클라우드 컴퓨팅은 대규모 데이터 센터를 중심으로한 PC 기반의 클라우드 컴퓨팅과 달리, 이동 단말의 CPU 사용을 소비자들이 공유하게 하고 남는 CPU 자원을 모아 하나의 슈퍼컴퓨터를 형성할 수 있다는 점이다.
한편, 상기한 모바일 클라우드 컴퓨팅에서는 모든 데이터가 이동 단말로부터 네트워크를 통해 클라우드로 전달되어 처리되어야 하므로, 최근의 사물 인터넷(Internet of Things)과 같은 빅데이터 기반의 데이터 처리시 모바일 클라우드 컴퓨팅을 통한 처리에 문제가 발생할 수 있다는 점에 기초하여, 방대한 양의 데이터를 먼 곳에 있는 커다란 데이터 서버, 즉 클라우드로 전달하여 처리하지 않고도, 데이터 발생 지점 근처, 즉 이동 단말과 클라우드 사이의 지점인 모바일 포그(mobile fog)에서 처리할 수 있도록 하는 포그 컴퓨팅(fog computing) 기술이 제시되었다.
그러나, 이러한 포그 컴퓨팅을 수행하는 모바일 포그의 경우 단순히 모바일 단말과 클라우드 사이에서 처리 요청되는 애플리케이션의 일부를 처리하는 내용에 대해서만 제시하고 있을 뿐 보다 효과적으로 모바일 단말에서의 애플리케이션의 처리에 대한 방식에 대해서는 제시하고 있지 않다.
따라서, 모바일 포그 컴퓨팅에서 보다 비용면에서 효과적이면서 유비쿼터스적인 확장 가능한 모바일 서비스를 위한 모바일 포크 켬퓨팅 시스템 및 그 방법이 요구되고 있다.
본 발명이 이루고자 하는 기술적 과제는 자동으로 그리고 내용-감지에 기초하여 애플리케이션의 처리를 분산할 수 있는 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법을 제공한다.
본 발명의 한 특징에 따른 모바일 포그 컴퓨팅 방법은,
모바일 단말이 애플리케이션의 코드를 복수의 기본 블록으로 분할한 후 일부 기본 블록을 모바일 포그(mobile fog)로 오프로딩하는 단계; 상기 모바일 포그가 상기 모바일 단말로부터 오프로딩되는 기본 블록을 처리하기 위해 복수의 에이전트 중 기본 에이전트를 선택하는 단계; 및 상기 기본 에이전트가 상기 오프로딩되는 기본 블록을 처리하는 단계를 포함하며, 상기 복수의 에이전트는 상기 오프로딩되는 기본 블록을 처리하기 위한 위치를 관리하는 것을 특징으로 한다.
여기서, 상기 기본 블록을 처리하기 위한 위치는, 상기 모바일 단말이 접속되는 모바일 포그에 속하는 포그 노드(fog node)의 위치인 제1 위치; 상기 모바일 포그에 인접한 다른 모바일 포그의 위치인 제2 위치; 및 상기 모바일 포그가 통신 네트워크를 통해 접속되는 클라우드(cloud)의 위치인 제3 위치를 포함한다.
또한, 상기 복수의 에이전트는, 상기 제1 위치에 상기 기본 블록을 오프로딩하는 제1 에이전트; 상기 제2 위치에 상기 기본 블록을 오프로딩하는 제2 에이전트; 상기 제3 위치에 상기 기본 블록을 오프로딩하는 제3 에이전트; 상기 제1 위치에서 상기 제2 위치로의 마이그레이션을 통해 상기 기본 블록을 오프로딩하는 제4 에이전트; 및 상기 제1 위치에서 상기 제3 위치로의 마이그레이션을 통해 상기 기본 블록을 오프로딩하는 제5 에이전트를 포함한다.
또한, 상기 기본 에이전트를 선택하는 단계와 상기 기본 블록을 처리하는 단계 사이에, 상기 기본 블록에 대해 병렬 처리가 가능한 기본 블록의 처리를 위해 상기 기본 에이전트가 상기 복수의 에이전트 중에서 협력 에이전트를 선택하는 단계; 및 상기 기본 에이전트와 상기 협력 에이전트가 컴퓨팅 유닛을 형성하여 상기 오프로딩된 기본 블록을 처리하는 단계를 포함한다.
또한, 상기 기본 에이전트를 선택하는 단계는, 상기 복수의 에이전트가 자신이 관리하는 위치의 자원 정보를 사용하여 추정 응답 시간을 각각 산출하는 단계; 상기 복수의 에이전트가 상기 추정 응답 시간을 사용하여 비드값을 각각 산출하는 단계; 및 상기 모바일 포그가 상기 복수의 에이전트별로 산출되는 비드값을 사용하여 상기 기본 에이전트를 선택하는 단계를 포함한다.
또한, 상기 추정 응답 시간을 각각 산출하는 단계 전에, 상기 복수의 에이전트가 자신이 관리하는 위치의 가용 자원을 확인하는 단계; 및 상기 복수의 에이전트가 상기 가용 자원과 상기 오프로딩되는 기본 블록의 처리를 위해 요청되는 자원을 비교하는 단계를 더 포함하며, 상기 가용 자원이 상기 오프로딩되는 기본 블록의 처리를 위해 요청되는 자원보다 많은 위치를 담당하는 에이전트가 상기 추정 응답 시간을 각각 산출하는 단계를 수행하는 것을 특징으로 한다.
또한, 상기 협력 에이전트를 선택하는 단계는, 상기 기본 에이전트가 다른 에이전트에게 협력을 요청하는 단계; 상기 다른 에이전트로부터 협력 응답을 수신하는 단계; 및 협력이 가능한 에이전트들 중에서 상기 협력 에이전트를 선택하는 단계를 포함한다.
또한, 상기 협력이 가능한 에이전트들 중에서 상기 협력 에이전트를 선택하는 단계는, 상기 협력이 가능한 에이전트들의 수가 상기 오프로딩되는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수보다 큰지를 판단하는 단계; 상기 협력이 가능한 에이전트들의 수가 상기 오프로딩되는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수보다 크지 않은 경우, 상기 협력이 가능한 에이전트들 모두와 상기 기본 에이전트를 컴퓨팅 유닛으로 형성하는 단계; 및 상기 협력이 가능한 에이전트들의 수가 상기 오프로딩되는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수보다 큰 경우, 상기 협력이 가능한 에이전트들 중에서 상기 비드값이 큰 순서로 오프로드딩는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수만큼의 협력 에이전트를 선택하는 단계를 포함한다.
또한, 상기 일부 기본 블록을 모바일 포그로 오프로딩하는 단계 전에, 상기 모바일 단말이 애플리케이션 분석을 통해 기본 블록으로 분할하는 단계; 상기 기본 블록의 실행을 통해 상기 기본 블록의 실행을 위한 자원 정보를 수집하는 단계; 상기 모바일 단말에서 상기 기본 블록을 실행하는 경우의 호스트 실행 시간을 산출하는 단계; 상기 기본 블록의 실행을 위한 자원 정보를 상기 모바일 포그로 전달하면서 상기 모바일 포그에서 실행하는 경우의 포그 실행 시간을 요청하는 단계; 상기 모바일 포그로부터 전달되는 포그 실행 시간이 상기 호스트 실행 시간보다 작은 경우 분할된 기본 블록 중에서 오프로딩 가능한 기본 블록을 상기 모바일 포그로 오프로딩하는 단계를 포함한다.
또한, 상기 자원 정보를 수집하는 단게와 상기 호스트 실행 시간을 산출하는 단계 사이에, 상기 기본 블록의 실행을 위해 필요한 자원과 상기 모바일 단말에서 사용 가능한 자원을 비교하는 단계를 더 포함하며, 상기 기본 블록의 실행을 위해 필요한 자원이 상기 모바일 단말에서 사용 가능한 자원보다 많은 경우 상기 호스트 실행 시간을 산출하는 단계를 수행하고, 상기 기본 블록의 실행을 위해 필요한 자원이 상기 모바일 단말에서 사용 가능한 자원보다 많지 않은 경우 상기 모바일 단말이 상기 기본 블록을 처리하는 것을 특징으로 한다.
또한, 상기 추정 응답 시간(Eij)이 다음의 관계식
Figure 112015128790018-pat00001
- 여기서, E[N]은 상기 포그 노드 상에 있는 블록의 추정 개수이고, PK는 정상 상태 분포(steady-state distribution) 또는 큐 상에 있는 K블록을 발견하는 정상 확률(stationary probability)이며,
Figure 112015128790018-pat00002
는 사용률(utilization factor)이고, E[Q]는 상기 제2 위치에 있는 상기 모바일 포그의 추정 큐 길이이며, L1은 상기 제1 위치이고, L2는 상기 제2 위치이며, L3는 상기 제3 위치이고, L1,2는 L1과 L2 사이의 통신 지연이며, L1, 3는 L1과 L3 사이의 통신 지연이고, P0는 큐 상에 기본 블록이 없을 확률임 -을 사용하여 산출되는 것을 특징으로 한다.
또한, 상기 비드값(Bij)은 다음의 관계식
Figure 112015128790018-pat00003
- 여기서, ij는 각각 에이전트와 상기 에이전트의 위치를 나타내고,
Figure 112015128790018-pat00004
는 에이전트 ai의 비딩의 위험 인자로 불리는 작은 상수이며,
Figure 112015128790018-pat00005
는 정규화 상수(normalization constant)임 -을 사용하여 산출되는 것을 특징으로 한다.
본 발명의 다른 특징에 따른 모바일 포그 컴퓨팅 시스템은,
애플리케이션의 코드를 복수의 기본 블록으로 분할한 후 일부 기본 블록을 모바일 포그(mobile fog)로 오프로딩하는 모바일 단말; 및 상기 모바일 단말로부터 오프로딩되는 기본 블록을 처리하기 위해 복수의 에이전트 중 기본 에이전트와 협력 에이전트를 선택하고, 상기 기본 에이전트와 상기 협력 에이전트를 컴퓨팅 유닛으로 형성하여 상기 오프로딩되는 기본 블록을 분산 처리하도록 제어하는 모바일 포그를 포함하며, 상기 복수의 에이전트는 상기 오프로딩되는 기본 블록을 처리하기 위한 위치를 관리하는 것을 특징으로 한다.
여기서, 상기 모바일 단말은, 애플리케이션의 하이레벨 언어를 기계가 이해 가능한 형태의 로우레벨 언어로 변환한 후, 상기 로우레벨 언어를 복수의 기본 블록으로 분할하는 컴파일러부; 및 상기 컴파일러부에 의해 제공되는 애플리케이션의 기본 블록들을 사용하여 애플리케이션 실행을 위한 오프로딩(offloading) 여부를 판단하고, 오프로딩이 필요한 경우 모바일 포그에게 기본 블록의 코드 오프로딩을 요청하고, 코드 오프로딩된 기본 블록의 실행 결과를 수신하는 애플리케이션 관리부를 포함한다.
또한, 상기 컴파일러부는, 애플리케이션의 하이레벨 언어에 대해 문법, 의미 해석을 수행하여 중간 코드를 생성하는 프론트 엔드; 및 상기 프론트 엔드에 의해 생성되는 중간 코드에 대해 바이트 코드를 생성하고, 독립적인 바이트 코드 신택스를 통해서 로우레벨 언어의 코드를 복수의 기본 블록으로 분할한 후 그룹핑하며, 그룹핑된 기본 블록으로부터 플로우 그래프를 생성하는 백 엔드를 포함한다.
또한, 상기 애플리케이션 관리부는, 상기 애플리케이션의 실행을 통해 상기 기본 블록의 실행시 요구되는 자원 정보를 수집함과 동시에 오프로딩 가능한 기본 블록을 확인하는 실행 분석기; 및 상기 실행 분석기에 의해 확인되는 오프로딩 가능한 기본 블록의 오프로딩 여부를 판단하며, 오프로딩이 가능한 경우 해당 기본 블록과 상기 기본 블록의 실행에 요구되는 자원 정보를 모바일 포그로 전달하면서 코드 오프로딩을 요청하는 코드 오프로더를 포함한다.
또한, 상기 코드 오프로더는 상기 모바일 단말과 상기 모바일 포그 중에서 상기 오프로딩 가능한 기본 블록의 실행에 필요한 시간이 적게 산출되는 곳에서 상기 오프로딩 가능한 기본 블록이 실행되도록 제어하는 것을 특징으로 한다.
또한, 상기 모바일 포그의 포그 제어기는, 상기 복수의 에이전트를 관리하며, 상기 모바일 단말로부터 오프로딩되는 기본 블록을 처리하기 위해 상기 복수의 에이전트 중 상기 기본 에이전트와 상기 협력 에이전트를 선택하고, 상기 기본 에이전트와 상기 협력 에이전트를 컴퓨팅 유닛으로 형성하는 멀티 에이전트부; 상기 멀티 에이전트부에 의해 형성되는 컴퓨팅 유닛에 속하는 에이전트 정보에 따라서 해당 위치로 상기 오프로딩되는 기본 블록을 오프로딩하여 처리되도록 제어하는 코드 오프로딩부; 및 상기 멀티 에이전트부와 상기 코드 오프로딩부를 제어하여 상기 모바일 단말에서 오프로딩되는 기본 블록을 상기 기본 에이전트와 상기 컴퓨팅 유닛을 통해 오프로딩하여 처리하는 제어부를 포함한다.
또한, 상기 멀티 에이전트부는 상기 복수의 에이전트가 자신이 담당하는 위치에서 사용 가능한 자원 정보를 사용하여 각각 추정 응답 시간을 산출하고, 산출되는 추정 응답 시간을 사용하여 상기 복수의 에이전트에 해당되는 비드값을 산출하며, 상기 제어부는 상기 복수의 에이전트별 비드값에 기초하여 상기 오프로딩되는 기본 블록을 처리할 기본 에이전트와 상기 기본 에이전트에 협력할 협력 에이전트를 선택하는 것을 특징으로 한다.
또한, 상기 기본 에이전트는 다른 에이전트들 중에서 협력이 가능한 에이전트들 중에서 상기 협력 에이전트를 선택하는 것을 특징으로 한다.
본 발명에 따르면, 자동으로 그리고 내용-감지에 기초하여 애플리케이션의 처리를 분산할 수 있다.
따라서, 애플리케이션의 실행 시간과 지연을 낮출 수 있으며, 또한 모바일 단말의 에너지 소비를 낮출 수 있다.
도 1은 본 발명의 실시예에 따른 모바일 포그 컴퓨팅 시스템의 개략적인 구성을 도시한 도면이다.
도 2는 도 1에 도시된 모바일 단말에서의 코드 오프로딩 프레임워크를 개략적으로 도시한 도면이다.
도 3은 도 1에 도시된 모바일 단말에서 형성되는 플로우 그래프를 나타낸 도면이다.
도 4는 도 1에 도시된 F-APC의 구체적인 구성을 도시한 도면이다.
도 5는 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 방법 중 모바일 단말에서의 동작 방법의 흐름도이다.
도 6은 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 방법 중 모바일 포그에서의 동작 방법의 흐름도이다.
도 7은 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 방법 중 모바일 포그에서의 컴퓨팅 유닛 형성 방법의 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
먼저, 본 발명이 적용되는 모바일 포그 컴퓨팅 시스템을 위한 그 시스템 모델에 대해 설명한다.
모바일 클라우드 컴퓨팅은 모바일 사용자에 대한 서비스 품질을 보장하기 위한 모바일 단말의 데이터 및 처리 분산 플랫폼이다.
도 1은 본 발명의 실시예에 따른 모바일 포그 컴퓨팅 시스템의 개략적인 구성을 도시한 도면이다.
도 1을 참조하면, 포그 컴퓨팅 모델에 기초하여 모바일 클라우드 컴퓨팅의 모델을 소개한다. 본 발명의 실시예에 따른 모바일 포그 컴퓨팅 모델에서는, 클라우드(public cloud, 10)와 모바일 포그(20-1, 20-2, …, 20-n)를 연결하는 데는 LTE(Long Term Evolution) 네트워크가 사용되고 있고, 모바일 포그(20-1, 20-2, …, 20-n)와 모바일 단말(30)을 연결하는 데는 와이파이(Wi-Fi) 네트워크가 사용되는 계층 구조가 사용된다.
먼저, 클라우드(10)는 정적이고 이동 가능한 장치, 즉 모바일 단말(30)로부터 인터넷을 통해서 액세스될 수 있는 확장성 있고 유비쿼터스적이면서 현금지불방식의 전통적인 서비스 전송 네트워크이다. 필요한 경우, 모바일 포그(20-1, , 20-2, …, 20-n)는 계산 부하를 조절하기 위해, 지연-집중 데이터를 처리하기 위해, 전통적인 이력을 기록하기 위하는 등, 클라우드(10)의 서비스(Everything as a Software, Xaas)로서 요구되는 모든 것을 사용할 수 있다.
LTE 네트워크(40)는 AAA(Authentication Authorization Accounting)(41), ePDG(enhanced Packet DataGateway)(42), P-GW(Packet data network GateWay)(43)를 포함한다.
이러한 LTE 네트워크(40)에서 ePDG는 모바일 포그(20-1, 20-2, …, 20-n)와 클라우드(10) 사이의 데이터 트래픽을 처리하며, 특히 모바일 포그(20-1, 20-2, …, 20-n)간 통신을 담당한다.
AAA(41)는 LTE 네트워크(40)의 HSS(Home Subscriber Server)(도시되지 않음)로부터 인증 벡터를 획득함으로써 IKEv2를 사용한 EAP-AKA를 통해서 모바일 단말(30)의 글로벌 인증을 담당한다. 여기서 모바일 IP 기반 네트워크에서의 AAA 프로토콜로서 Diameter가 사용될 수 있다.
P-GW(43)는 모바일 단말(30)을 위한 PDN(Packet Data Network) 액세스를 가능하게 하고, 또한 모바일 포그 컴퓨팅에서 ePDG(42)간 가상 머신 마이그레이션을 담당한다.
LTE 네트워크(40)의 상기한 구성 및 그 외의 다른 구성에 대해서는 잘 알려져 있으므로 여기에서는 구체적인 설명을 생략한다.
한편, 모바일 포그(20-1, 20-2, …, 20-n)는 모바일 단말(30)을 제외한 네트워크 시스템에서 에지에 생성된다.
모바일 포그(20-1, 20-2, …, 20-n)에서, AP(21-1, 21-2)는 모바일 단말(30)과 IP 네트워크 사이의 연결을 제공하는 것을 담당할 뿐만 아니라 모바일 클라우드 서비스, 예를 들어 IaaS(Infrastructure as a Serviece), PaaS(Platform as a Service), NaaS(Network as a Service) 등을 제공하기 위해 충분한 저장소, 처리기, I/O 및 네트워킹 능력을 가진다.
모바일 포그(20-1, 20-2, …, 20-n)는 복수의 포그 노드로서 구성되며, 구체적으로는, 하나의 모바일 포그(20-1)를 예로 들면, 액세스 포인트(Access Point, AP)(21-1, 21-2)와 액세스 포인트 제어기(Access Point Controller, APC)(22)를 포함한다.
AP(21-1, 21-2)는 모바일 단말(30)과 사이에 예를 들어, IEEE 802.11 WLAN 인터페이스를 사용하고, APC(22)와의 사이에는 IEEE 이더넷 인터페이스를 사용한다.
AP(21-1, 21-2)와 마찬가지로, APC(22)는 통신 핸드오버를 담당할 뿐만 아니라, 모바일 클라우드에서의 국간 이동성을 지원하기 위해 코드 블록 마이그레이션을 담당하고, 모바일 클라우드 서비스를 제공하기 위해 충분한 저장소, 처리기, I/O 및 네트워킹 능력을 구비한다.
이러한 APC(22)에서의 상향 및 하향 엔터티는 IEEE 이더넷 인터페이싱 표준으로 인터페이스된다.
도 1에 도시된 바와 같이, 모바일 포그로서 사용 가능한 AP(21-1, 21-2)와 APC(22)는 F-AP와 F-APC로 나타내었다.
이하, 도면을 참고하여 본 발명의 실시예에 따른 코드 오프로딩 프레임워크에 대해 설명한다.
도 2는 도 1에 도시된 모바일 단말(30)에서의 코드 오프로딩 프레임워크를 개략적으로 도시한 도면이다.
도 2에 도시된 바와 같이, 모바일 단말(30)은 본 발명의 실시예에 따른 코드 오프로딩을 위해, 컴파일러부(310), 애플리케이션 관리부(320), 네트워크 관리부(330) 및 장치 관리부(340)를 포함한다.
컴파일러부(310)는 애플리케이션의 하이레벨 언어를 기계가 이해 가능한 형태의 로우레벨 언어로 변환한다.
컴파일러부(310)는 애플리케이션의 하이레벨 언어에 대해 문법, 의미 해석을 수행하여 중간 코드를 생성하는 프론트 엔드(311)와 프론트 엔드(311)에 의해 생성되는 중간 코드에 대해 바이트 코드를 생성하고, 독립적인 바이트 코드 신택스를 통해서 로우레벨 언어의 코드를 복수의 기본 블록으로 분할한 후 그룹핑하며, 그룹핑된 기본 블록으로부터 도 3에 도시된 바와 같은 플로우 그래프를 생성하는 백 엔드(312)를 포함한다.
도 3에 도시된 플로우 그래프는 하나의 예로서 사용되며, 애플리케이션이 b1 내지 b6까지의 6개의 기본 블록으로 구성되고, 6개의 기본 블록은 다시 5개의 호환되는(compatible) 기본 블록들의 집합으로 그룹핑되어 있는 것을 알 수 있다. 여기서, 블록 b1의 레지스터 값은 블록 b3와 블록 b2에 의해 사용되며, 그 후 블록 b2의 레지스터 값은 블록 b6에 의해 사용되며, 이하의 블록들도 이와 같이 사용될 수 있음을 알 수 있다. 이러한 플로우 그래프에 따르면, 그룹핑된 5개의 호환되는 집합은 병렬 실행이 가능하도록 완전히 독립적이다.
애플리케이션 관리부(320)는 컴파일러부(310)에 의해 제공되는 애플리케이션의 기본 블록들을 사용하여 애플리케이션 실행을 위한 오프로딩(offloading) 여부를 판단하고, 오프로딩이 필요한 경우 근접한 모바일 포그(20-1, 20-2, …, 20-n)에게 기본 블록의 코드 오프로딩을 요청하고, 코드 오프로딩된 기본 블록들의 실행 결과를 수신한다.
애플리케이션 관리부(320)는 실행 분석기(321)와 코드 오프로더(code offloader)(322)를 포함한다.
실행 분석기(321)는 런타임 통계를 수집하기 위해 애플리케이션을 한 번 실행하며, 이 때 추후 설명될 장치 관리자(340)를 통해서 관리되는 자원, 예를 들어, CPU, 메모리, I/O 주변 장치 등을 사용하여 애플리케이션을 실행한다.
실행 분석기(321)는 [표 1]에 도시된 바와 같이, 각 기본 블록의 사용 자원과 실행 시간의 테이블을 준비한다.
[표 1]
Figure 112015128790018-pat00006
실행 분석기(321)는 각 기본 블록의 애플리케이션 ID, 방법 ID 및 블록 ID를 할당하며, 한 번의 실행에서, 평균 메모리 사용, CPU 사용 및 실행 시간 및 기본 블록이 실행되는 회수의 기록을 유지한다.
또한, 실행 분석기(321)는 블록 실행 중에 모바일 단말(30)로부터 전용 주변장치(예를 들어, 모바일 단말 카메라) 등을 요구하면 오프로드가 가능하지 않은 것으로 기본 블록을 정의한다(예를 들어, [표 1]에서 오프로드 가능성 플래그를 0으로 설정한다).
코드 오프로더(322)는 인근의 모바일 포그(20-1, 20-2, …, 20-n)의 포그 노드(21-1, 21-2, 22)로 기본 블록의 코드를 오프로딩, 즉 분산하는 것을 담당한다. 여기서, 포그 노드의 사용가능성은 네트워크 관리부(330)를 통해서 실현된다.
코드 오프로더(322)는 오프로딩이 필요한 경우 [표 1]에서 오프로드 가능성 플래그를 통해 오프로드가 가능한 기본 블록만을 분산할 수 있다.
한편, 실행해야 할 기본 블록의 평균 CPU와 메모리 사용이 모바일 단말(30)에서 사용가능한 메모리 및 CPU보다 적거나 같다면 코드 오프로더(322)는 모바일 단말(30)에서 그 기본 블록을 실행하도록 결정한다.
그러나, 실행해야 할 기본 블록의 평균 CPU와 메모리 사용이 모바일 단말(30)에서 사용가능한 메모리 및 CPU보다 크다면, 코드 오프로더(322)는 모바일 단말(30)의 사용가능한 메모리와 CPU에 기초하여 예상되는 호스트(모바일 단말(30))에서 처리되는 경우의 실행 시간, 즉 호스트 실행 시간(EETH)을 결정한다.
그리고, 해당 블록이 모바일 단말(30)에서 초기에 처리되는 동안 모바일 단말(30)의 CPU와 메모리 사용 이력을 모바일 포그(20-1, 20-2, …, 20-n)로 전송하여 모바일 포그(20-1, 20-2, …, 20-n)의 사용가능한 메모리와 CPU 그리고 링크 대역폭에 기초하여 예상되는 포그 처리의 실행 시간, 즉 포그 실행 시간(EETF)을 인접한 모바일 포그(20-1, 20-2, …, 20-n)의 F-APC(22)에게 요청한다.
그 후, 코드 오프로더(322)는 F-APC(22)로부터 포그 실행 시간(EETF)이 전달되면, 두 개의 예상되는 실행 시간 결과, 즉 EETH와 EETF를 비교하여, EETF < EETH이면 모바일 포그(20-1, 20-2, …, 20-n)에서의 실행 시간이 더 짧으므로 해당 블록을 모바일 포그(20-1, 20-2, …, 20-n)로 오프로딩하는 것으로 결정한다.
그러나, EETF ≥ EETH이라면, 모바일 포그(20-1, 20-2, …, 20-n)로의 오프로딩 이점이 없으므로 모바일 단말(30)에서 실행하는 것으로 결정한다.
한편, 코드 오프로더(322)는 플로우 그래프 상에서 기본 블록들에 대해 브레드 퍼스트 서치(Breadth First Search, BFS)를 수행하여, 모바일 포그(20-1, 20-2, …, 20-n)로 오프로딩된 블록들과의 병렬 실행을 위해 동일한 깊이의 독립적인 블록을 찾는다.
네트워크 관리부(330)는 모바일 단말(30)이 모바일 포그(20-1, 20-2, …, 20-n)와 통신을 수행할 수 있도록 연결된 네트워크를 관리한다.
장치 관리부(340)는 모바일 단말(300)내의 자원을 관리하며, 실행 분석기(321)가 애플리케이션의 기본 블록들을 실행할 수 있도록 자원을 제공할 수 있다.
다음, 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 방법에 대해 설명한다.
이하에서는, 설명의 편의를 위해, 모바일 단말(30)이 기본 블록들에 대해 코드 오프로딩이 필요하여 하나의 모바일 포그(20-1)로 코드 오프로딩을 요청하는 경우를 가정하여 설명한다.
모바일 포그(20-1)는 모바일 단말(30)에게 근접하여 서빙하도록 기하학적으로 배치된다.
다양한 모바일 단말(30), 애플리케이션 및 사용자로부터의 역동적인 자원 요청으로 인해, 모바일 포그(20-1)에서 자원 제공을 위해 멀티-에이전트 기반 알고리즘을 사용한다.
코드를 오프로딩하기 위한 세 가지 옵션은 다음과 같다.
i) 모바일 단말(30)에 매우 가까운 모바일 포그(20-1), L1, ii) 이동성과 부하 밸런싱 문제를 처리하기 위해 모바일 포그(20-1)에 인접한 모바일 포그(또는 멀리 떨어져 있는 모바일 포그)(20-2, …, 20-n), L2, iii) 대량의 트래픽과 계산 요청을 관리하기 위한 원격 퍼블릭 클라우드(10), L3
여기서, L1은 F-APC(22)가 위치하는 모바일 포그(20-1) 내에 속하는 포그 노드(21-1, 21-2, 22)의 위치를 의미한다.
모바일 코드의 기본 블록을 오프로딩하기 위한 가장 적합한 옵션을 발견하기 위해 복수의 모바일 에이전트를 배치한다.
모바일 포그(20-1)에서 기본 블록 오프로딩의 경우 모바일 에이전트 액션 공간 A는 1) a1: 위치 L1에서의 오프로드, 2) a2: 위치 L2에서의 오프로드, 3) a3: 위치 L3에서의 오프로드, 4) a4: 위치 L1에서 L2로의 마이그레이션, 5) a5: 위치 L1에서 L3로의 마이그레이션으로 구성된다.
이러한 멀티 에이전트 a1 내지 a5는 모두 모바일 단말(30)로부터 코드 오프로딩을 요청받는 F-APC(22)내에서 관리되며, 각자 담당하는 위치 L1 내지 L3에 대한 자원 정보를 사용하여 추정 능력 Eij를 산출한 후 이에 기반하여 오프로딩된 코드 블록을 처리하기 위한 에이전트로의 경합을 위해 비드(bid)값을 산출한다.
이하, 멀티 에이전트 a1 내지 a5의 구체적인 동작에 대해 설명한다.
각 에이전트 ai는(여기서, i는 1 내지 5의 자연수임) 상기한 바와 같이 멀티 에이전트 기반으로 지정된 동작을 담당한다.
에이전트 ai는 추정 능력 Eij(여기서, j는 1, 2 또는 3임)를 고려하여 위치 Lj에 기본 블록을 배치하기 위해 비드 Bij를 다음의 [수식 1]과 같이 산출한다.
[수식 1]
Figure 112015128790018-pat00007
여기서, ij는 각각 에이전트와 위치를 나타내고,
Figure 112015128790018-pat00008
는 에이전트 ai의 비딩의 위험 인자로 불리는 작은 상수이며,
Figure 112015128790018-pat00009
는 정규화 상수(normalization constant)이다.
본 발명의 실시예에서는, 추정 능력 Eij로서 블록을 처리하기 위해 추정 응답 시간을 고려한다.
블록을 처리하기 위한 추정 응답 시간을 결정하기 위해, 각 포그 노드(즉, F-APC(22), F-AP(21-1, 21-2))의 큐 상태를 분석하는 큐잉 이론(queuing theory)을 적용한다. 예를 들어, 각 포그 노드(21-1, 21-2, 22)가 단일 서버를 가지는 경우의
Figure 112015128790018-pat00010
큐잉 모델을 가정하면, 처리할 수 있는 블록의 최대 개수는 서비스하에서 1을 포함하는 K이고, 처리 요청의 도착률
Figure 112015128790018-pat00011
는 포아송 분포(Poisson distribution)를 따르며, 서비스 시간
Figure 112015128790018-pat00012
는 지수 분포(Exponential distribution)를 따른다. 예를 들어, 연속 도착(inter-arrival)과 서비스 시간은 무기억 성질(memory property)을 따른다. 큐잉 이론에 따라서 L1에 있는 포그 노드의 추정 응답 시간
Figure 112015128790018-pat00013
는 [수식 2]와 같이 산출된다.
[수식 2]
Figure 112015128790018-pat00014
여기서, E[N]은 아래의 [수식 3]에서와 같이 포그 노드(21-1, 21-2, 22) 상에 있는 블록의 추정 개수이다. 정상 상태 분포(steady-state distribution) 또는 큐 상에 있는 K블록을 발견하는 정상 확률(stationary probability)은 PK이고, 사용률(utilization factor)은
Figure 112015128790018-pat00015
이다.
[수식 3]
Figure 112015128790018-pat00016
또한, 에이전트가 인접하거나 또는 원격지에 있는 모바일 포그인 위치 L2에 기본 블록을 배치하는 것이 고려되는 경우,
Figure 112015128790018-pat00017
로써 큐잉 문제를 모델링할 수 있다. 여기서 c는 다른 포그들의 서버 개수이다. L2에 있는 포그 노드의 추정 응답 시간
Figure 112015128790018-pat00018
는 [수식 4]와 같이 산출된다.
[수식 4]
Figure 112015128790018-pat00019
여기서, E[Q]는 L2에 있는 모바일 포그의 추정 큐 길이이고, L1,2는 L1과 L2 사이의 통신 지연이다.
또한, 에이전트가 클라우드(10)에 있는 위치 L3에 기본 블록을 배치하는 것이 고려되는 경우,
Figure 112015128790018-pat00020
로써 큐잉 문제를 모델링할 수 있다. 여기서 c는 클라우드(30)에 있는 서버 개수이며 무한 버퍼 사이즈이다. 따라서, L3에 있는 클라우드 노드의 추정 응답 시간
Figure 112015128790018-pat00021
는 [수식 5]와 같이 산출된다.
[수식 5]
Figure 112015128790018-pat00022
여기서, P0는 큐 상에 기본 블록이 없을 확률이고, L1, 3는 L1과 L3 사이의 통신 지연이다.
상기한 내용을 요약하면,
추정 응답 시간 Eij는 다음과 같이 [수식 6]으로 공식화될 수 있다.
[수식 6]
Figure 112015128790018-pat00023
따라서, 멀티 에이전트 a1 내지 a5는 각각 [수식 6]에 따라서 산출되는 추정 응답 시간을 추정 능력 Eij으로 사용하여 [수식 1]에 의해 각자의 비드값을 산출할 수 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 모바일 포그(20-1)의 포그 노드, 특히 모바일 포그 제어를 수행하는 모바일 포그 제어 장치인 F-APC(22)에 대해 설명한다.
도 4는 도 1에 도시된 F-APC(22)의 구체적인 구성을 도시한 도면이다.
도 4에 도시된 바와 같이, F-APC(22)는 네트워크 관리부(210, 220), 멀티 에이전트부(230), 코드 오프로딩부(240) 및 제어부(250)를 포함한다.
네트워크 관리부(210)는 F-APC(22)가 모바일 단말(30)과 통신을 수행할 수 있도록 연결된 네트워크를 관리한다.
네트워크 관리부(220)는 F-APC(22)가 LTE 네트워크(40)를 통해 클라우드(10)와 통신을 수행할 수 있도록 연결된 네트워크를 관리한다.
멀티 에이전트부(230)는 상기한 바와 같은 코드 블록을 오프로딩하는 세 가지 위치 L1, L2 및 L3에 모바일 단말(30)로부터 오프로딩이 요청된 코드 블록을 오프로딩하기 위한 작업을 수행한다. 즉, 멀티 에이전트부(230)는 상기한 바와 같은 에이전트 a1 내지 a5를 관리하며, 이들 에이전트들이 오프로딩될 기본 블록들에 대해 요청된 자원과 관련하여 담당하는 위치의 포그 노드들(21-1, 21-2, 22), 모바일 포그(20-2, …, 20-n) 및 클라우드(10)의 자원 상태, 즉 메모리, cpu, 대역폭 등을 검토하고, 이들을 사용하여 [수식 6]을 통해서 추정 응답 시간 Eij를 산출한 후, 이를 기초로 하여 [수식 1]을 통해서 에이전트별 비드값 Bij를 산출한다.
이렇게 산출된 에이전트별 비드값 Bij를 통해서 코드 오프로딩을 책임질 기본 에이전트가 선택되면, 기본 에이전트는 다른 에이전트들에게 협력을 요청하고, 다른 에이전트들로부터 협력 요청에 대한 협력 응답을 받아서 오프로딩시 병렬 처리를 함께 수행할 에이전트들을 선택하여 컴퓨팅 유닛을 형성한다.
코드 오프로딩부(240)는 모바일 단말(30)로부터 전달되는 오프로딩될 기본 블록에 대한 CPU와 메모리 사용 이력을 수신하여 모바일 포그(20-1)의 사용가능한 메모리와 CPU 그리고 링크 대역폭에 기초하여 예상되는 포그 처리의 실행 시간, 즉 포그 실행 시간(EETF)을 산출하여 네트워크 관리부(210)를 통해 모바일 단말(30)로 전달한다.
또한, 코드 오프로딩부(240)는 모바일 단말(30)로부터 기본 블록들을 오프로딩한 후 멀티 에이전트부(230)에 의해 형성되는 컴퓨팅 유닛에 속하는 에이전트 정보에 따라서 해당 위치로 기본 블록들을 오프로딩하여 처리되도록 한다.
그 후, 코드 오프로딩부(240)는 해당 위치에서 처리된 결과를 수신하여 네트워크 관리부(210)를 통해 모바일 단말(30)로 전달한다.
제어부(250)는 네트워크 관리부(210, 220), 멀티 에이전트부(230) 및 코드 오프로딩부(240)를 제어하여, 모바일 단말(30)로부터의 요청에 따라 코드 오프로딩부(240)가 포그 실행 시간을 산출하여 모바일 단말(30)로 전달하도록 제어한다.
그 후, 제어부(250)는 모바일 단말(300)로부터 기본 블록의 오프로딩이 요청되는 경우 멀티 에이전트부(230)가 각 위치에서의 비드값을 산출하여 경합(비딩)을 하도록 제어하며, 경합 결과 최적의 에이전트와 협력 에이전트로 컴퓨팅 유닛을 형성하도록 제어한다.
또한, 제어부(250)는 코드 오프로딩부(240)가 컴퓨팅 유닛에 속하는 에이전트들에 해당되는 위치로 모바일 단말(30)로부터 오프로딩되는 기본 블록들을 오프로딩하여 처리되도록 한 후, 각 위치로부터 처리된 결과를 수신하여 모바일 단말(30)로 전달하도록 제어를 수행한다.
한편, 상기에서는 멀티에이전트부(230)이 F-APC(22) 내에 포함되는 것으로 설명하였으나, 본 발명의 기술적 범위는 여기에 한정되지 않고 에이전트들이 각 포그 노드(21-1, 21-2, 22)위치하면서 상기한 기능을 수행할 수도 있다.
또한, 코드 오프로딩부(240)는 포그 실행 시간(EETF) 산출시 멀티 에이전트부(230)의 에이전트들을 사용하여 각 위치에서의 자원 정보를 사용할 수도 있다.
이하, 도면을 참조하여 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 방법에 대해 설명한다.
먼저, 도 5를 참조하여 모바일 단말(30)에서의 코드 오프로딩을 수행하기 위한 방법에 대해 설명한다.
도 5는 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 방법 중 모바일 단말에서의 동작 방법의 흐름도이다.
도 5를 참조하면, 모바일 단말(30)은 애플리케이션 분석을 통해 기본 블록과 플로우 그래프를 형성한다(S100)
그 후, 호한되는 블록을 확인하고(S110), 애플리케이션의 실행을 통해 런타임 통계를 수집한다(S120). 이 때, 오프로딩 가능한 기본 블록들이 확인된다.
다음, 오프로딩될 기본 블록을 실행하는데 필요한 자원과 모바일 단말(30)에서 사용 가능한 자원을 비교한 후(S130), 모바일 단말(30)에서 사용 가능한 자원이 오프로딩될 기본 블록을 실행하는데 필요한 자원보다 적은 경우(S140) 모바일 단말(30) 내부에서 실행이 불가능하므로, 현재의 모바일 단말(30)의 사용 가능한 자원을 사용하여 해당 기본 블록을 실행하는데 드는 호스트 실행 시간(EETH)을 산출함과 동시에 모바일 포그(20-1)에게 포그 실행 시간(EETF)을 요청한다(S150).
그 후, 포그 실행 시간(EETF)이 수신되면 호스트 실행 시간(EETH) 보다 작은지를 판단한다(S160). 즉, 모바일 포그(20-1)에서의 해당 기본 블록의 실행시 시간이 더 짧게 드는지를 판단하는 것이다.
만약 포그 실행 시간(EETF)이 호스트 실행 시간(EETH)보다 작으면 해당 기본 블록을 모바일 포그(20-1)로 오프로딩하여 처리되도록 한 후(S170), 모바일 포그(20-1)로부터 오프로딩 처리 결과를 수신하여 애플리케이션에 대한 실행 처리를 종료하게 된다(S180).
한편, 상기 단계(S140)에서 모바일 단말(30)에서 사용 가능한 자원이 오프로딩될 기본 블록을 실행하는데 필요한 자원보다 많거나 같은 경우와 상기 단계(S160)에서 포그 실행 시간(EETF)이 호스트 실행 시간(EETH)과 같거나 더 크면, 해당 기본 블록에 대해서는 모바일 단말(30)에서 내부 실행을 통해 처리한다(S190).
다음, 모바일 단말(30)에서의 처리보다 모바일 포그(20-1)로의 오프로딩을 통한 처리가 효율적으로 판단되는 경우, 모바일 포그(20-1)에서 멀티-에이전트 기반의 오프로딩 처리를 수행하는 방법에 대해 설명한다.
도 6은 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 방법 중 모바일 포그에서의 동작 방법의 흐름도이다.
도 6을 참조하면, 모바일 포그(20-1)의 콘트롤러에 해당되는 F-APC(22)가 모바일 단말(30)로부터의 블록 오프로딩 요청을 수신한다(S200). 이 때, F-APC(22)는 모바일 단말(30)로부터 블록 오프로딩이 요청된 기본 블록의 개수가 q개인 것으로 가정하여 설명한다. 또한, 블록 오프로딩 요청과 함께 q개의 기본 블록에 대한 자원 요청도 함께 전달될 수 있다.
따라서, F-APC(22)는 에이전트들에게 오프로딩 블록을 기본적으로 담당할 에이전트를 선택하기 위한 경합(bidding, 비딩)에 참가할 것으로 요청한다(S210).
따라서, 각 에이전트들은 그들이 기본 블록을 오프로딩할 위치, 즉, L1, L2 및 L3의 자원 상태, 즉 메모리, CPU, 대역폭 등을 각각 검토한다(S220).
그 후, 각 에이전트들은 자신들이 검토한 자원 상태를 통해 해당 위치에서의 가용 자원이 모바일 단말(30)에서의 블록 오프로딩을 위해 요청된 자원보다 큰 지를 판단한다(S230).
만약 해당 위치에서의 가용 자원이 모바일 단말(30)에서의 블록 오프로딩을 위해 요청된 자원보다 큰 것으로 판단되는 에이전트들은 해당 위치로의 블록 오프로딩이 가능하므로, 해당 에이전트들은 각각 [수식 6]을 사용하여 추정 응답 시간을 산출한다(.S240).
그 후, 해당 에이전트들은 산출되는 추정 응답 시간을 사용하여 [수식 1]에 따라서 각각 비드값을 산출한다(S250).
따라서, F-APC(22)는 블록 오프로딩이 가능한 에이전트들에 의해 산출되는 비드값을 사용하여 컴퓨팅 유닛을 형성한 후 블록 오프로딩 처리를 수행한다(S260).
한편, 상기 단계(S230)에서, 해당 위치에서의 가용 자원이 모바일 단말(30)에서의 블록 오프로딩을 위해 요청된 자원보다 작거나 같은 것으로 판단되는 에이전트들은 모바일 단말(30)로부터 요청된 블록 오프로딩 처리를 수행하기 어려우므로 F-ACP(22)에 의해 요청된 경합에 참가하지 않는다(S270).
다음, 상기 단계(S260)에서의 컴퓨팅 유닛을 형성한 후 블록 오프로딩 처리를 수행하는 과정에 대해 도 7을 참조하여 설명한다.
도 7은 본 발명의 실시예에 따른 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 방법 중 모바일 포그에서의 컴퓨팅 유닛 형성 방법의 흐름도이다.
도 7을 참조하면, F-APC(22)가 경합에 참가하는 에이전트들로부터 각각 비드값을 수신한다(S261).
그 후, F-APC(22)는 수신된 비드값들 중에서 최대값을 갖는 에이전트를 오프로딩된 블록을 처리하는 기본 에이전트로 선택한다(S262). 여기서, 기본 에이전트로 선택되는 에이전트가 최대의 비드값을 가지므로써 결과적으로 해당 오프로딩 블록을 처리하는데 응답 시간이 가장 적은 에이전트인 것이다.
다음, 기본 에이전트는 호환되는 기본 블록들의 병렬 처리를 위해 다른 에이전트들에게 협력 요청을 방송한다(S263).
따라서, 기본 에이전트로 선택되지 않은 에이전트들은 기본 에이전트와의 병렬 처리가 가능한지를 판단하고, 가능하다면 협력 에이전트가 되는 협력 응답을 하고, 그렇지 않은 에이전트들은 협력 에이전트가 되지 못하는 협력 응답을 기본 에이전트로 보낼 것이다.
따라서, 기본 에이전트는 협력 요청에 대한 협력 응답을 다른 에이전트들로부터 수신한다(S264).
그 후, 협력이 가능한 에이전트가 q-1개보다 많은지를 판단한다(S265). 이것은 오프로딩된 q개의 블록 중 하나를 기본 에이전트가 처리하고, 나머지 q-1개의 기본 블록을 협력이 가능한 에이전트들이 모두 처리할 수 있는지를 판단하는 것이다.
만약 협력이 가능한 에이전트가 q-1개보다 많으면 협력이 가능한 에이전트들 중에서 비드값이 큰 순서로 q-1개의 에이전트를 q-1개의 오프로딩 블록을 처리할 협력 에이전트로 선택한다(S266).
그러나, 협력이 가능한 에이전트가 q-1개보다 많지 않으면, 즉 q-1개보다 적거나 같으면 협력이 가능한 에이전트 모두를 협력 에이전트로 선택한다(S268).
그리고, 기본 에이전트는 상기 단계(S266)에서 선택된 협력 에이전트 또는 상기 단계(S267)에서 선택된 협력 에이전트와 함께 컴퓨팅 유닛을 형성한다(S267).
이와 같이, 컴퓨팅 유닛이 형성되면, F-APC(22)는 모바일 단말(30)로부터 오프로딩된 블록을 컴퓨팅 유닛을 형성한 에이전트들에 해당되는 위치로 오프로딩하여 처리되도록 한다(S269).
그 후, F-APC(22)는 오프로딩 처리된 코드 블록의 처리 결과를 수신한 후 모바일 단말(30)로 전달함으로써 오프로딩 처리를 종료한다(S271).
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 모바일 단말이 애플리케이션의 코드를 복수의 기본 블록으로 분할한 후 일부 기본 블록을 모바일 포그(mobile fog)로 오프로딩하는 단계;
    상기 모바일 포그가 상기 모바일 단말로부터 오프로딩되는 기본 블록을 처리하기 위해 복수의 에이전트 중 기본 에이전트를 선택하는 단계; 및
    상기 기본 에이전트가 상기 오프로딩되는 기본 블록을 처리하는 단계를 포함하며,
    상기 복수의 에이전트는,
    상기 모바일 단말이 접속되는 모바일 포그에 속하는 포그 노드(fog node)의 위치인 제1 위치에서 상기 모바일 포그에 인접한 다른 모바일 포그의 위치인 제2 위치로의 마이그레이션을 통해 상기 기본 블록을 오프로딩하는 에이전트; 및
    상기 제1 위치에서 상기 모바일 포그가 통신 네트워크를 통해 접속되는 클라우드(cloud)의 위치인 제3 위치로의 마이그레이션을 통해 상기 기본 블록을 오프로딩하는 에이전트를 포함하며,
    상기 오프로딩하는 단계에서,
    상기 기본 블록의 실행을 위해 필요한 자원이 상기 모바일 단말에서 사용가능한 자원보다 큰 경우 상기 기본 블록의 오프로딩을 수행하되, 상기 모바일 단말이 상기 모바일 단말에서 사용가능한 자원을 사용하여 상기 기본 블록을 처리하는 경우에 예상되는 호스트 실행 시간을 결정하고, 상기 호스트 실행 시간이, 상기 모바일 단말에 의해 상기 모바일 포그로 요청되어 수신되는, 상기 모바일 포그의 사용가능한 자원을 사용하여 상기 기본 블록을 처리하는 경우에 예상되는 포그 실행 시간보다 더 큰 경우에 상기 기본 블록을 상기 모바일 포그로 오프로딩하는,
    모바일 포그 컴퓨팅 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 복수의 에이전트는,
    상기 제1 위치에 상기 기본 블록을 오프로딩하는 에이전트;
    상기 제2 위치에 상기 기본 블록을 오프로딩하는 에이전트; 및
    상기 제3 위치에 상기 기본 블록을 오프로딩하는 에이전트
    를 더 포함하는 모바일 포그 컴퓨팅 방법.
  4. 제3항에 있어서,
    상기 기본 에이전트를 선택하는 단계와 상기 기본 블록을 처리하는 단계 사이에,
    상기 기본 블록에 대해 병렬 처리가 가능한 기본 블록의 처리를 위해 상기 기본 에이전트가 상기 복수의 에이전트 중에서 협력 에이전트를 선택하는 단계; 및
    상기 기본 에이전트와 상기 협력 에이전트가 컴퓨팅 유닛을 형성하여 상기 오프로딩된 기본 블록을 처리하는 단계
    를 포함하는 모바일 포그 컴퓨팅 방법.
  5. 제4항에 있어서,
    상기 기본 에이전트를 선택하는 단계는,
    상기 복수의 에이전트가 자신이 관리하는 위치의 자원 정보를 사용하여 추정 응답 시간을 각각 산출하는 단계;
    상기 복수의 에이전트가 상기 추정 응답 시간을 사용하여 비드값을 각각 산출하는 단계; 및
    상기 모바일 포그가 상기 복수의 에이전트별로 산출되는 비드값을 사용하여 상기 기본 에이전트를 선택하는 단계
    를 포함하는 모바일 포그 컴퓨팅 방법.
  6. 제5항에 있어서,
    상기 추정 응답 시간을 각각 산출하는 단계 전에,
    상기 복수의 에이전트가 자신이 관리하는 위치의 가용 자원을 확인하는 단계; 및
    상기 복수의 에이전트가 상기 가용 자원과 상기 오프로딩되는 기본 블록의 처리를 위해 요청되는 자원을 비교하는 단계를 더 포함하며,
    상기 가용 자원이 상기 오프로딩되는 기본 블록의 처리를 위해 요청되는 자원보다 많은 위치를 담당하는 에이전트가 상기 추정 응답 시간을 각각 산출하는 단계를 수행하는
    것을 특징으로 하는 모바일 포그 컴퓨팅 방법.
  7. 제5항에 있어서,
    상기 협력 에이전트를 선택하는 단계는,
    상기 기본 에이전트가 다른 에이전트에게 협력을 요청하는 단계;
    상기 다른 에이전트로부터 협력 응답을 수신하는 단계; 및
    협력이 가능한 에이전트들 중에서 상기 협력 에이전트를 선택하는 단계
    를 포함하는 모바일 포그 컴퓨팅 방법.
  8. 제7항에 있어서,
    상기 협력이 가능한 에이전트들 중에서 상기 협력 에이전트를 선택하는 단계는,
    상기 협력이 가능한 에이전트들의 수가 상기 오프로딩되는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수보다 큰지를 판단하는 단계;
    상기 협력이 가능한 에이전트들의 수가 상기 오프로딩되는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수보다 크지 않은 경우, 상기 협력이 가능한 에이전트들 모두와 상기 기본 에이전트를 컴퓨팅 유닛으로 형성하는 단계; 및
    상기 협력이 가능한 에이전트들의 수가 상기 오프로딩되는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수보다 큰 경우, 상기 협력이 가능한 에이전트들 중에서 상기 비드값이 큰 순서로 오프로딩되는 기본 블록의 개수에서 상기 기본 에이전트가 처리 가능한 기본 블록의 수를 뺀 수만큼의 협력 에이전트를 선택하는 단계
    를 포함하는 모바일 포그 컴퓨팅 방법.
  9. 제1항에 있어서,
    상기 일부 기본 블록을 모바일 포그로 오프로딩하는 단계 전에,
    상기 모바일 단말이 애플리케이션 분석을 통해 기본 블록으로 분할하는 단계;
    상기 기본 블록의 실행을 통해 상기 기본 블록의 실행을 위한 자원 정보를 수집하는 단계;
    상기 모바일 단말에서 상기 기본 블록을 실행하는 경우의 호스트 실행 시간을 산출하는 단계;
    상기 기본 블록의 실행을 위한 자원 정보를 상기 모바일 포그로 전달하면서 상기 모바일 포그에서 실행하는 경우의 포그 실행 시간을 요청하는 단계;
    상기 모바일 포그로부터 전달되는 포그 실행 시간이 상기 호스트 실행 시간보다 작은 경우 분할된 기본 블록 중에서 오프로딩 가능한 기본 블록을 상기 모바일 포그로 오프로딩하는 단계
    를 포함하는 모바일 포그 컴퓨팅 방법.
  10. 제9항에 있어서,
    상기 자원 정보를 수집하는 단계와 상기 호스트 실행 시간을 산출하는 단계 사이에,
    상기 기본 블록의 실행을 위해 필요한 자원과 상기 모바일 단말에서 사용 가능한 자원을 비교하는 단계를 더 포함하며,
    상기 기본 블록의 실행을 위해 필요한 자원이 상기 모바일 단말에서 사용 가능한 자원보다 많은 경우 상기 호스트 실행 시간을 산출하는 단계를 수행하고,
    상기 기본 블록의 실행을 위해 필요한 자원이 상기 모바일 단말에서 사용 가능한 자원보다 많지 않은 경우 상기 모바일 단말이 상기 기본 블록을 처리하는
    것을 특징으로 하는 모바일 포그 컴퓨팅 방법.
  11. 제5항에 있어서,
    상기 추정 응답 시간(Eij)이 다음의 관계식
    Figure 112015128790018-pat00024

    여기서, E[N]은 상기 포그 노드 상에 있는 블록의 추정 개수이고,
    PK는 정상 상태 분포(steady-state distribution) 또는 큐 상에 있는 K블록을 발견하는 정상 확률(stationary probability)이며,
    Figure 112015128790018-pat00025
    는 사용률(utilization factor)이고,
    E[Q]는 상기 제2 위치에 있는 상기 모바일 포그의 추정 큐 길이이며,
    L1은 상기 제1 위치이고, L2는 상기 제2 위치이며, L3는 상기 제3 위치이고,
    L1,2는 L1과 L2 사이의 통신 지연이며, L1, 3는 L1과 L3 사이의 통신 지연이고,
    P0는 큐 상에 기본 블록이 없을 확률임
    을 사용하여 산출되는 모바일 포그 컴퓨팅 방법.
  12. 제11항에 있어서,
    상기 비드값(Bij)은 다음의 관계식
    Figure 112015128790018-pat00026

    여기서, ij는 각각 에이전트와 상기 에이전트의 위치를 나타내고,
    Figure 112015128790018-pat00027
    는 에이전트 ai의 비딩의 위험 인자로 불리는 작은 상수이며,
    Figure 112015128790018-pat00028
    는 정규화 상수(normalization constant)임
    을 사용하여 산출되는 모바일 포그 컴퓨팅 방법.
  13. 애플리케이션의 코드를 복수의 기본 블록으로 분할한 후 일부 기본 블록을 모바일 포그(mobile fog)로 오프로딩하는 모바일 단말; 및
    상기 모바일 단말로부터 오프로딩되는 기본 블록을 처리하기 위해 복수의 에이전트 중 기본 에이전트와 협력 에이전트를 선택하고, 상기 기본 에이전트와 상기 협력 에이전트를 컴퓨팅 유닛으로 형성하여 상기 오프로딩되는 기본 블록을 분산 처리하도록 제어하는 모바일 포그를 포함하며,
    상기 복수의 에이전트는,
    상기 모바일 단말이 접속되는 모바일 포그에 속하는 포그 노드(fog node)의 위치인 제1 위치에서 상기 모바일 포그에 인접한 다른 모바일 포그의 위치인 제2 위치로의 마이그레이션을 통해 상기 기본 블록을 오프로딩하는 에이전트; 및
    상기 제1 위치에서 상기 모바일 포그가 통신 네트워크를 통해 접속되는 클라우드(cloud)의 위치인 제3 위치로의 마이그레이션을 통해 상기 기본 블록을 오프로딩하는 에이전트를 포함하며,
    상기 모바일 단말은 상기 기본 블록의 실행을 위해 필요한 자원이 상기 모바일 단말에서 사용가능한 자원보다 큰 경우 상기 기본 블록의 오프로딩을 수행하되, 상기 모바일 단말에서 사용가능한 자원을 사용하여 상기 기본 블록을 처리하는 경우에 예상되는 호스트 실행 시간을 결정하고, 상기 호스트 실행 시간이, 상기 모바일 단말에 의해 상기 모바일 포그로 요청되어 수신되는, 상기 모바일 포그의 사용가능한 자원을 사용하여 상기 기본 블록을 처리하는 경우에 예상되는 포그 실행 시간보다 더 큰 경우에 상기 기본 블록을 상기 모바일 포그로 오프로딩하는,
    모바일 포그 컴퓨팅 시스템.
  14. 제13항에 있어서,
    상기 모바일 단말은,
    애플리케이션의 하이레벨 언어를 기계가 이해 가능한 형태의 로우레벨 언어로 변환한 후, 상기 로우레벨 언어를 복수의 기본 블록으로 분할하는 컴파일러부; 및
    상기 컴파일러부에 의해 제공되는 애플리케이션의 기본 블록들을 사용하여 애플리케이션 실행을 위한 오프로딩(offloading) 여부를 판단하고, 오프로딩이 필요한 경우 모바일 포그에게 기본 블록의 코드 오프로딩을 요청하고, 코드 오프로딩된 기본 블록의 실행 결과를 수신하는 애플리케이션 관리부
    를 포함하는 모바일 포그 컴퓨팅 시스템.
  15. 제14항에 있어서,
    상기 컴파일러부는,
    애플리케이션의 하이레벨 언어에 대해 문법, 의미 해석을 수행하여 중간 코드를 생성하는 프론트 엔드; 및
    상기 프론트 엔드에 의해 생성되는 중간 코드에 대해 바이트 코드를 생성하고, 독립적인 바이트 코드 신택스를 통해서 로우레벨 언어의 코드를 복수의 기본 블록으로 분할한 후 그룹핑하며, 그룹핑된 기본 블록으로부터 플로우 그래프를 생성하는 백 엔드
    를 포함하는 모바일 포그 컴퓨팅 시스템.
  16. 제14항에 있어서,
    상기 애플리케이션 관리부는,
    상기 애플리케이션의 실행을 통해 상기 기본 블록의 실행시 요구되는 자원 정보를 수집함과 동시에 오프로딩 가능한 기본 블록을 확인하는 실행 분석기; 및
    상기 실행 분석기에 의해 확인되는 오프로딩 가능한 기본 블록의 오프로딩 여부를 판단하며, 오프로딩이 가능한 경우 해당 기본 블록과 상기 기본 블록의 실행에 요구되는 자원 정보를 모바일 포그로 전달하면서 코드 오프로딩을 요청하는 코드 오프로더
    를 포함하는 모바일 포그 컴퓨팅 시스템.
  17. 제16항에 있어서,
    상기 코드 오프로더는 상기 모바일 단말과 상기 모바일 포그 중에서 상기 오프로딩 가능한 기본 블록의 실행에 필요한 시간이 적게 산출되는 곳에서 상기 오프로딩 가능한 기본 블록이 실행되도록 제어하는 모바일 포그 컴퓨팅 시스템.
  18. 제17항에 있어서,
    상기 모바일 포그의 포그 제어기는,
    상기 복수의 에이전트를 관리하며, 상기 모바일 단말로부터 오프로딩되는 기본 블록을 처리하기 위해 상기 복수의 에이전트 중 상기 기본 에이전트와 상기 협력 에이전트를 선택하고, 상기 기본 에이전트와 상기 협력 에이전트를 컴퓨팅 유닛으로 형성하는 멀티 에이전트부;
    상기 멀티 에이전트부에 의해 형성되는 컴퓨팅 유닛에 속하는 에이전트 정보에 따라서 해당 위치로 상기 오프로딩되는 기본 블록을 오프로딩하여 처리되도록 제어하는 코드 오프로딩부; 및
    상기 멀티 에이전트부와 상기 코드 오프로딩부를 제어하여 상기 모바일 단말에서 오프로딩되는 기본 블록을 상기 기본 에이전트와 상기 컴퓨팅 유닛을 통해 오프로딩하여 처리하는 제어부
    를 포함하는 모바일 포그 컴퓨팅 시스템.
  19. 제18항에 있어서,
    상기 멀티 에이전트부는 상기 복수의 에이전트가 자신이 담당하는 위치에서 사용 가능한 자원 정보를 사용하여 각각 추정 응답 시간을 산출하고, 산출되는 추정 응답 시간을 사용하여 상기 복수의 에이전트에 해당되는 비드값을 산출하며,
    상기 제어부는 상기 복수의 에이전트별 비드값에 기초하여 상기 오프로딩되는 기본 블록을 처리할 기본 에이전트와 상기 기본 에이전트에 협력할 협력 에이전트를 선택하는
    것을 특징으로 하는 모바일 포그 컴퓨팅 시스템.
  20. 제19항에 있어서,
    상기 기본 에이전트는 다른 에이전트들 중에서 협력이 가능한 에이전트들 중에서 상기 협력 에이전트를 선택하는 것을 특징으로 하는 모바일 포그 컴퓨팅 시스템.
KR1020150189609A 2015-12-15 2015-12-30 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법 KR101773593B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150179546 2015-12-15
KR20150179546 2015-12-15

Publications (2)

Publication Number Publication Date
KR20170071381A KR20170071381A (ko) 2017-06-23
KR101773593B1 true KR101773593B1 (ko) 2017-08-31

Family

ID=59283587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150189609A KR101773593B1 (ko) 2015-12-15 2015-12-30 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR101773593B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190078993A (ko) * 2017-12-27 2019-07-05 인천대학교 산학협력단 포그 컴퓨팅을 이용한 상황 기반 모바일 학습 장치 및 방법
KR20190081323A (ko) 2017-12-29 2019-07-09 (주) 유노믹 포그 클라우드 연동 데이터 전송 방법
US11481655B2 (en) 2018-11-27 2022-10-25 Electronics And Telecommunications Research Institute System and method of hyperconnected and distributed processing for intelligent information

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102214231B1 (ko) * 2019-05-17 2021-02-09 군산대학교산학협력단 오프로딩을 수행하기 위한 모바일 장치 및 그 동작 방법
KR102177432B1 (ko) * 2019-05-29 2020-11-11 연세대학교 산학협력단 포그 컴퓨팅 기반 무선 네트워크에서 태스크 우선순위별 연산량 오프로딩 장치 및 방법
KR102389665B1 (ko) * 2019-11-25 2022-04-25 경희대학교 산학협력단 다중 통신 서비스에서 에너지 효율적인 통신 및 계산 자원 할당 프레임워크 구축 장치 및 방법
KR102547103B1 (ko) * 2021-10-28 2023-06-23 한국전자기술연구원 oneM2M 플랫폼 기반 컴퓨팅 오프로딩 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507028A (ja) 2011-01-27 2014-03-20 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システムにおけるアプリケーション処理の管理のための方法、システム、コンピュータ・プログラム
US20150181460A1 (en) 2013-12-20 2015-06-25 Cisco Technology, Inc. Dynamic coding for network traffic by fog computing node
KR101574026B1 (ko) 2014-12-17 2015-12-03 경희대학교 산학협력단 포그 컴퓨팅 네트워크를 이용한 사물 인터넷 네트워크

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507028A (ja) 2011-01-27 2014-03-20 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システムにおけるアプリケーション処理の管理のための方法、システム、コンピュータ・プログラム
US20150181460A1 (en) 2013-12-20 2015-06-25 Cisco Technology, Inc. Dynamic coding for network traffic by fog computing node
KR101574026B1 (ko) 2014-12-17 2015-12-03 경희대학교 산학협력단 포그 컴퓨팅 네트워크를 이용한 사물 인터넷 네트워크

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Dai Hoang Tran 외 5명. 'Offload as a Service in Fog computing Environment A novel approach'. 한국정보과학회 2015 한국컴퓨터종합학술대회 논문집, 2015.06, pp.1130-1132.
Md.Golam Rabiul Alam 외 7명. 'Distributed Reinforcement Learning based Code Offloading in Mobile Fog'. 2014 한국정보과학회 제41회 정기총회 및 동계학술발표회, 2014.12, pp.285-287.*

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190078993A (ko) * 2017-12-27 2019-07-05 인천대학교 산학협력단 포그 컴퓨팅을 이용한 상황 기반 모바일 학습 장치 및 방법
KR102008786B1 (ko) * 2017-12-27 2019-08-08 인천대학교 산학협력단 포그 컴퓨팅을 이용한 상황 기반 모바일 학습 장치 및 방법
KR20190081323A (ko) 2017-12-29 2019-07-09 (주) 유노믹 포그 클라우드 연동 데이터 전송 방법
US11481655B2 (en) 2018-11-27 2022-10-25 Electronics And Telecommunications Research Institute System and method of hyperconnected and distributed processing for intelligent information

Also Published As

Publication number Publication date
KR20170071381A (ko) 2017-06-23

Similar Documents

Publication Publication Date Title
KR101773593B1 (ko) 멀티-에이전트 기반 코드 오프로딩을 수행하는 모바일 포그 컴퓨팅 시스템 및 그 방법
US11503113B2 (en) Task offloading and routing in mobile edge cloud networks
Liu et al. A computation offloading algorithm based on game theory for vehicular edge networks
CN113261244B (zh) 联合mec主机和upf选择的网络节点
CN108463805B (zh) 用于移动边缘计算的用户设备选择
US11330511B2 (en) Method and system for multi-access edge computing (MEC) selection and load balancing
US20140379928A1 (en) Method for implementing network using distributed virtual switch, apparatus for performing the same, and network system based on distributed virtual switch
US20150032495A1 (en) System and Method for User Controlled Cost Based Network and Path Selection across Multiple Networks
Chiha et al. Network slicing cost allocation model
US11601343B2 (en) Dynamic adaptive network
CN110177055B (zh) 一种边缘计算场景下边缘域资源的预分配方法
CN113316158B (zh) 一种部署应用实例的方法、装置及可读存储介质
CN114157667A (zh) 一种面向网关设备的算力网络服务系统及方法
JP2019506809A (ja) 協働する仮想化ネットワーク機能
Akter et al. Q-MAC: QoS and mobility aware optimal resource allocation for dynamic application offloading in mobile cloud computing
Li et al. Federated orchestration for network slicing of bandwidth and computational resource
CN113453252B (zh) 通信方法及装置
Chowdhury Servant: a user service requirements, timeslot sacrifice, and triple benefit-aware resource and worker provisioning scheme for digital twin and MEC enhanced 6G networks
Laroui et al. Virtual mobile edge computing based on IoT devices resources in smart cities
Alfa et al. Performance analysis of multi-modal overlay/underlay switching service levels in cognitive radio networks
EP3721646A1 (en) Control device configured for and method of determining a data format
CN113783963A (zh) 数据传输方法、服务器节点、网关设备、网络系统
Sarddar et al. A novel approach on weight based optimized routing for mobile cloud computing
Wang et al. Resource allocation for edge computing over fibre‐wireless access networks
KR102033339B1 (ko) 다중자원 인프라구조 관리 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant