KR20190114541A - 애플리케이션 오프로딩 장치 및 방법 - Google Patents
애플리케이션 오프로딩 장치 및 방법 Download PDFInfo
- Publication number
- KR20190114541A KR20190114541A KR1020180037406A KR20180037406A KR20190114541A KR 20190114541 A KR20190114541 A KR 20190114541A KR 1020180037406 A KR1020180037406 A KR 1020180037406A KR 20180037406 A KR20180037406 A KR 20180037406A KR 20190114541 A KR20190114541 A KR 20190114541A
- Authority
- KR
- South Korea
- Prior art keywords
- offloading
- application
- execution
- environment information
- server
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
애플리케이션 오프로딩 장치 및 방법이 개시된다. 본 발명의 일 실시예에 따른 애플리케이션 오프로딩 장치는 애플리케이션의 실행과 관련된 정적 환경 정보 및 동적 환경 정보를 수집하는 모니터링부, 상기 애플리케이션의 실행을 위한 함수들 중 하나 이상의 오프로딩(offloading) 후보 함수를 식별하고, 상기 정적 환경 정보 및 상기 동적 환경 정보에 기초하여 상기 하나 이상의 오프로딩 후보 함수 중 오프로딩 대상 함수를 결정하는 오프로딩 결정부 및 상기 오프로딩 대상 함수 실행을 위한 상기 애플리케이션의 상태 정보를 수집하고, 상기 상태 정보를 오프로딩 서버로 전송하여 상기 오프로딩 서버로 상기 오프로딩 대상 함수의 실행을 요청하며, 상기 오프로딩 서버로부터 상기 오프로딩 대상 함수에 대한 실행 결과를 수신하는 오프로딩 요청부를 포함한다.
Description
본 발명의 실시예들은 애플리케이션 실행을 위한 오프로딩 기술과 관련된다.
오큘러스 리프트(oculus lift) 및 VR 기어(gear)와 같은 가상현실 체험 기기의 등장으로 인해 모바일 기기 시장은 급격한 패러다임의 변화를 맞게 되었다. 기존 음악 감상이나 동영상 시청, 사진 촬영과 같은 소비자 시장에서부터 의료, 부동산, 기타 산업 전반에 이르기까지 전문가 그룹의 독립적인 기능들이 가상현실 체험 기기를 중심으로 통합되는 동시에 가상현실 체험 기기를 위한 플랫폼이 등장하게 되었다. 이에 따라, 개발자들이 이러한 기능들을 효과적으로 이용하여 기존에 비해 훨씬 다양하고 복잡한 애플리케이션을 제작할 수 있게 되었고, 사용자들의 눈높이 또한 점점 더 높아지면서 보다 더 빠르고 복잡한 애플리케이션에 대한 요구가 점점 증가하게 되었다.
이처럼 애플리케이션의 기능이 나날이 복잡하고 강력해지고 이에 대한 사용자의 요구 또한 나날이 증가하고 있는데 비해 모바일 기기는 크기, 발열 구조, 배터리 등과 같은 제약으로 인해 비약적인 성능 향상을 기대하기 어려운 것이 현실이다. 따라서, 제한적인 성능을 가진 모바일 기기에서 고성능을 요구하는 애플리케이션을 원활하게 실행되도록 하기 위한 방안이 요구되고 있다.
본 발명의 실시예들은 애플리케이션 오프로딩 장치 및 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 애플리케이션 오프로딩 장치는, 애플리케이션의 실행과 관련된 정적 환경 정보 및 동적 환경 정보를 수집하는 모니터링부, 상기 애플리케이션의 실행을 위한 함수들 중 하나 이상의 오프로딩(offloading) 후보 함수를 식별하고, 상기 정적 환경 정보 및 상기 동적 환경 정보에 기초하여 상기 하나 이상의 오프로딩 후보 함수 중 오프로딩 대상 함수를 결정하는 오프로딩 결정부 및 상기 오프로딩 대상 함수 실행을 위한 상기 애플리케이션의 상태 정보를 수집하고, 상기 상태 정보를 오프로딩 서버로 전송하여 상기 오프로딩 서버로 상기 오프로딩 대상 함수의 실행을 요청하며, 상기 오프로딩 서버로부터 상기 오프로딩 대상 함수에 대한 실행 결과를 수신하는 오프로딩 요청부를 포함한다.
상기 오프로딩 결정부는, 상기 애플리케이션 실행 전 상기 정적 환경 정보에 기초하여 상기 하나 이상의 오프로딩 후보 함수 각각에 대한 오프로딩 여부를 포함하는 분기 시나리오를 생성하는 정적 오프로딩 결정부 및 상기 분기 시나리오를 저장하는 시나리오 DB를 포함할 수 있다.
상기 오프로딩 결정부는, 상기 애플리케이션 실행 중 상기 동적 환경 정보에 기초하여 상기 분기 시나리오를 수정하고, 상기 수정된 분기 시나리오에 기초하여 상기 오프로딩 대상 함수를 결정하는 동적 오프로딩 결정부를 더 포함할 수 있다.
상기 오프로딩 결정부는, 사전 삽입된 코드에 기초하여, 상기 애플리케이션 실행을 위한 함수들 중 상기 하나 이상의 오프로딩 후보 함수를 식별할 수 있다.
상기 정적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행에 의해 변동되지 않는 정보 및 상기 애플리케이션 실행 전 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함할 수 있다.
상기 동적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행 중 변동되는 정보 및 상기 애플리케이션 실행 중 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함할 수 있다.
본 발명의 일 실시예에 따른 애플리케이션 오프로딩 방법은, 상기 애플리케이션의 실행과 관련된 정적 환경 정보를 수집하는 단계, 상기 애플리케이션의 실행을 위한 함수들 중 하나 이상의 오프로딩(offloading) 후보 함수를 식별하는 단계, 상기 정적 환경 정보에 기초하여 상기 하나 이상의 오프로딩 후보 함수 각각에 대한 오프로딩 여부를 포함하는 분기 시나리오를 생성하는 단계, 상기 애플리케이션의 실행과 관련된 동적 환경 정보를 수집하는 단계, 상기 동적 환경 정보에 기초하여 상기 분기 시나리오를 수정하는 단계, 상기 수정된 분기 시나리오에 기초하여 상기 하나 이상의 오프로딩 후보 함수 중 오프로딩 대상 함수를 결정하는 단계, 상기 오프로딩 대상 함수 실행을 위한 상기 애플리케이션의 상태 정보를 수집하는 단계, 상기 상태 정보를 오프로딩 서버로 전송하여 상기 오프로딩 서버로 상기 오프로딩 대상 함수의 실행을 요청하는 단계 및 상기 오프로딩 서버로부터 상기 오프로딩 대상 함수에 대한 실행 결과를 수신하는 단계를 포함한다.
상기 생성하는 단계는, 상기 애플리케이션의 실행 전 상기 분기 시나리오를 생성할 수 있다.
상기 수정하는 단계는, 상기 애플리케이션 실행 중 상기 분기 시나리오를 수정할 수 있다.
상기 식별하는 단계는, 사전 삽입된 코드에 기초하여, 상기 애플리케이션 실행을 위한 함수들 중 상기 하나 이상의 오프로딩 후보 함수를 식별할 수 있다.
상기 정적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행에 의해 변동되지 않는 정보 및 상기 애플리케이션 실행 전 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함할 수 있다.
상기 동적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행 중 변동되는 정보 및 상기 애플리케이션 실행 중 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함할 수 있다.
본 발명의 실시예들에 따르면, 애플리케이션 실행 전에 수집되는 환경 정보뿐 아니라 애플리케이션 실행 중에 수집되는 환경 정보를 이용하여 애플리케이션 실행 중 높은 연산량이 요구되는 함수에 대한 오프로딩을 동적으로 수행할 수 있도록 함으로써, 모바일 장치와 같이 배터리나 성능에 제약이 있는 장치에서도 고성능을 요구하는 애플리케이션이 원활하게 실행되도록 할 수 있다.
도 1은 본 발명의 일 실시예에 따른 오프로딩을 이용한 애플리케이션 실행 환경을 나타낸 예시도
도 2는 본 발명이 일 실시예에 따른 애플리케이션 오프로딩 장치의 구성도
도 3은 본 발명의 일 실시예에 따른 오프로딩 결정부의 구성도
도 4는 본 발명의 일 실시예에 따른 애플리케이션 오프로딩 방법의 순서도
도 2는 본 발명이 일 실시예에 따른 애플리케이션 오프로딩 장치의 구성도
도 3은 본 발명의 일 실시예에 따른 오프로딩 결정부의 구성도
도 4는 본 발명의 일 실시예에 따른 애플리케이션 오프로딩 방법의 순서도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 오프로딩을 이용한 애플리케이션 실행 환경을 나타낸 예시도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 애플리케이션 실행 환경(100)은 애플리케이션 실행 장치(110) 및 오프로딩 서버(120)를 포함한다.
애플리케이션 실행 장치(110)는 애플리케이션 실행 장치(110)에 설치된 애플리케이션을 실행하고, 애플리케이션 실행 중 오프로딩(offloading)이 필요한 함수를 오프로딩 서버(120)로 오프로딩하기 장치이다. 이때, '오프로딩'은 애플리케이션 실행 장치(110)가 애플리케이션 실행 중 특정 함수의 실행을 오프로딩 서버(120)로 위탁하여, 오프로딩 서버(120)로부터 해당 함수에 대한 실행 결과를 반환 받는 것을 의미한다.
한편, 애플리케이션 실행 장치(110)는 예를 들어, 랩톱 PC, 태블릿 PC, 패블릿(phablet), 스마트 폰 등과 같이 배터리 용량에 제약이 있거나, 고성능의 프로세서(예를 들어, CPU, GPU 등)를 내장하고 있지 않은 휴대용 장치일 수 있다. 그러나, 애플리케이션 실행 장치(110)는 상술한 예 외에도 애플리케이션 실행을 위한 연산 기능과 유무선 네트워크를 통한 통신 기능을 구비한 다양한 형태의 장치일 수 있다.
오프로딩 서버(120)는 애플리케이션 실행 장치(110)로부터 오프로딩 요청된 함수를 실행하여 그 결과를 애플리케이션 실행 장치(110)로 제공하기 위한 장치이다. 구체적으로, 오프로딩 서버(120)에는 애플리케이션 실행 장치(110)로부터 오프로딩 요청된 함수를 실행하기 위한 서버 측 애플리케이션이 설치될 수 있다. 이때, 서버 측 애플리케이션은 실시예에 따라 오프로딩 서버(120)의 가상 머신 상에서 실행되거나, 도커(docker) 컨테이너(container) 기술을 이용하여 실행될 수 있다.
한편, 오프로딩 서버(120)는 예를 들어, 데스크톱 PC일 수 있으나 반드시 이에 한정되는 것은 아니며, 애플리케이션 실행 장치(110)와 유무선 네트워크를 통해 통신 가능하며, 애플리케이션 실행 장치(120) 보다 고성능의 프로세서를 내장하고 있는 다양한 형태의 장치일 수 있다. 또한, 실시예에 따라, 오프로딩 서버(120)는 애플리케이션 실행 장치(110)를 이용하여 유무선 네트워크를 통해 접근 가능하며, 애플리케이션 실행 장치(110)로 클라우드 컴퓨팅 서비스을 제공하는 서버일 수도 있다.
한편, 도 1에 도시된 애플리케이션 실행 환경(100)의 구성은 반드시 상술한 예에 한정되는 것은 아니다. 즉, 애플리케이션 실행 환경(100)은 애플리케이션 실행 장치(110)에서 실행되는 애플리케이션의 종류에 따라 도시되지 않은 추가적이 구성을 더 포함할 수 있다. 예를 들어, 애플리케이션 실행 장치(110)에서 수행되는 애플리케이션이 온라인 게임 애플리케이션인 경우, 해당 게임 애플리케이션을 통해 애플리케이션 실행 장치(110)로 온라인 게임 서비스를 제공하기 위한 게이밍 서버(미도시)를 더 포함할 수 있다.
또한, 도 1에 도시된 예에서는 애플리케이션 실행 환경(100)에 포함된 오프로딩 서버(120)가 하나인 것으로 도시하고 있으나 반드시 이에 한정되는 것은 아니며, 실시예에 따라 오프로딩 서버(120)는 하나 이상 존재할 수 있다.
도 2는 본 발명이 일 실시예에 따른 애플리케이션 오프로딩 장치의 구성도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 애플리케이션 오프로딩 장치(200)는 모니터링부(210), 오프로딩 결정부(220) 및 오프로딩 요청부(230)를 포함한다.
한편, 도 2에 도시된 애플리케이션 오프로딩 장치(200)는 예를 들어, 도 1에 도시된 애플리케이션 실행 장치(110)이거나 애플리케이션 실행 장치(110)에 포함된 일부 구성으로 구현될 수 있다.
모니터링부(210)는 애플리케이션 실행과 관련된 정적 환경 정보 및 동적 환경 정보를 수집한다.
이때, 정적 환경 정보는 예를 들어, 애플리케이션 실행 장치(110) 및 오프로딩 서버(120)의 프로세서(예를 들어, CPU, GPU 등) 사양, 메모리 크기, 저장 공간의 크기 등과 같이 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 애플리케이션의 실행에 의해 변동되지 않는 정보들을 포함할 수 있다.
또한, 정적 환경 정보는 예를 들어, 애플리케이션 실행 장치(110)와 오프로딩 서버(120) 사이의 네트워크 연결 여부, 네트워크 대역폭, RTT(Round Trip Time) 등과 같이 애플리케이션 실행 전 수집된 애플리케이션 실행 장치(110) 및 오프로딩 서버(120) 사이의 네트워크 연결 상태와 관련된 정보를 포함할 수 있다.
한편, 동적 환경 정보는 예를 들어, 애플리케이션 실행 장치(110) 및 오프로딩 서버(120)의 프로세서(예를 들어, CPU, GPU 등) 사용량, 메모리 사용량, 저장 공간 사용량, 애플리케이션 실행 장치(110)의 배터리 잔량 등과 같이 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 애플리케이션의 실행 중 변동되는 정보들을 포함할 수 있다.
또한, 동적 환경 정보는 예를 들어, 애플리케이션 실행 장치(110)와 오프로딩 서버(120) 사이의 네트워크 연결 여부, 네트워크 대역폭, RTT(Round Trip Time) 등과 같이 애플리케이션 실행 중 수집된 애플리케이션 실행 장치(110) 및 오프로딩 서버(120) 사이의 네트워크 연결 상태와 관련된 정보를 포함할 수 있다.
한편, 정적 환경 정보는 애플리케이션 실행 전 또는 애플리케이션 실행 시점에 수집될 수 있으며, 동적 환경 정보는 애플리케이션 실행 중에 실시간으로 수집되거나 기 설정된 주기에 따라 수집될 수 있다.
오프로딩 결정부(220)는 애플리케이션 실행을 위한 함수들 중 하나 이상의 오프로딩 후보 함수를 식별하고, 모니터링부(210)에 의해 수집된 정적 환경 정보 및 동적 환경 정보에 기초하여 오프로딩 후보 함수 중 오프로딩 대상 함수를 결정한다.
구체적으로, 본 발명의 일 실시예에 따르면, 애플리케이션 실행 장치(110)에 설치된 애플리케이션은 예를 들어, 분기 명령어와 같이 오프로딩 후보 함수를 식별하기 위한 코드를 포함할 수 있다. 이때, 코드는 예를 들어, 애플리케이션 개발 과정에서 애플리케이션 개발자에 의해 사전에 삽입될 수 있으며, 오프로딩 결정부(220)는 해당 코드에 기초하여 오프로딩 후보 함수를 식별할 수 있다.
한편, 오프로딩 후보 함수 각각에 대한 실제 오프로딩 요청 여부는 정적 환경 정보 및 동적 환경 정보에 기초하여 생성된 분기 시나리오에 의해 결정될 수 있다.
구체적으로, 도 3은 본 발명의 일 실시예에 따른 오프로딩 결정부(220)의 구성도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 오프로딩 결정부(220)는 정적 오프로딩 결정부(221), 시나리오 DB(222) 및 동적 오프로딩 결정부(223)를 포함할 수 있다.
정적 오프로딩 결정부(221)는 애플리케이션 실행 전 모니터링부(210)에 의해 수집된 정적 환경 정보에 기초하여 오프로딩 후보 함수 각각에 대한 오프로딩 여부를 포함하는 분기 시나리오를 생성하여 시나리오 DB(222)에 저장할 수 있다.
구체적으로, 정적 오프로딩 결정부(221)는 정적 환경 정보에 기초하여 각 오프로딩 후보 함수가 애플리케이션 실행 장치(110)에서 실행될 경우 및 오프로딩 서버(120)로 오프로딩될 경우 각각에 대한 실행 비용을 산출할 수 있다. 또한, 정적 오프로딩 결정부(221)는 산출된 실행 비용에 기초하여 특정 오프로딩 후보 함수를 오프로딩 서버(120)로 오프로딩하는 것이 유리한 경우 해당 오프로딩 후보 함수가 오프로딩 서버(120)로 오프로딩되도록 분기 시나리오를 생성할 수 있다. 이때, 실행 비용은 예를 들어, 에너지 소모량, 실행 소요 시간 중 적어도 하나를 포함할 수 있다.
또한, 정적 오프로딩 결정부(221)는 정적 환경 정보에 기초하여 애플리케이션 실행 장치(110)와 유무선 네트워크를 통해 연결된 오프로딩 서버(120)가 존재하지 않거나, 애플리케이션 실행 장치(110)에서 유무선 네트워크를 이용할 수 없는 경우, 모든 오프로딩 후보 함수가 애플리케이션 실행 장치(110)에서 실행되도록 분기 시나리오를 생성할 수 있다.
한편, 동적 오프로딩 결정부(223)는 애플리케이션 실행 중 수집된 동적 환경 정보에 기초하여 시나리오 DB(222)에 저장된 분기 시나리오를 수정하고, 수정된 분기 시나리오에 기초하여 오프로딩 대상 함수를 결정할 수 있다.
즉, 애플리케이션 실행 장치(110)와 오프로딩 서버(120)의 CPU 사용량, 메모리 점유량, 애플리케이션 실행 장치(110)와 오프로딩 서버(120) 사이의 네트워크 상태 등은 애플리케이션 실행 중 동적으로 변동될 수 있다. 따라서, 애플리케이션 실행 전 정적 오프로딩 결정부(210)에 의해 생성되어 시나리오 DB(222)에 저장된 분기 시나리오는 애플리케이션 실행 중 동적 환경 정보에 기초하여 동적 오프로딩 결정부(223)에 의해 수정될 수 있다. 또한, 애플리케이션 실행 중 특정 오프로딩 후보 함수가 오프로딩 서버(220)로 오프로딩될 오프로딩 대상 함수인지 여부는 현재 시나리오 DB(222)에 저장된 분기 시나리오에 의해 결정된다.
구체적으로, 동적 오프로딩 결정부(223)는 애플리케이션 실행 중 모니터링부(210)에 의해 수집된 동적 환경 정보에 기초하여 각 오프로딩 후보 함수가 애플리케이션 실행 장치(110)에서 실행될 경우 및 오프로딩 서버(120)로 오프로딩될 경우 각각에 대한 실행 비용을 산출할 수 있다. 또한, 동적 오프로딩 결정부(223)는 산출된 실행 비용에 기초하여 특정 오프로딩 후보 함수를 오프로딩 서버(120)로 오프로딩하는 것이 유리한 경우 해당 오프로딩 후보 함수가 오프로딩 서버(120)로 오프로딩 되도록 분기 시나리오를 변경할 수 있다. 이때, 실행 비용은 예를 들어, 에너지 소모량, 실행 소요 시간 중 적어도 하나를 포함할 수 있다.
다시 도 2를 참조하면, 오프로딩 요청부(230)는 오프로딩 대상 함수의 실행을 위한 애플리케이션의 상태 정보를 수집하고 수집된 상태 정보를 오프로딩 서버(120)로 전송하여 오프로딩 대상 함수의 실행을 요청한다.
이때, 상태 정보는 예를 들어, 힙 오브젝트(heap object), 스택(stack) 자료 구조 등과 같이 오프로딩 서버(120)에서 오프로딩 대상 함수를 실행하기 위해 요구되는 다양한 정보들을 포함할 수 있다.
한편, 오프로딩 요청부(230)는 오프로딩 서버(120)로 오프로딩 대상 함수의 실행을 요청한 후, 오프로딩 서버(120)로부터 해당 함수의 실행 결과를 수신한다.
도 4는 본 발명의 일 실시예에 따른 애플리케이션 오프로딩 방법의 순서도이다.
도 4에 도시된 방법은 예를 들어, 도 2에 도시된 애플리케이션 오프로딩 장치(200)에 의해 수행될 수 있다.
도 4를 참조하면, 우선, 애플리케이션 오프로딩 장치(200)는 애플리케이션 실행과 관련된 정적 환경 정보를 수집한다(401).
이후, 애플리케이션 오프로딩 장치(200)는 애플리케이션 실행을 위한 함수들 중 하나 이상의 오프로딩 후보 함수를 식별한다(402).
이후, 애플리케이션 오프로딩 장치(200)는 수집된 정적 환경 정보에 기초하여, 오프로딩 후보 함수 각각에 대한 오프로딩 여부를 포함하는 분기 시나리오를 생성한다(403).
이후, 애플리케이션 오프로딩 장치(200)는 애플리케이션 실행과 관련된 동적 환경 정보를 수집한다(404).
이후, 애플리케이션 오프로딩 장치(200)는 수집된 동적 환경 정보에 기초하여 분기 시나리오를 수정한다(405).
이후, 애플리케이션 오프로딩 장치(200)는 수정된 분기 시나리오에 기초하여, 오프로딩 후보 함수 중 오프로딩 대상 함수를 결정한다(406).
이후, 애플리케이션 오프로딩 장치(200)는 오프로딩 대상 함수 실행을 위한 애플리케이션의 상태 정보를 수집한다(407).
이후, 애플리케이션 오프로딩 장치(200)는 수집된 상태 정보를 오프로딩 서버(120)로 전송하여 오프로딩 서버(120)로 오프로딩 대상 함수의 실행을 요청한다(408).
이후, 애플리케이션 오프로딩 장치(200)는 오프로딩 서버(120)로부터 오프로딩 대상 함수에 대한 실행 결과를 수신한다(409).
한편, 도 4에 도시된 순서도에서 401 단계 내지 403 단계는 애플리케이션 실행 전에 수행될 수 있으며, 404 단계 내지 409 단계는 애플리케이션 실행 중에 수행될 수 있다.
또한, 도 4에 도시된 순서도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 애플리케이션 실행 환경
110: 애플리케이션 실행 장치
120: 오프로딩 서버
200: 애플리케이션 오프로딩 장치
210: 모니터링부
220: 오프로딩 결정부
221: 정적 오프로딩 결정부
222: 시나리오 DB
223: 동적 오프로딩 결정부
230: 오프로딩 요청부
110: 애플리케이션 실행 장치
120: 오프로딩 서버
200: 애플리케이션 오프로딩 장치
210: 모니터링부
220: 오프로딩 결정부
221: 정적 오프로딩 결정부
222: 시나리오 DB
223: 동적 오프로딩 결정부
230: 오프로딩 요청부
Claims (12)
- 애플리케이션의 실행과 관련된 정적 환경 정보 및 동적 환경 정보를 수집하는 모니터링부;
상기 애플리케이션의 실행을 위한 함수들 중 하나 이상의 오프로딩(offloading) 후보 함수를 식별하고, 상기 정적 환경 정보 및 상기 동적 환경 정보에 기초하여 상기 하나 이상의 오프로딩 후보 함수 중 오프로딩 대상 함수를 결정하는 오프로딩 결정부; 및
상기 오프로딩 대상 함수 실행을 위한 상기 애플리케이션의 상태 정보를 수집하고, 상기 상태 정보를 오프로딩 서버로 전송하여 상기 오프로딩 서버로 상기 오프로딩 대상 함수의 실행을 요청하며, 상기 오프로딩 서버로부터 상기 오프로딩 대상 함수에 대한 실행 결과를 수신하는 오프로딩 요청부를 포함하는 애플리케이션 오프로딩 장치.
- 청구항 1에 있어서,
상기 오프로딩 결정부는, 상기 애플리케이션 실행 전 상기 정적 환경 정보에 기초하여 상기 하나 이상의 오프로딩 후보 함수 각각에 대한 오프로딩 여부를 포함하는 분기 시나리오를 생성하는 정적 오프로딩 결정부; 및
상기 분기 시나리오를 저장하는 시나리오 DB를 포함하는 애플리케이션 오프로딩 장치.
- 청구항 2에 있어서,
상기 오프로딩 결정부는, 상기 애플리케이션 실행 중 상기 동적 환경 정보에 기초하여 상기 분기 시나리오를 수정하고, 상기 수정된 분기 시나리오에 기초하여 상기 오프로딩 대상 함수를 결정하는 동적 오프로딩 결정부를 더 포함하는 애플리케이션 오프로딩을 위한 장치.
- 청구항 1에 있어서,
상기 오프로딩 결정부는, 사전 삽입된 코드에 기초하여, 상기 애플리케이션 실행을 위한 함수들 중 상기 하나 이상의 오프로딩 후보 함수를 식별하는 애플리케이션 오프로딩 장치.
- 청구항 1에 있어서,
상기 정적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행에 의해 변동되지 않는 정보 및 상기 애플리케이션 실행 전 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함하는 애플리케이션 오프로딩 장치.
- 청구항 1에 있어서,
상기 동적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행 중 변동되는 정보 및 상기 애플리케이션 실행 중 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함하는 애플리케이션 오프로딩 장치.
- 상기 애플리케이션의 실행과 관련된 정적 환경 정보를 수집하는 단계;
상기 애플리케이션의 실행을 위한 함수들 중 하나 이상의 오프로딩(offloading) 후보 함수를 식별하는 단계;
상기 정적 환경 정보에 기초하여 상기 하나 이상의 오프로딩 후보 함수 각각에 대한 오프로딩 여부를 포함하는 분기 시나리오를 생성하는 단계;
상기 애플리케이션의 실행과 관련된 동적 환경 정보를 수집하는 단계;
상기 동적 환경 정보에 기초하여 상기 분기 시나리오를 수정하는 단계;
상기 수정된 분기 시나리오에 기초하여 상기 하나 이상의 오프로딩 후보 함수 중 오프로딩 대상 함수를 결정하는 단계;
상기 오프로딩 대상 함수 실행을 위한 상기 애플리케이션의 상태 정보를 수집하는 단계;
상기 상태 정보를 오프로딩 서버로 전송하여 상기 오프로딩 서버로 상기 오프로딩 대상 함수의 실행을 요청하는 단계; 및
상기 오프로딩 서버로부터 상기 오프로딩 대상 함수에 대한 실행 결과를 수신하는 단계를 포함하는 애플리케이션 오프로딩 방법.
- 청구항 7에 있어서,
상기 생성하는 단계는, 상기 애플리케이션의 실행 전 상기 분기 시나리오를 생성하는 애플리케이션 오프로딩 방법.
- 청구항 7에 있어서,
상기 수정하는 단계는, 상기 애플리케이션 실행 중 상기 분기 시나리오를 수정하는 애플리케이션 오프로딩 방법.
- 청구항 7에 있어서,
상기 식별하는 단계는, 사전 삽입된 코드에 기초하여, 상기 애플리케이션 실행을 위한 함수들 중 상기 하나 이상의 오프로딩 후보 함수를 식별하는 애플리케이션 오프로딩 방법.
- 청구항 7에 있어서,
상기 정적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행에 의해 변동되지 않는 정보 및 상기 애플리케이션 실행 전 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함하는 애플리케이션 오프로딩 방법.
- 청구항 7에 있어서,
상기 동적 환경 정보는, 상기 애플리케이션의 실행을 위해 요구되는 물리적 자원과 관련되며 상기 애플리케이션의 실행 중 변동되는 정보 및 상기 애플리케이션 실행 중 상기 오프로딩 서버와의 네트워크 연결 상태와 관련된 정보를 포함하는 애플리케이션 오프로딩 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180037406A KR20190114541A (ko) | 2018-03-30 | 2018-03-30 | 애플리케이션 오프로딩 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180037406A KR20190114541A (ko) | 2018-03-30 | 2018-03-30 | 애플리케이션 오프로딩 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190114541A true KR20190114541A (ko) | 2019-10-10 |
Family
ID=68206479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180037406A KR20190114541A (ko) | 2018-03-30 | 2018-03-30 | 애플리케이션 오프로딩 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20190114541A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113691606A (zh) * | 2021-08-19 | 2021-11-23 | 京东鲲鹏(江苏)科技有限公司 | 任务卸载方法、装置、电子设备、系统和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101585160B1 (ko) | 2015-03-12 | 2016-01-13 | 주식회사 모비젠 | 독립실행환경을 제공하는 분산 컴퓨팅 시스템 및 분산 컴퓨팅 시스템의 제어방법 |
-
2018
- 2018-03-30 KR KR1020180037406A patent/KR20190114541A/ko not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101585160B1 (ko) | 2015-03-12 | 2016-01-13 | 주식회사 모비젠 | 독립실행환경을 제공하는 분산 컴퓨팅 시스템 및 분산 컴퓨팅 시스템의 제어방법 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113691606A (zh) * | 2021-08-19 | 2021-11-23 | 京东鲲鹏(江苏)科技有限公司 | 任务卸载方法、装置、电子设备、系统和存储介质 |
CN113691606B (zh) * | 2021-08-19 | 2024-04-16 | 京东鲲鹏(江苏)科技有限公司 | 任务卸载方法、装置、电子设备、系统和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102327615B1 (ko) | 연산 그래프 수정 | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
JP5745079B2 (ja) | 汎用プロセッサとグラフィックスプロセッサとの間の負荷平衡化 | |
US10185590B2 (en) | Mobile and remote runtime integration | |
US20180052709A1 (en) | Dynamic usage balance of central processing units and accelerators | |
Biswas et al. | Efficient mobile cloud computing through computation offloading | |
US20150133214A1 (en) | Video encoding based on areas of interest | |
US20130227232A1 (en) | Partition aware quality of service feature | |
US9722947B2 (en) | Managing task in mobile device | |
US9383978B2 (en) | Apparatus and method for on-demand optimization of applications | |
US8407322B1 (en) | Runtime negotiation of execution blocks between computers | |
US11442835B1 (en) | Mobile and remote runtime integration | |
Montella et al. | Enabling android-based devices to high-end gpgpus | |
CN111259019A (zh) | 资源配置方法、装置、设备和存储介质 | |
CN112764938B (zh) | 云服务器资源管理方法、装置、计算机设备和存储介质 | |
Park et al. | Design and evaluation of mobile offloading system for web-centric devices | |
EP3155523B1 (en) | Mobile and remote runtime integration | |
Lee | A framework for seamless execution of mobile applications in the cloud | |
CN113127153A (zh) | 一种用于确定目标任务描述信息的方法与设备 | |
KR20190114541A (ko) | 애플리케이션 오프로딩 장치 및 방법 | |
US9628401B2 (en) | Software product instance placement | |
US20220326986A1 (en) | Scheduling workloads on partitioned resources of a host system in a container-orchestration system | |
Rausch et al. | A system for operating energy-aware cloudlets | |
Shiraz et al. | A distributed and elastic application processing model for mobile cloud computing | |
US10956526B2 (en) | Implementing a policy-driven resource deployment mechanism in a cloud environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |