KR20200080164A - Memory management system and method considering application usage patterns analysis - Google Patents
Memory management system and method considering application usage patterns analysis Download PDFInfo
- Publication number
- KR20200080164A KR20200080164A KR1020190170005A KR20190170005A KR20200080164A KR 20200080164 A KR20200080164 A KR 20200080164A KR 1020190170005 A KR1020190170005 A KR 1020190170005A KR 20190170005 A KR20190170005 A KR 20190170005A KR 20200080164 A KR20200080164 A KR 20200080164A
- Authority
- KR
- South Korea
- Prior art keywords
- time
- application
- lstm
- function
- vector
- 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/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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- 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
- G06F9/5055—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 considering software capabilities, i.e. software resources associated or available to the machine
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
본 발명은 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템 및 방법에 관한 것으로서, 보다 상세하게는 사용자의 애플리케이션 사용 정보와 실행 확률을 분석하여 보다 효율적으로 메모리를 활용하기 위한 기술이다.The present invention relates to a memory management system and method based on an application usage pattern analysis, and more specifically, a technique for more efficiently utilizing memory by analyzing user application usage information and execution probability.
스마트폰이 발전하고 널리 보급되면서 다양한 종류의 모바일 애플리케이션이 등장하고 있다. 대표적인 모바일 운영체제인 안드로이드나 iOS의 애플리케이션 다운로드 플랫폼에 등록된 모바일 애플리케이션의 수는 현재 약 2백만 개이다. 스마트폰 사용자들은 보통 수십에서 수백 개의 애플리케이션을 설치해 사용하고 있으며, 스마트폰 애플리케이션에 사용자 편의성을 향상시키기 위해 더 많은 기능이 탑재되고 있다. 이에 따라 메인 메모리 요구량, 연산 처리 성능 등의 요구사항들이 증가되고 있다.With the development and widespread use of smartphones, various types of mobile applications are emerging. The number of mobile applications registered on the application download platforms of the representative mobile operating systems, Android and iOS, is currently about 2 million. Smartphone users usually install and use dozens to hundreds of applications, and smartphone applications are equipped with more features to improve user convenience. Accordingly, requirements such as the amount of main memory and computational processing performance are increasing.
증가하는 메인 메모리 요구량은 하드웨어나 소프트웨어적인 방법으로 해결할 수 있다. 하드웨어적인 방법은 스마트폰의 메인 메모리를 증설하는 방식이고, 소프트웨어적인 방법은 메모리 관리 정책 등을 통해 메인 메모리를 효율적으로 사용하는 방법이다.Increasing main memory requirements can be addressed by hardware or software methods. The hardware method is a method of expanding the main memory of the smartphone, and the software method is a method of efficiently using the main memory through a memory management policy.
안드로이드나 iOS는 제한된 시스템 메인 메모리 용량으로 사용자의 애플리케이션 실행 요청을 빠르게 수행하기 위해 애플리케이션의 실행 상태에 따라 애플리케이션의 일부 메모리를 해제하는 수명 주기 관리(Life Cycle Management)를 채택하고 있다. 가능한 한 많은 애플리케이션을 메인 메모리에 캐시하여 애플리케이션을 전환하거나 다시 실행할 때 빠르게 불러오도록 한다. 메인 메모리가 부족한 상황에서는 캐시된 애플리케이션들 중 자주 사용되지 않는 것으로 판단되는 애플리케이션부터 종료하여 사용자가 시스템 성능 저하를 느끼는 것을 방지한다. 또한 스마트폰의 메인 메모리를 효율적으로 활용하기 위해 2차 저장장치를 메인 메모리 공간처럼 사용하는 스왑(Swap) 기법이 고려되었다.Android or iOS adopts Life Cycle Management, which releases some of the memory of the application according to the execution status of the application in order to quickly execute a user's application execution request with a limited system main memory capacity. Cache as many applications as possible in main memory so they can be loaded quickly when switching applications or running again. In a situation where the main memory is insufficient, the cached applications are started from applications that are considered to be infrequently used to prevent the user from feeling a decrease in system performance. In addition, a swap technique that uses a secondary storage device as a main memory space was considered to efficiently utilize the main memory of a smartphone.
그 중 NAND 플래시 메모리 기반 저장장치의 경우, Wear-out 문제 때문에 메모리 공간을 압축해 스왑 공간으로 사용하는 ZRAM 또는 스왑 캐시로 사용하는 ZSWAP 등이 스마트폰에 적용되고 있다.In the case of a NAND flash memory-based storage device, ZRAM, which is used as a swap space by compressing a memory space due to a wear-out problem, or ZSWAP, which is used as a swap cache, is applied to a smartphone.
다만, 이와 같이 스마트폰에 적용되는 LRU 등의 메모리 관리 기법들은 사용자의 애플리케이션 사용 패턴을 분석하고 이를 이용해 다음에 사용될 애플리케이션을 예측할 수 없어 자주 사용되는 애플리케이션의 실행 시간이 증가하는 한계점을 안고 있다.However, memory management techniques such as LRU applied to a smartphone have limitations in increasing execution time of frequently used applications because it cannot analyze a user's application usage pattern and use it to predict the next application to be used.
이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 사용자의 애플리케이션 사용 정보와 실행 확률을 분석하여 보다 효율적으로 메모리를 활용할 수 있도록 하는 것을 목적으로 한다.Accordingly, the present invention has been proposed to solve the above-mentioned general problems, and it is an object of the present invention to analyze a user's application usage information and execution probability to utilize memory more efficiently.
또한, 본 발명은 애플리케이션 별로 나타나는 다양한 사용 패턴과 애플리케이션 간의 연관성을 LSTM(Long Short-Term Memory) 네트워크를 통해 학습시켜 효율적인 메인 메모리 및 스왑 공간을 활용할 수 있도록 하는 것을 목적으로 한다.In addition, the present invention aims to be able to utilize an efficient main memory and swap space by learning various usage patterns that appear for each application and the association between applications through a LSTM (Long Short-Term Memory) network.
또한, 본 발명은 실행 확률이 높은 애플리케이션이 메모리에서 제거되지 않고 바로 재개되는 빈도를 증가시키는 것을 목적으로 한다.The present invention also aims to increase the frequency with which applications with a high probability of execution are immediately restarted without being removed from memory.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템은, 적어도 하나 이상의 애플리케이션이 언제 실행되었는지에 대한 실행정보를 생성하고, 상기 생성된 실행정보로 LSTM(Long Short-Term Memory) 네트워크를 학습시켜 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측하는 프레임워크 모듈, 상기 예측된 실행확률에 기초하여 애플리케이션의 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보하는 커널 모듈을 포함할 수 있다.In order to achieve the above object, the memory management system based on the application usage pattern analysis according to the technical idea of the present invention generates execution information on when at least one or more applications are executed, and LSTM ( Long Short-Term Memory) A framework module that predicts execution probability for each of the at least one application by learning a network, and secures memory by terminating applications in the order of low execution probability based on the predicted execution probability. Kernel module.
상기 프레임워크 모듈은 적어도 하나 이상의 애플리케이션이 언제 실행되었는지에 대한 실행정보를 생성하는 실행정보 생성부, 상기 생성된 실행정보를 LSTM(Long Short-Term Memory) 네트워크에 입력하여 상기 적어도 하나 이상의 애플리케이션의 사용 패턴을 학습하는 네트워크 학습부, 상기 학습된 사용 패턴에 기초하여 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측하는 실행확률 예측부를 포함할 수 있다.The framework module is an execution information generation unit that generates execution information on when at least one application has been executed, and inputs the generated execution information into a LSTM (Long Short-Term Memory) network to use the at least one application. It may include a network learning unit for learning the pattern, an execution probability prediction unit for predicting the execution probability for each of the at least one or more applications based on the learned usage pattern.
상기 커널 모듈은 상기 예측된 실행확률을 저장하는 실행확률 저장부, 기 설정된 메모리의 가용기준치를 초과할 경우 상기 저장된 실행확률에 기초하여 애플리케이션 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보하는 메모리 확보부를 포함할 수 있다.The kernel module is an execution probability storage unit for storing the predicted execution probability, and a memory for securing memory by terminating the application in the order of low application execution probability based on the stored execution probability when the preset usage limit value of the memory is exceeded. It may include a securing portion.
상기 실행확률 저장부에서 저장하는 실행확률은 상기 실행확률 예측부에 의해 실행확률을 예측할 때마다 업데이트될 수 있다.The execution probability stored in the execution probability storage unit may be updated whenever the execution probability is predicted by the execution probability prediction unit.
상기 메모리 확보부는 상기 기 설정된 메모리의 가용기준치보다 작을 때까지 애플리케이션을 종료하여 메모리를 확보할 수 있다.The memory securing unit may secure the memory by terminating the application until it is smaller than the usable reference value of the preset memory.
상기 LSTM 네트워크는 아래 수식 1 내지 수식 6으로 (시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 LSTM에 데이터를 저장하는 메모리 셀), (시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수), (시간 t에서 LSTM의 출력 벡터)로 구성할 수 있다.The LSTM network is represented by Equations 1 to 6 below. (Forget gate function that determines the amount of data to be discarded among the stored data at time t), (At time t Input gate function to generate data to be stored in), (At time t Input gate function to generate data to be stored in), (Memory cell storing data in LSTM at time t), (At time t Input gate function to select the data to be stored in) It can be configured as (the output vector of LSTM at time t).
<수식 1><Equation 1>
(: 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 2><Equation 2>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 3><Equation 3>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 4><Equation 4>
(: 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀, : 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수)( : Memory cell that stores data in LSTM at time t, : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : At time t Input gate function to generate data to be stored in, : At time t Input gate function to generate data to be stored in)
<수식 5><Equation 5>
(: 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to select data to be stored in, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 6><Equation 6>
(: 시간 t에서 LSTM의 출력 벡터, : 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀)( : Output vector of LSTM at time t, : At time t Input gate function to select data to be stored in, : Memory cell storing data in LSTM at time t)
상기 실행확률 예측부는 아래 수식 7 및 수식 8로 정의되는 실행확률 값 산출식을 통해 각 애플리케이션에 대한 실행확률 값을 산출할 수 있다.The execution probability prediction unit may calculate execution probability values for each application through an execution probability value calculation formula defined by Equations 7 and 8 below.
<수식 7><Equation 7>
(xt: 시간 t에서 실행된 애플리케이션 ui_t를 LSTM로 입력되는 입력벡터, ui: 애플리케이션, ht: xt에 의해 LSTM로부터 출력되는 출력벡터, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)(xt: input vector inputted to LSTM with application ui_t executed at time t, ui: application, ht: output vector outputted from LSTM by xt, i: application of execution at time t is the number of applications in set U Pointing index, j: vector Jth index of m, number of elements in set U)
<수식 8><Equation 8>
(: 시간 t까지 실행된 애플리케이션 기록, : 시간 t+1에서의 애플리케이션 ui의 실행확률 값, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)( : Records the applications executed up to time t, : The value of the execution probability of the application ui at time t+1, i: the index indicating the number of applications in the set U that are executed at time t, j: vector Jth index of m, number of elements in set U)
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법은, 실행정보 생성부에서 적어도 하나 이상의 애플리케이션이 언제 실행되었는지에 대한 실행정보를 생성하는 실행정보 생성단계, 네트워크 학습부에서 상기 생성된 실행정보를 LSTM(Long Short-Term Memory) 네트워크에 입력하여 상기 적어도 하나 이상의 애플리케이션의 사용 패턴을 학습하는 네트워크 학습단계, 실행확률 예측부에서 상기 학습된 사용 패턴에 기초하여 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측하는 실행확률 예측단계, 실행확률 저장부에서 상기 예측된 실행확률을 저장하는 실행확률 저장단계, 메모리 확보부에서 기 설정된 메모리의 가용기준치를 초과할 경우, 상기 저장된 실행확률에 기초하여 애플리케이션 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보하는 메모리 확보단계를 포함할 수 있다.In order to achieve the above object, a memory management method based on an application usage pattern analysis according to the technical idea of the present invention includes an execution information generation step of generating execution information on when at least one or more applications are executed in the execution information generation unit. , Network learning step of learning the usage pattern of the at least one application by inputting the generated execution information into the LSTM (Long Short-Term Memory) network in the network learning unit, based on the learned usage pattern in the execution probability prediction unit The execution probability prediction step of predicting the execution probability for each of the at least one application, the execution probability storage step of storing the predicted execution probability in the execution probability storage unit, and exceeding the available reference value of the memory set in the memory acquisition unit In this case, the method may include a memory securing step of securing the memory by terminating the applications in the order of low application execution probability based on the stored execution probability.
상기 실행확률 저장단계에서 저장하는 실행확률은 상기 실행확률 예측단계에 의해 실행확률을 예측할 때마다 업데이트될 수 있다.The execution probability stored in the execution probability storage step may be updated whenever the execution probability is predicted by the execution probability prediction step.
상기 메모리 확보단계는 상기 기 설정된 메모리의 가용기준치보다 작을 때까지 애플리케이션을 종료하여 메모리를 확보할 수 있다.The memory securing step may secure the memory by terminating the application until it is smaller than the available reference value of the preset memory.
상기 LSTM 네트워크는 아래 수식 1 내지 수식 6으로 정의되는 (시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 LSTM에 데이터를 저장하는 메모리 셀), (시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수), (시간 t에서 LSTM의 출력 벡터)로 구성할 수 있다.The LSTM network is defined by Equations 1 to 6 below. (Forget gate function that determines the amount of data to be discarded among the stored data at time t), (At time t Input gate function to generate data to be stored in), (At time t Input gate function to generate data to be stored in), (Memory cell storing data in LSTM at time t), (At time t Input gate function to select the data to be stored in) It can be configured as (the output vector of LSTM at time t).
<수식 1><Equation 1>
(: 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 2><Equation 2>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 3><Equation 3>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 4><Equation 4>
(: 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀, : 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수)( : Memory cell that stores data in LSTM at time t, : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : At time t Input gate function to generate data to be stored in, : At time t Input gate function to generate data to be stored in)
<수식 5><Equation 5>
(: 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to select data to be stored in, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 6><Equation 6>
(: 시간 t에서 LSTM의 출력 벡터, : 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀)( : Output vector of LSTM at time t, : At time t Input gate function to select data to be stored in, : Memory cell storing data in LSTM at time t)
상기 실행확률 예측단계는 아래 수식 7 및 수식 8로 정의되는 실행확률 값 산출식을 통해 각 애플리케이션에 대한 실행확률 값을 산출할 수 있다.In the execution probability prediction step, an execution probability value for each application may be calculated through an execution probability value calculation formula defined by Equations 7 and 8 below.
<수식 7><Equation 7>
(xt: 시간 t에서 실행된 애플리케이션 ui_t를 LSTM로 입력되는 입력벡터, ui: 애플리케이션, ht: xt에 의해 LSTM로부터 출력되는 출력벡터, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)(xt: input vector inputted to LSTM with application ui_t executed at time t, ui: application, ht: output vector outputted from LSTM by xt, i: application of execution at time t is the number of applications in set U Pointing index, j: vector Jth index of m, number of elements in set U)
<수식 8><Equation 8>
(: 시간 t까지 실행된 애플리케이션 기록, : 시간 t+1에서의 애플리케이션 ui의 실행확률 값, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)( : Records the applications executed up to time t, : The value of the execution probability of the application ui at time t+1, i: the index indicating the number of applications in the set U that are executed at time t, j: vector Jth index of m, number of elements in set U)
본 발명에 의한 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템 및 방법에 따르면,According to the memory management system and method based on the application usage pattern analysis according to the present invention,
첫째, 사용자의 애플리케이션 사용 정보와 실행 확률을 분석하여 보다 효율적으로 메모리를 활용할 수 있는 효과를 가진다.First, it has an effect of using memory more efficiently by analyzing user application usage information and execution probability.
둘째, 애플리케이션 별로 나타나는 다양한 사용 패턴과 애플케이션 간의 연관성을 LSTM(Long Short-Term Memory) 네트워크를 통해 학습시켜 효율적인 메인 메모리 및 스왑 공간을 활용할 수 있는 효과를 가진다.Second, it has the effect of utilizing the effective main memory and swap space by learning the association between various usage patterns and applications that appear for each application through the LSTM (Long Short-Term Memory) network.
셋째, 실행 확률이 높은 애플리케이션이 메모리에서 제거되지 않고 바로 재개되는 빈도를 증가시킬 수 있는 효과를 가진다.Third, it has an effect of increasing the frequency that an application with a high probability of execution is immediately restarted without being removed from the memory.
도 1은 본 발명의 실시예로서, 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템을 나타낸 구성도.
도 2는 본 발명의 실시예로서, 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법을 나타낸 순서도.
도 3은 본 발명의 실시예에 따라 본 발명의 시스템을 안드로이드 운영체제에 적용한 구성도를 나타낸 도면.1 is an embodiment of the present invention, a configuration diagram showing a memory management system based on application usage pattern analysis.
Figure 2 is an embodiment of the present invention, a flow chart showing a memory management method based on the application usage pattern analysis.
3 is a view showing the configuration of the system of the present invention applied to an Android operating system according to an embodiment of the present invention.
첨부한 도면을 참조하여 본 발명의 실시예들에 의한 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템 및 방법에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.A memory management system and method based on application usage pattern analysis according to embodiments of the present invention will be described in detail with reference to the accompanying drawings. The present invention can be applied to various changes and may have various forms, and specific embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific disclosure form, it should be understood to include all modifications, equivalents, or substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals are used for similar components.
또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.In addition, unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person skilled in the art to which the present invention pertains. Terms, such as those defined in a commonly used dictionary, should be interpreted as having meanings consistent with meanings in the context of related technologies, and should not be interpreted as ideal or excessively formal meanings unless explicitly defined in the present application. Does not.
도 1은 본 발명의 실시예로서, 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템을 나타낸 구성도이다.1 is a configuration diagram showing a memory management system based on an application usage pattern analysis as an embodiment of the present invention.
도 1을 참조하면, 본 발명의 실시예에 따른 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템은 프레임워크 모듈(100) 및 커널 모듈(200)을 포함할 수 있다.Referring to FIG. 1, a memory management system based on application usage pattern analysis according to an embodiment of the present invention may include a
프레임워크 모듈(100)은 적어도 하나 이상의 애플리케이션이 언제 실행되었는지에 대한 실행정보를 생성하고, 상기 생성된 실행정보로 LSTM(Long Short-Term Memory) 네트워크를 학습시켜 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측할 수 있다.The
보다 상세하게, 프레임워크 모듈(100)은 실행정보 생성부(110), 네트워크 학습부(130), 실행확률 예측부(150)를 포함할 수 있다.In more detail, the
실행정보 생성부(110)는 적어도 하나 이상의 애플리케이션이 언제 실행되었는지에 대한 실행정보를 생성할 수 있다.The execution
네트워크 학습부(130)는 상기 생성된 실행정보를 LSTM(Long Short-Term Memory) 네트워크에 입력하여 상기 적어도 하나 이상의 애플리케이션의 사용 패턴을 학습할 수 있다.The
실행확률 예측부(150)는 상기 학습된 사용 패턴에 기초하여 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측할 수 있다.The execution
커널 모듈(200)은 상기 예측된 실행확률에 기초하여 애플리케이션의 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보할 수 있다.The
보다 상세하게, 커널 모듈(200)은 실행확률 저장부(210) 및 메모리 확보부(230)를 포함할 수 있다.In more detail, the
실행확률 저장부(210)는 상기 예측된 실행확률을 저장할 수 있다.The execution
이 때 실행확률 저장부(210)에서 저장하는 실행확률은 상기 실행확률 예측부(150)에 의해 실행확률을 예측할 때마다 업데이트될 수 있다.At this time, the execution probability stored in the execution
메모리 확보부(230)는 기 설정된 메모리의 가용기준치를 초과할 경우, 상기 저장된 실행확률에 기초하여 애플리케이션 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보할 수 있다.The
이 때 메모리 확보부(230)는 상기 기 설정된 메모리의 가용기준치보다 작을 때까지 애플리케이션을 종료하여 메모리를 확보할 수 있다.At this time, the
한편, 상기 LSTM 네트워크는 아래 수식 1 내지 수식 6으로 정의되는 (시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 LSTM에 데이터를 저장하는 메모리 셀), (시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수), (시간 t에서 LSTM의 출력 벡터)로 구성할 수 있다.Meanwhile, the LSTM network is defined by Equations 1 to 6 below. (Forget gate function that determines the amount of data to be discarded among the stored data at time t), (At time t Input gate function to generate data to be stored in), (At time t Input gate function to generate data to be stored in), (Memory cell storing data in LSTM at time t), (At time t Input gate function to select the data to be stored in) It can be configured as (the output vector of LSTM at time t).
<수식 1><Equation 1>
(: 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 2><Equation 2>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 3><Equation 3>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 4><Equation 4>
(: 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀, : 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수)( : Memory cell that stores data in LSTM at time t, : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : At time t Input gate function to generate data to be stored in, : At time t Input gate function to generate data to be stored in)
<수식 5><Equation 5>
(: 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to select data to be stored in, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 6><Equation 6>
(: 시간 t에서 LSTM의 출력 벡터, : 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀)( : Output vector of LSTM at time t, : At time t Input gate function to select data to be stored in, : Memory cell storing data in LSTM at time t)
그리고 상기 실행확률 예측부는 아래 수식 7 및 수식 8로 정의되는 실행확률 값 산출식을 통해 각 애플리케이션에 대한 실행확률 값을 산출할 수 있다.In addition, the execution probability prediction unit may calculate execution probability values for each application through an execution probability value calculation formula defined by Equations 7 and 8 below.
<수식 7><Equation 7>
(xt: 시간 t에서 실행된 애플리케이션 ui_t를 LSTM로 입력되는 입력벡터, ui: 애플리케이션, ht: xt에 의해 LSTM로부터 출력되는 출력벡터, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)(xt: input vector inputted to LSTM with application ui_t executed at time t, ui: application, ht: output vector outputted from LSTM by xt, i: application of execution at time t is the number of applications in set U Pointing index, j: vector Jth index of m, number of elements in set U)
<수식 8><Equation 8>
(: 시간 t까지 실행된 애플리케이션 기록, : 시간 t+1에서의 애플리케이션 ui의 실행확률 값, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)( : Records the applications executed up to time t, : The value of the execution probability of the application ui at time t+1, i: the index indicating the number of applications in the set U that are executed at time t, j: vector Jth index of m, number of elements in set U)
도 2는 본 발명의 실시예로서, 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법을 나타낸 순서도이다.2 is a flowchart illustrating a memory management method based on application usage pattern analysis as an embodiment of the present invention.
도 2를 참조하면, 본 발명의 실시예로서, 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법은 실행정보 생성단계(S110), 네트워크 학습단계(S130), 실행확률 예측단계(S150), 실행확률 저장단계(S210), 메모리 확보단계(S230)를 포함할 수 있다.Referring to FIG. 2, as an embodiment of the present invention, a memory management method based on application usage pattern analysis includes execution information generation step (S110), network learning step (S130), execution probability prediction step (S150), and execution probability storage step (S210), a memory securing step (S230).
실행정보 생성단계는 실행정보 생성부(110)에서 적어도 하나 이상의 애플리케이션이 언제 실행되었는지에 대한 실행정보를 생성할 수 있다(S110).In the execution information generation step, the execution
네트워크 학습단계는 네트워크 학습부(130)에서 상기 생성된 실행정보를 LSTM(Long Short-Term Memory) 네트워크에 입력하여 상기 적어도 하나 이상의 애플리케이션의 사용 패턴을 학습할 수 있다(S130).In the network learning step, the
실행확률 예측단계는 실행확률 예측부(150)에서 상기 학습된 사용 패턴에 기초하여 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측할 수 있다(S150).In the execution probability prediction step, the execution probability for each of the at least one application may be predicted based on the learned usage pattern in the execution probability prediction unit 150 (S150 ).
실행확률 저장단계는 실행확률 저장부(210)에서 상기 예측된 실행확률을 저장할 수 있다(S210).The execution probability storage step may store the predicted execution probability in the execution probability storage unit 210 (S210).
이 때 실행확률 저장단계(S210)에서 저장하는 실행확률은 상기 실행확률 예측단계(S150)에 의해 실행확률을 예측할 때마다 업데이트될 수 있다.At this time, the execution probability stored in the execution probability storage step S210 may be updated whenever the execution probability is predicted by the execution probability prediction step S150.
메모리 확보단계는 메모리 확보부(230)에서 기 설정된 메모리의 가용기준치를 초과할 경우, 상기 저장된 실행확률에 기초하여 애플리케이션 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보할 수 있다(S230).When the memory securing step exceeds the usable threshold value of the memory set in the
이 때 메모리 확보단계(S230)는 상기 기 설정된 메모리의 가용기준치보다 작을 때까지 애플리케이션을 종료하여 메모리를 확보할 수 있다.At this time, the memory securing step S230 may secure the memory by terminating the application until it is smaller than the available reference value of the preset memory.
한편, 상기 LSTM 네트워크는 아래 수식 1 내지 수식 6으로 정의되는 (시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 LSTM에 데이터를 저장하는 메모리 셀), (시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수), (시간 t에서 LSTM의 출력 벡터)로 구성할 수 있다.Meanwhile, the LSTM network is defined by Equations 1 to 6 below. (Forget gate function that determines the amount of data to be discarded among the stored data at time t), (At time t Input gate function to generate data to be stored in), (At time t Input gate function to generate data to be stored in), (Memory cell storing data in LSTM at time t), (At time t Input gate function to select the data to be stored in) It can be configured as (the output vector of LSTM at time t).
<수식 1><Equation 1>
(: 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 2><Equation 2>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 3><Equation 3>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 4><Equation 4>
(: 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀, : 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수)( : Memory cell that stores data in LSTM at time t, : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : At time t Input gate function to generate data to be stored in, : At time t Input gate function to generate data to be stored in)
<수식 5><Equation 5>
(: 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)( : At time t Input gate function to select data to be stored in, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<수식 6><Equation 6>
(: 시간 t에서 LSTM의 출력 벡터, : 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀)( : Output vector of LSTM at time t, : At time t Input gate function to select data to be stored in, : Memory cell storing data in LSTM at time t)
그리고 상기 실행확률 예측단계(S150)는 아래 수식 7 및 수식 8로 정의되는 실행확률 값 산출식을 통해 각 애플리케이션에 대한 실행확률 값을 산출할 수 있다.In addition, the execution probability prediction step (S150) may calculate execution probability values for each application through an execution probability value calculation formula defined by Equations 7 and 8 below.
<수식 7><Equation 7>
(xt: 시간 t에서 실행된 애플리케이션 ui_t를 LSTM로 입력되는 입력벡터, ui: 애플리케이션, ht: xt에 의해 LSTM로부터 출력되는 출력벡터, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)(xt: input vector inputted to LSTM with application ui_t executed at time t, ui: application, ht: output vector outputted from LSTM by xt, i: application of execution at time t is the number of applications in set U Pointing index, j: vector Jth index of m, number of elements in set U)
<수식 8><Equation 8>
(: 시간 t까지 실행된 애플리케이션 기록, : 시간 t+1에서의 애플리케이션 ui의 실행확률 값, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)( : Records the applications executed up to time t, : The value of the execution probability of the application ui at time t+1, i: the index indicating the number of applications in the set U that are executed at time t, j: vector Jth index of m, number of elements in set U)
보다 구체적으로 본 발명을 설명하면 도 3을 참조할 수 있다.Referring to the present invention in more detail, reference may be made to FIG. 3.
도 3은 본 발명의 실시예에 따라 본 발명의 시스템을 안드로이드 운영체제에 적용한 구성도를 나타낸 도면이다.3 is a diagram illustrating a configuration diagram of the system of the present invention applied to an Android operating system according to an embodiment of the present invention.
도 3에 도시된 바와 같이, 본 발명의 실시예에 따라 본 발명의 시스템이 적용된 안드로이드 운영체제는 크게 프레임워크 모듈에 해당하는 Android Framework(100)와, 커널 모듈에 해당하는 Android Kernel(200)을 포함할 수 있다.As shown in FIG. 3, according to an embodiment of the present invention, the Android operating system to which the system of the present invention is applied includes the
Android Framework(100)은 Activity Manager Service, Context Management을 포함할 수 있다.
Activity Manager Service은 실행정보 생성부에 해당하는 Activity/Process Context Generator(110)를 포함할 수 있다. Activity Manager Service의 Activity/Process Context Generator(110)는 어떤 애플리케이션이 언제 실행되었는지에 대한 정보를 생성하여 Context Management로 전달할 수 있다.The Activity Manager Service may include an Activity/
Activity/Process Context Generator(110)는 모바일 운영체제에서 안드로이드의 Activity Manager Service와 같이, 애플리케이션 실행과 종료를 담당하는 부분에 구성될 수 있다. 이는 애플리케이션의 실행이나 정지, 종료 등의 상황 정보를 생성할 수 있다.The Activity/
또한, Activity/Process Context Generator(110)는 애플리케이션 패키지의 이름, 애플리케이션을 실행한 시점의 타임스탬프와 같은 애플리케이션 사용 정보와, 애플리케이션 실행을 위해 생성되는 프로세스마다 생성되는 프로세스의 ID, 각 프로세스가 소속된 애플리케이션 이름 등의 프로세스 생성 정보를 수집할 수 있다.In addition, the Activity/
한편, Activity/Process Context Generator(110)이 포함된 Activity Manager Service에서는 애플리케이션 실행 및 프로세스 생성이 발생한 경우, 애플리케이션 사용 정보를 Context Management의 Application Usage Trainer(130)와 Application Usage Predictor(150)로 전달할 수 있다. 또한, 애플리케이션 실행을 위한 프로세스 생성 작업이 발생할 때는 해당 상황 정보를 Application Usage Predictor(150)로 전달할 수 있다.Meanwhile, in the Activity Manager Service including the Activity/
Context Management는 네트워크 학습부에 해당하는 Application Usage Trainer(130), 실행확률 예측부에 해당하는 Application Usage Predictor(150), LSTM Network를 포함할 수 있다.Context Management may include an
Context Management의 Application Usage Trainer(130)은 상기 Activity/Process Context Generator(110)로부터 전달받은 정보를 보관하다가 LSTM Network를 학습시킬 수 있다.The
Application Usage Trainer(130)은 Activity/Process Context Generator(110)로부터 어떤 애플리케이션이 실행되었는지에 대한 정보를 받아 그 애플리케이션에 해당하는 ID를 시간 순서대로 스토리지에 기록을 저장할 수 있다. LSTM Network를 학습시킬 때에는 한 번에 학습하고자 하는 데이터의 길이만큼 LSTM Network를 Unfold하여 Feed-forward 네트워크를 생성한 후, Backpropagation 알고리즘으로 네트워크의 가중치 파라미터를 갱신하는 BPTT 알고리즘을 사용할 수 있다. LSTM Network는 예측값과 실제값의 차이인 Mean Squared Error(MSE)를 최소화하도록 학습될 수 있다. 애플리케이션 실행 확률을 적용한 MSE는 다음 수식 9와 같이 정의할 수 있다.The
<수식 9><Equation 9>
(MSE: LSTM Network는 예측값과 실제값의 차이, : 시간 t의 애플리케이션 실행 기록 집합, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수, : 시간 t에서의 애플리케이션 ui의 실행확률 값, : 시간 t에서 애플리케이션 ui가 실행되었는지 여부, : 시간 t에서 실행된 애플리케이션 , : 시간 t에서 애플리케이션 실행 기록의 가장 마지막 실행된 애플리케이션)(MSE: LSTM Network is the difference between the predicted value and the actual value, : Application execution history set at time t, i: Index indicating the number of applications in application U executed at time t, j: Vector Jth index of, m: number of elements in set U, : Ui execution probability value at time t, : Whether application ui was executed at time t, : Application run at time t , : Last run application of the application run record at time t)
LSTM Network의 LSTM은 기존 Recurrent Neural Network(RNN)에서 발생하는 Gradient Vanishing 문제를 해결하고, 장기 및 단기적 데이터의 연관성을 학습하도록 할 수 있다. 이와 같은 LSTM을 구성하는 (Forget Gate) ft, (Input Gate) gt 및 it, 메모리 셀 ct, (Output Gate) ot, 시간 t에서 LSTM로부터 출력되는 출력벡터 ht은 상기 수식 1 내지 수식 6으로 정의할 수 있다. 이 때 LSTM Network의 파라미터들은 하기 표 1로 정의할 수 있다.LSTM Network's LSTM can solve the gradient vanishing problem that occurs in the existing Recurrent Neural Network (RNN), and learn to relate the long-term and short-term data. The output vectors ht output from the LSTM at (Forget Gate) ft, (Input Gate) gt and it, memory cell ct, (Output Gate) ot, and time t constituting the LSTM are defined by Equations 1 to 6 Can. At this time, the parameters of the LSTM Network can be defined in Table 1 below.
<표 1><Table 1>
LSTM Network를 이용해 애플리케이션의 실행 확률을 예측하기 위한 관련 파라미터들은 하기 표 2로 정의할 수 있다.The relevant parameters for predicting the probability of application execution using LSTM Network can be defined in Table 2 below.
<표 2><Table 2>
시간 t까지 실행된 애플리케이션 기록 를 통해 시간 t+1의 애플리케이션 의 실행 확률을 알아내기 위해, 실행 확률은 로 나타낼 수 있다. 가장 실행 가능성이 낮은 애플리케이션을 선택하기 위해, 시간 t에서 실행된 애플리케이션 를 LSTM 모델의 입력 로 변환하는 식과, 상기 수식 1 내지 수식 6에 정의된 LSTM 모델에 따른 연산을 수행하는 함수 lstm()를 상기 수식 7과 같이 정의할 수 있다.Record applications executed up to time t Application of time t+1 through To find the probability of execution, the probability of execution is Can be represented as Application selected at time t to select the least viable application LSTM model input Function to perform the calculation according to the LSTM model defined in Equations 1 to 6 and the equation to convert to lstm( ) May be defined as Equation 7 above.
또한, lstm()의 출력을 에 대한 확률값으로 변환하기 위해, 상기 수식 8과 같이 Softmax 함수를 이용할 수 있다.Also, lstm( ) Output In order to convert to a probability value for, a Softmax function can be used as in Equation 8 above.
Context Management의 Application Usage Predictor(150)은 상기 학습된 LSTM Network를 이용하여 사용자가 다음에 실행하게 될 애플리케이션에 대한 확률을 예측하고, 매 예측마다 Android Kernel(200)의 Process Management(210)에서 관리하는 프로세스 정보에 실행 확률을 기록해둘 수 있다.The
이 때 Context Management의 Application Usage Predictor(150)은 상기 학습된 LSTM Network를 이용하는 것뿐만 아니라, Activity/Process Context Generator(110)로부터 어떤 애플리케이션이 실행되었는지에 대한 정보를 추가로 전달받아 이를 이용할 수 있다.At this time, the
Application Usage Predictor(150)는 하기 표 3의 형식으로 스토리징 저장된 애플리케이션 매핑 테이블을 읽은 후, 하기 표 4와 같이 AppInfo라 부르는 애플리케이션-프로세스 정보의 리스트를 생성할 수 있다.The
<표 3><Table 3>
(NAME: 애플리케이션의 전체 이름, ID: 애플리케이션의 고유ID)(NAME: Full name of the application, ID: Unique ID of the application)
<표 4><Table 4>
(name: 애플리케이션의 전체 이름, id: 애플리케이션의 고유 ID, prob: 애플리케이션이 실행될 확률, pids: 애플리케이션에 속한 프로세스들의 pid 리스트)(name: full name of the application, id: unique ID of the application, prob: probability of the application running, pids: list of pids of processes belonging to the application)
안드로이드와 같은 모바일 운영체제는 애플리케이션 사용 시점과 프로세스 생성 시점이 다르다. 이에, Application Usage Predictor(150)에서는 Activity/Process Context Generator(110)로부터 어떤 애플리케이션이 언제 실행되었는지에 대한 정보와, 어떤 애플리케이션의 프로세스가 생성되었는지에 대한 정보를 받을 수 있다.Mobile operating systems, such as Android, differ in the point of application use and process creation. Accordingly, the
하기 알고리즘 1은 어떤 애플리케이션이 실행되었는지에 대한 정보를 받을 경우, 수행되는 작업을 나타낼 수 있다.Algorithm 1 below may indicate a task to be performed when receiving information about which application is executed.
<알고리즘 1><Algorithm 1>
Line 2-3과 같이 LSTM Network를 호출하여 애플리케이션들이 다음에 실행 될 확률 값을 얻고, line 4-5와 같이 AppInfo 리스트를 순회하면서 prob 필드에 값을 저장할 수 있다. 만약 애플리케이션의 프로세스가 이미 생성되어 있으면 File System Management를 통해 line 6-14와 같이 pids를 순회하면서 애플리케이션의 확률 값을 커널의 프로세스 자료구조에 기록할 수 있다. Android Kernel에서는 Floating Point 연산을 지원하지 않기 때문에 line 10과 같이 확률 값을 Integer로 변환하여 기록할 수 있다.By calling LSTM Network as in Line 2-3, you can get the probability value that applications will be executed next, and save the value in the prob field while traversing the AppInfo list as in Line 4-5. If the process of the application has already been created, it is possible to record the probability value of the application in the process data structure of the kernel while traversing pids as shown in line 6-14 through File System Management. Since Android Kernel does not support floating point operation, probability value can be converted to Integer and recorded as in line 10.
하기 알고리즘 2는 어떤 애플리케이션의 프로세스가 생성되었는지에 대한 정보를 받을 경우, 수행되는 작업을 나타낼 수 있다.Algorithm 2 below may indicate an operation to be performed when receiving information about which application process is generated.
<알고리즘 2><Algorithm 2>
알고리즘 2는 어떤 애플리케이션의 프로세스가 생성되었는지에 대한 정보를 받을 경우 수행되는 작업을 나타낼 수 있다. Line 2와 같이 프로세스가 생성되면 생성된 프로세스의 pid를 해당 애플리케이션의 AppInfo의 pids 리스트에 추가하고 확률 값을 커널의 프로세스 자료구조에 기록할 수 있다.Algorithm 2 may represent an operation performed when receiving information about which application process is created. When a process is created as in Line 2, the pid of the created process can be added to the list of pids of AppInfo of the application and the probability value can be recorded in the process data structure of the kernel.
Android Kernel(200)은 File System Management, 실행확률 저장부에 해당하는 Process Management(210), 메모리 확보부에 해당하는 Memory Management(230)를 포함할 수 있다. 이 때 Memory Management(230)은 Memory Reclaimer을 포함할 수 있다.The
File System Management은 Android Kernel 상단에서 실행되는 Application Usage Predictor(150)의 애플리케이션 실행 확률 정보를 애플리케이션에 소속된 각 프로세스 정보에 반영하기 위한 정보 전달 인터페이스를 제공할 수 있다. 정보 전달 인터페이스는 procfs를 통해 구성될 수 있다. procfs는 유닉스 계열 운영 체제에서 프로세스 정보와 같은 시스템 정보를 파일 구조로 보여주며, 파일 입출력 인터페이스를 통해 런타임에 시스템 파라미터를 바꾸는 데에 사용될 수 있다. 본 발명에서는 Application Usage Predictor(150)가 procfs를 통해 애플리케이션의 실행 확률을 Process Management(210)에서 관리하는 프로세스 자료구조에 기록할 수 있다.File System Management may provide an information delivery interface for reflecting application execution probability information of the
Process Management(210)는 Android Kernel(200)의 프로세스 자료구조를 통해 프로세스 정보를 관리할 수 있다.
<표 5>Table 5
프로세스가 속한 애플리케이션의 실행 확률 값을 기록한 형태는 상기 표 5로서, 이는 prob 필드가 추가된 형태라 할 수 있다. 시스템 프로세스는 종료 시 시스템 크래시 등의 문제가 발생할 수 있기 때문에, Application Usage Predictor(150)를 통해 계산되는 실행 확률 값은 사용자가 직접 실행한 애플리케이션에 소속된 프로세스들에만 적용할 수 있다. 이를 위해 prob을 임의의 음수값으로 초기화하여 시스템 프로세스들을 메인 메모리 우선 회수 대상에서 제외한다.The form in which the execution probability value of the application to which the process belongs is recorded in Table 5 above, may be referred to as a form in which a prob field is added. Since the system process may cause a problem such as a system crash at the end, the execution probability value calculated through the
Memory Management(230)의 Memory Reclaimer은 메인 메모리 부족 상황이 발생할 경우, 프로세스들에 기록된 실행 확률 값을 탐색하여, 가장 낮은 실행 확률 값을 가진 프로세스를 찾아 종료하고 메모리 공간을 확보할 수 있다. 이는 실행될 확률이 높은 애플리케이션이 메모리에서 제거되지 않고, 바로 재개되는 빈도를 증가시킬 수 있는 이점을 가진다.The memory reclaimer of the
Memory Management(230)은 메인 메모리 부족 상황 발생 시, Memory Reclaimer를 호출할 수 있다. 하기 알고리즘 3은 Memory Reclaimer에서 수행되는 메모리 회수 작업을 나타낸 알고리즘이라 할 수 있다.The
<알고리즘 3><Algorithm 3>
Line 2-3에서는 확률 값이 최소가 되는 프로세스를 가리키기 위한 변수를 초기화할 수 있다. Line 4에서 Process Management의 프로세스 리스트를 순회하고, line 5-8에서와 같이 메인 메모리 우선 회수 대상이 되는 프로세스 중 확률 값이 가장 낮은 프로세스를 선택할 수 있다.Line 2-3 allows you to initialize a variable to point to the process where the probability value is minimal. In Line 4, it is possible to traverse the process list of Process Management and select the process with the lowest probability value among the processes subject to the main memory priority recovery as in lines 5-8.
이와 같이 본 발명의 실시예에 따른 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템 및 방법은, 실제 안드로이드 스마트폰에 구현하여 모바일 애플리케이션의 실행 시간과 애플리케이션이 실행되는 특성을 수집 및 분석할 수 있다. 이의 성능 측정을 위해 사용할 타겟 기기로 하기 표 6과 같이 Qualcomm Snapdragon 810 프로세서가 장착된 Google Nexus 6P 스마트폰을 사용할 수 있다.As described above, the memory management system and method based on the application usage pattern analysis according to the embodiment of the present invention may be implemented in an actual Android smartphone to collect and analyze the execution time of the mobile application and characteristics of the application execution. As a target device to use for measuring its performance, a Google Nexus 6P smartphone equipped with a Qualcomm Snapdragon 810 processor can be used as shown in Table 6 below.
<표 6>Table 6.
애플리케이션의 실행에는 Cold Launch, Warm Launch, Hot Launch가 존재한다. Hot Launch는 애플리케이션 실행에 필요한 모든 프로세스가 이미 생성되어 있어 새로 프로세스를 생성하지 않아도 되는 경우이다. Warm Launch는 애플리케이션 실행을 위한 프로세스가 일부 실행되고 있지만 하나 이상의 프로세스를 새로 생성해야 하는 경우이다. Cold Launch의 경우 애플리케이션 실행을 위한 프로세스가 생성되지 않아 모든 필요한 프로세스들을 새롭게 생성하는 경우이다.Cold Launch, Warm Launch, and Hot Launch exist in application execution. Hot Launch is a case in which all processes required to run an application have already been created and no new process needs to be created. In the case of Warm Launch, some processes for application execution are running, but one or more processes need to be newly created. In the case of Cold Launch, this is a case where all necessary processes are newly created because a process for running an application is not created.
성능 측정 데이터로 LiveLab Research에서 수집한 실제 사용자의 애플리케이션 사용 기록에서 무작위로 선정한 사용자의 데이터를 이용하였다. 애플리케이션 사용 기록에서 총 애플리케이션의 종류는 35종이었고, 이는 하기 표 7과 같다.As the performance measurement data, randomly selected user data was used from the application usage records of real users collected by LiveLab Research. The total number of application types in the application usage record was 35, as shown in Table 7 below.
<표 7>Table 7
학습결과의 교차검증을 위하여 10-fold Cross Validation을 사용하여 총 5,000개의 사용 기록 중에서 90%(4500개)을 학습에 이용하고 10%(500개)를 테스트에 이용하였다. 안드로이드에서는 Cold Launch 및 Warm Launch에 대해 애플리케이션 실행 시간 정보를 제공하는데, Hot Launch에 대해서는 실행 시간을 제공하지 않는다. 따라서 전체 테스트 데이터를 기존 기법과, 본 발명의 기법을 이용해 Cold 및 Warm Launch 시의 애플리케이션 누적 실행 시간의 평균값을 비교하였다. 또한 Activity Manager Service를 수정해 각 애플리케이션 실행 타입 별 횟수를 측정해 그 평균값을 비교하였다. 기존 메모리 관리 시스템은 기본 안드로이드 플랫폼과 그 커널의 소스코드를 빌드한 것으로 나타내기 위해 Android+ZRAM+LRU로 표기하였으며, 본 발명의 메모리 관리 시스템은 Android+ZRAM+AMMS로 표기하였다.For cross-validation of learning results, 90% (4500) were used for learning and 10% (500) were used for testing out of a total of 5,000 usage records using 10-fold cross validation. Android provides application execution time information for Cold Launch and Warm Launch, but does not provide execution time for Hot Launch. Therefore, the average value of the cumulative execution time of applications during Cold and Warm Launch was compared using the existing technique and the technique of the present invention. In addition, the Activity Manager Service was modified to measure the number of times for each application execution type, and the average value was compared. The existing memory management system was designated as Android+ZRAM+LRU to indicate that the source code of the basic Android platform and its kernel was built, and the memory management system of the present invention was designated as Android+ZRAM+AMMS.
먼저 애플리케이션 실행 예측 성능을 알아보기 위해 애플리케이션 테스트 데이터 500개를 순서대로 실행하면서 Hot Launch, Warm Launch, Cold Launch 발생한 횟수를 기존 시스템과 제안하는 시스템에 대해 측정하였다. 500개 애플리케이션 사용 기록을 실행할 때 발생하는 애플리케이션 실행 종류를 누적하여 평균을 계산한 결과는 하기 표 8과 같다.First, in order to check the performance of application execution prediction, 500 application test data were executed in order, and the number of occurrences of Hot Launch, Warm Launch, and Cold Launch were measured against the existing system and the proposed system. The results of calculating the average by accumulating the types of application execution that occur when executing 500 application usage records are shown in Table 8 below.
<표 8>Table 8
Android+ZRAM+AMMS의 애플리케이션 실행에서 가장 오래 걸리는 Cold Launch의 평균 횟수가 76.4회로, Android+ZRAM+LRU의 85회 대비 약 10% 감소하였다. 또한 일부 애플리케이션 데이터를 메모리에 불러오는 Warm Launch의 경우에서도 14.4회에서 12.8회로 10%가 감소하였다.The average number of Cold Launches, which took the longest to run Android+ZRAM+AMMS applications, was 76.4, about 10% less than 85 of Android+ZRAM+LRU. In addition, in the case of Warm Launch, which loads some application data into memory, the decrease was 10% from 14.4 to 12.8.
본 발명의 시스템이 기존 시스템보다 애플리케이션이 실행될 확률을 기존 시스템보다 정확하게 예측하여, 실행될 확률이 높은 애플리케이션이 메인 메모리에서 바로 실행되는 Hot Launch 횟수가 증가하였음을 확인할 수 있다.The system of the present invention accurately predicts the probability that the application will be executed than the existing system than the existing system, and it can be confirmed that the number of hot launches in which the application with a high probability of execution is directly executed in the main memory has increased.
다음으로 기존 시스템과 본 발명의 시스템에 대한 애플리케이션 실행 예측 성능이 애플리케이션 실행 시간에 미치는 영향을 알아보기 위해 애플리케이션이 실행되는 시간을 측정하였다. 애플리케이션 실행 시간은 애플리케이션의 로딩, 프로세스 생성, 액티비티 생성을 한 이후 화면에 View를 그리는 시간을 말한다. 애플리케이션의 실행 시간은 안드로이드 프레임워크에서 제공하는 실행 시간 측정 도구를 이용하였다.Next, the application execution time was measured to determine the effect of the application execution prediction performance on the existing system and the system of the present invention on the application execution time. Application execution time refers to the time to draw a view on the screen after application loading, process creation, or activity creation. The execution time of the application was performed using the execution time measurement tool provided by the Android framework.
실행 시간 측정 도구는 Cold Launch 및 Warm Launch에 대해서만 실행 시간을 제공하기 때문에 애플리케이션 전체가 메모리에 캐시되어 바로 실행이 되는 Hot Launch의 경우는 실행 시간을 측정하지 않았다. 애플리케이션 테스트 데이터 500개를 순서대로 실행하여 Cold Launch와 Warm Launch에 대해 실행 시간을 누적해 평균을 계산한 결과는 하기 표 9와 같다.Since the execution time measurement tool provides execution time only for Cold Launch and Warm Launch, in the case of Hot Launch, where the entire application is cached in memory and executed immediately, the execution time was not measured. The results of calculating the average by accumulating execution times for Cold Launch and Warm Launch by running 500 application test data in order are shown in Table 9 below.
<표 9>Table 9
Warm Launch의 평균 누적 시간은 기존 시스템의 7095.8ms에서 본 발명 시스템의 6302.8ms로 약 11% 감소하였다. Cold Launch는 기존 시스템의 106128.6ms에서 본 발명 시스템의 86810ms로 약 18% 감소하였다.The average cumulative time of Warm Launch was reduced by about 11% from 7095.8 ms of the existing system to 6302.8 ms of the present system. Cold Launch was reduced by about 18% from 106128.6ms of the existing system to 86810ms of the present system.
Warm Launch와 Cold Launch의 누적 실행 시간의 평균은 본 발명 시스템이 기존 시스템 대비 약 17% 감소하였다. Warm Launch와 Cold Launch의 실행 시간이 Hot Launch보다 길기 때문에, Warm Launch와 Cold Launch의 실행 시간이 모두 감소한다는 것은 전체 애플리케이션의 평균 실행 시간이 감소한다는 것을 나타낸다.The average of the cumulative execution time of Warm Launch and Cold Launch is about 17% lower than that of the existing system. Since the execution time of Warm Launch and Cold Launch is longer than that of Hot Launch, the decrease of both Warm Launch and Cold Launch execution times indicates that the average execution time of the entire application decreases.
본 발명은 어떤 애플리케이션의 실행될 확률을 분석하여 메모리 관리에 적용하기 때문에, 메모리 부족상황에서 실행 확률이 낮은 애플리케이션의 메모리를 우선 회수함으로써 실행될 확률이 높은 애플리케이션의 실행 속도를 평균적으로 향상시킬 수 있다.Since the present invention analyzes the probability of execution of an application and applies it to memory management, it is possible to averagely improve the execution speed of an application having a high probability of being executed by first retrieving the memory of the application having a low probability of execution in a memory shortage situation.
스마트폰의 하드웨어 성능이 높아지고, 사용자들이 고사양을 요구하는 응용 프로그램들을 스마트폰에 설치하여 사용하면서 많은 양의 메인 메모리가 필요하게 되었다. 이 문제를 해결하고자 기존에는, 보다 효율적으로 메인 메모리를 관리하는 ZRAM 스왑 기법이나 보조 저장장치를 활용하는 스왑 기법 등이 개발된 바 있다.The hardware performance of smartphones has increased, and a large amount of main memory is required as users install and use applications that require high specifications on their smartphones. In order to solve this problem, a ZRAM swap technique that manages main memory more efficiently or a swap technique that utilizes auxiliary storage devices has been developed.
다만, ZRAM은 메인 메모리를 사용하기 때문에 크기를 확장하는데 한계가 있으며, 보조 기억장치를 스왑 공간으로 사용하는 전통적인 스왑핑은 반응 시간이 오래 걸리는 문제와, Nand Flash 메모리의 Wear-Out 문제로 스마트폰에는 적용되지 못하는 한계점을 안고 있다. 또한, 기존 LRU 방식의 메모리 관리 정책은 사용자가 사용하는 애플리케이션의 종류가 많아지면서 그 효과가 저하된다.However, since ZRAM uses main memory, there is a limit to expand the size, and traditional swapping using auxiliary storage as a swap space takes a long time to respond and smartphones suffer from wear-out of Nand Flash memory. There are limitations that cannot be applied to. In addition, the effect of the existing LRU method memory management policy decreases as the number of applications used by the user increases.
이러한 문제를 해결하기 위해 본 발명의 메모리 관리 시스템은 사용자가 애플리케이션을 사용하는 정보를 수집하여 학습하고, 애플리케이션이 다음에 실행될 확률을 예측하여 메모리를 관리할 수 있다. 실행 확률 정보를 분석한 뒤 메모리 부족 상황에서 가장 실행 확률이 낮은 애플리케이션부터 메모리 공간에서 제거하기 때문에 자주 사용되는 애플리케이션이 메모리에 최대한 남아 있고 평균 실행 시간을 감소시키는 효과가 있다. 실제 스마트폰 사용자가 사용한 기록을 바탕으로 성능 시험을 수행한 결과, 본 발명은 기존 스마트폰의 메모리 관리 기술에 비해 사용자가 실행할 확률이 높은 애플리케이션들이 메모리 공간에 더 오래 남아서 재개되는 횟수가 약 10% 증가하였고, 애플리케이션의 평균 실행 시간을 약 17% 감소시킨 것을 확인할 수 있다.To solve this problem, the memory management system of the present invention may collect and learn information that a user uses an application, and manage memory by predicting a probability that an application will be executed next. After analyzing the execution probability information, since the application with the lowest execution probability is removed from the memory space in a memory shortage situation, frequently used applications remain in memory as much as possible and have an effect of reducing the average execution time. As a result of performing a performance test based on the records used by the actual smart phone users, the present invention is about 10% of the number of times that applications that are more likely to be executed by users remain in the memory space for longer than the existing smart phone memory management technology and resume. It can be seen that it increased, and the average execution time of the application was reduced by about 17%.
이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.Although the preferred embodiments of the present invention have been described above, the present invention can use various changes, modifications, and equivalents. It is clear that the present invention can be equally applied by appropriately modifying the above embodiments. Therefore, the above description is not intended to limit the scope of the present invention as defined by the following claims.
100 : 프레임워크 모듈 (Android Framework)
110 : 실행정보 생성부 (Activity/Process Context Generator)
130 : 네트워크 학습부 (Application Usage Trainer)
150 : 실행확률 예측부 (Application Usage Predictor)
200 : 커널 모듈 (Android Kernel)
210 : 실행확률 저장부 (Process Management)
230 : 메모리 확보부 (Memory Management)100: Framework module (Android Framework)
110: execution information generator (Activity/Process Context Generator)
130: Network Usage Department (Application Usage Trainer)
150: execution probability prediction unit (Application Usage Predictor)
200: kernel module (Android Kernel)
210: execution probability storage (Process Management)
230: Memory Management (Memory Management)
Claims (12)
상기 예측된 실행확률에 기초하여 애플리케이션의 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보하는 커널 모듈;을 포함하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템.A framework module that generates execution information on when at least one or more applications are executed, and predicts an execution probability for each of the at least one application by learning a long short-term memory (LSTM) network with the generated execution information ; And
A memory management system based on application usage pattern analysis, including; a kernel module that secures memory by terminating the application in the order of low execution probability of the application based on the predicted execution probability.
적어도 하나 이상의 애플리케이션이 언제 실행되었는지에 대한 실행정보를 생성하는 실행정보 생성부;
상기 생성된 실행정보를 LSTM(Long Short-Term Memory) 네트워크에 입력하여 상기 적어도 하나 이상의 애플리케이션의 사용 패턴을 학습하는 네트워크 학습부; 및
상기 학습된 사용 패턴에 기초하여 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측하는 실행확률 예측부;를 포함하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템.The method of claim 1, wherein the framework module,
An execution information generation unit that generates execution information on when at least one application is executed;
A network learning unit that inputs the generated execution information into an LSTM (Long Short-Term Memory) network to learn a usage pattern of the at least one application; And
And an execution probability predicting unit for predicting an execution probability for each of the at least one application based on the learned usage pattern.
상기 예측된 실행확률을 저장하는 실행확률 저장부; 및
기 설정된 메모리의 가용기준치를 초과할 경우, 상기 저장된 실행확률에 기초하여 애플리케이션 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보하는 메모리 확보부;를 포함하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템.The method of claim 1, wherein the kernel module,
An execution probability storage unit for storing the predicted execution probability; And
Memory management system based on the application usage pattern analysis, including; if the exceeding the available reference value of the preset memory, a memory securing unit for securing the memory by terminating the application in the order of low application execution probability based on the stored execution probability.
상기 실행확률 예측부에 의해 실행확률을 예측할 때마다 업데이트되는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템.According to claim 3, The execution probability stored in the execution probability storage unit,
A memory management system based on application usage pattern analysis that is updated whenever the execution probability is predicted by the execution probability prediction unit.
상기 기 설정된 메모리의 가용기준치보다 작을 때까지 애플리케이션을 종료하여 메모리를 확보하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템.The method of claim 3, wherein the memory securing unit,
A memory management system based on application usage pattern analysis that secures memory by terminating the application until it is less than the available reference value of the preset memory.
아래 수식 1 내지 수식 6으로 정의되는 (시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수), (시간 t에서 LSTM에 데이터를 저장하는 메모리 셀), (시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수), (시간 t에서 LSTM의 출력 벡터)로 구성하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템.
<수식 1>
(: 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 2>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 3>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 4>
(: 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀, : 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수)
<수식 5>
(: 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 6>
(: 시간 t에서 LSTM의 출력 벡터, : 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀)The method of claim 2, wherein the LSTM network,
Defined by Equations 1 to 6 below (Forget gate function that determines the amount of data to be discarded among the stored data at time t), (At time t Input gate function to generate data to be stored in), (At time t Input gate function to generate data to be stored in), (Memory cell storing data in LSTM at time t), (At time t Input gate function to select the data to be stored in) Memory management system based on application usage pattern analysis consisting of (output vector of LSTM at time t).
<Equation 1>
( : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 2>
( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 3>
( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 4>
( : Memory cell that stores data in LSTM at time t, : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : At time t Input gate function to generate data to be stored in, : At time t Input gate function to generate data to be stored in)
<Equation 5>
( : At time t Input gate function to select data to be stored in, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 6>
( : Output vector of LSTM at time t, : At time t Input gate function to select data to be stored in, : Memory cell storing data in LSTM at time t)
아래 수식 7 및 수식 8로 정의되는 실행확률 값 산출식을 통해 각 애플리케이션에 대한 실행확률 값을 산출하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 시스템.
<수식 7>
(xt: 시간 t에서 실행된 애플리케이션 ui_t를 LSTM로 입력되는 입력벡터, ui: 애플리케이션, ht: xt에 의해 LSTM로부터 출력되는 출력벡터, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)
<수식 8>
(: 시간 t까지 실행된 애플리케이션 기록, : 시간 t+1에서의 애플리케이션 ui의 실행확률 값, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)The method of claim 6, wherein the execution probability prediction unit,
A memory management system based on an application usage pattern analysis that calculates an execution probability value for each application through an execution probability value calculation formula defined by Equations 7 and 8 below.
<Equation 7>
(xt: input vector inputted to LSTM with application ui_t executed at time t, ui: application, ht: output vector outputted from LSTM by xt, i: application of execution at time t is the number of applications in set U Pointing index, j: vector Jth index of m, number of elements in set U)
<Equation 8>
( : Records the applications executed up to time t, : The value of the execution probability of the application ui at time t+1, i: the index indicating the number of applications in the set U that are executed at time t, j: vector Jth index of m, number of elements in set U)
네트워크 학습부에서 상기 생성된 실행정보를 LSTM(Long Short-Term Memory) 네트워크에 입력하여 상기 적어도 하나 이상의 애플리케이션의 사용 패턴을 학습하는 네트워크 학습단계;
실행확률 예측부에서 상기 학습된 사용 패턴에 기초하여 상기 적어도 하나 이상의 애플리케이션 각각에 대한 실행확률을 예측하는 실행확률 예측단계;
실행확률 저장부에서 상기 예측된 실행확률을 저장하는 실행확률 저장단계; 및
메모리 확보부에서 기 설정된 메모리의 가용기준치를 초과할 경우, 상기 저장된 실행확률에 기초하여 애플리케이션 실행확률이 낮은 순으로 애플리케이션을 종료하여 메모리를 확보하는 메모리 확보단계;를 포함하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법.An execution information generation step of generating execution information on when the at least one application is executed by the execution information generation unit;
A network learning step of learning the usage pattern of the at least one application by inputting the generated execution information into a long short-term memory (LSTM) network in a network learning unit;
An execution probability prediction step in which an execution probability prediction unit predicts an execution probability for each of the at least one application based on the learned usage pattern;
An execution probability storage step of storing the predicted execution probability in an execution probability storage unit; And
Based on the analysis of the application usage pattern, including: a memory securing step of securing the memory by terminating the application in the order of low application execution probability based on the stored execution probability, when the memory usage unit exceeds the preset usage standard of the memory; How to manage memory.
상기 실행확률 예측단계에 의해 실행확률을 예측할 때마다 업데이트되는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법.The execution probability stored in the execution probability storage step is 10.
A memory management method based on an application usage pattern analysis that is updated whenever the execution probability is predicted by the execution probability prediction step.
상기 기 설정된 메모리의 가용기준치보다 작을 때까지 애플리케이션을 종료하여 메모리를 확보하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법.The method of claim 8, wherein the step of securing the memory,
A memory management method based on an application usage pattern analysis that secures a memory by terminating an application until it is smaller than the available reference value of the preset memory.
아래 수식 1 내지 수식 6으로 정의되는 (Forget Gate) ft, (Input Gate) gt 및 it, 메모리 셀 ct, (Output Gate) ot, 시간 t에서 LSTM로부터 출력되는 출력벡터 ht로 구성하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법.
<수식 1>
(: 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 2>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 3>
(: 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 4>
(: 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀, : 시간 t에서 저장된 데이터 중 버릴 데이터의 양을 결정하는 망각 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수, : 시간 t에서 에 저장될 데이터를 생성하는 입력 게이트 함수)
<수식 5>
(: 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시그모이드 활성화 함수, : 시간 t에서 LSTM에 입력되는 입력벡터, : 함수에서 각 에 가중되는 벡터, : 시간 t-1에서 LSTM의 출력 벡터, : 함수에서 각 에 가중되는 벡터, : 함수를 위한 바이어스 상수)
<수식 6>
(: 시간 t에서 LSTM의 출력 벡터, : 시간 t에서 에 저장될 데이터를 선택하는 입력 게이트 함수, : 시간 t에서 LSTM에 데이터를 저장하는 메모리 셀)The method of claim 8, wherein the LSTM network,
Application usage pattern analysis consisting of (Forget Gate) ft, (Input Gate) gt and it, memory cell ct, (Output Gate) ot, and output vector ht output from LSTM at time t defined by Equations 1 to 6 below Memory management method based on.
<Equation 1>
( : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 2>
( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 3>
( : At time t Input gate function to generate data to be stored in, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 4>
( : Memory cell that stores data in LSTM at time t, : Forgetting gate function which determines the amount of data to be discarded among the stored data at time t, : At time t Input gate function to generate data to be stored in, : At time t Input gate function to generate data to be stored in)
<Equation 5>
( : At time t Input gate function to select data to be stored in, : Sigmoid activation function, : Input vector input to LSTM at time t, : Each in function Vector weighted to, : LSTM output vector at time t-1, : Each in function Vector weighted to, : Bias constant for function)
<Equation 6>
( : Output vector of LSTM at time t, : At time t Input gate function to select data to be stored in, : Memory cell storing data in LSTM at time t)
아래 수식 7 및 수식 8로 정의되는 실행확률 값 산출식을 통해 각 애플리케이션에 대한 실행확률 값을 산출하는 애플리케이션 사용 패턴 분석에 기초한 메모리 관리 방법.
<수식 7>
(xt: 시간 t에서 실행된 애플리케이션 ui_t를 LSTM로 입력되는 입력벡터, ui: 애플리케이션, ht: xt에 의해 LSTM로부터 출력되는 출력벡터, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)
<수식 8>
(: 시간 t까지 실행된 애플리케이션 기록, : 시간 t+1에서의 애플리케이션 ui의 실행확률 값, i: 시간 t에서 실행된 애플리케이션이 집합 U의 몇 번째 애플리케이션인지 가리키는 인덱스, j: 벡터 의 j번째 인덱스, m: 집합 U의 원소의 수)The method of claim 11, wherein the predicting the probability of execution,
A memory management method based on an application usage pattern analysis that calculates an execution probability value for each application through an execution probability value calculation formula defined by Equations 7 and 8 below.
<Equation 7>
(xt: input vector inputted to LSTM with application ui_t executed at time t, ui: application, ht: output vector outputted from LSTM by xt, i: application of execution at time t is the number of applications in set U Pointing index, j: vector Jth index of m, number of elements in set U)
<Equation 8>
( : Records the applications executed up to time t, : The value of the execution probability of the application ui at time t+1, i: the index indicating the number of applications in the set U that are executed at time t, j: vector Jth index of m, number of elements in set U)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180169809 | 2018-12-26 | ||
KR1020180169809 | 2018-12-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200080164A true KR20200080164A (en) | 2020-07-06 |
KR102280298B1 KR102280298B1 (en) | 2021-07-22 |
Family
ID=71571272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190170005A KR102280298B1 (en) | 2018-12-26 | 2019-12-18 | Memory management system and method considering application usage patterns analysis |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102280298B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220011311A (en) * | 2020-07-21 | 2022-01-28 | (주)에스디생명공학 | Composition for the Improvement and Protection of Liver Health Comprising Extract of Hibiscus Syriacus |
WO2022154263A1 (en) * | 2021-01-13 | 2022-07-21 | 삼성전자 주식회사 | Electronic device and operation method of electronic device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100021725A (en) * | 2008-08-18 | 2010-02-26 | 삼성전자주식회사 | Apparatus and method for reallocation of memory in mobile communication terminal |
KR20150108695A (en) * | 2014-03-18 | 2015-09-30 | 삼성전자주식회사 | Method and Apparatus for Managing Memory |
US20160259557A1 (en) | 2015-03-05 | 2016-09-08 | Samsung Electronics Co., Ltd. | Mobile device and data management method of the same |
KR101897923B1 (en) * | 2017-09-20 | 2018-10-31 | 한국전력공사 | System for providing identify target object based on neural network learning model, method thereof, and computer readable storage having the same |
KR101945117B1 (en) * | 2017-08-14 | 2019-02-01 | 성균관대학교산학협력단 | A smart device and method for managing memory thereof |
-
2019
- 2019-12-18 KR KR1020190170005A patent/KR102280298B1/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100021725A (en) * | 2008-08-18 | 2010-02-26 | 삼성전자주식회사 | Apparatus and method for reallocation of memory in mobile communication terminal |
KR20150108695A (en) * | 2014-03-18 | 2015-09-30 | 삼성전자주식회사 | Method and Apparatus for Managing Memory |
US20160259557A1 (en) | 2015-03-05 | 2016-09-08 | Samsung Electronics Co., Ltd. | Mobile device and data management method of the same |
KR101945117B1 (en) * | 2017-08-14 | 2019-02-01 | 성균관대학교산학협력단 | A smart device and method for managing memory thereof |
KR101897923B1 (en) * | 2017-09-20 | 2018-10-31 | 한국전력공사 | System for providing identify target object based on neural network learning model, method thereof, and computer readable storage having the same |
Non-Patent Citations (1)
Title |
---|
이상정. ‘텐서플로우 - 순환 신경망 2’. 순천향대학교 컴퓨터공학과, 2018.02.28., pp.1-21. (출처: http://cs2.sch.ac.kr/wordpress/wp-content/uploads/2018/02/18-8-%ED%85%90%EC%84%9C%ED%94%8C%EB%A1%9C%EC%9A%B0-RNN2.pdf)* * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220011311A (en) * | 2020-07-21 | 2022-01-28 | (주)에스디생명공학 | Composition for the Improvement and Protection of Liver Health Comprising Extract of Hibiscus Syriacus |
WO2022154263A1 (en) * | 2021-01-13 | 2022-07-21 | 삼성전자 주식회사 | Electronic device and operation method of electronic device |
Also Published As
Publication number | Publication date |
---|---|
KR102280298B1 (en) | 2021-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113010260B (en) | Container number elastic expansion method and container number elastic expansion method system | |
US20190095250A1 (en) | Application program management method and device | |
JP2017228086A (en) | Machine learning management program, machine learning management method, and machine learning management device | |
US20070136402A1 (en) | Automatic prediction of future out of memory exceptions in a garbage collected virtual machine | |
RU2651216C2 (en) | Method, device and computer storage medium for data migration | |
US10049034B2 (en) | Information processing apparatus | |
KR102280298B1 (en) | Memory management system and method considering application usage patterns analysis | |
CN106802772B (en) | Data recovery method and device and solid state disk | |
CN111274039B (en) | Memory recycling method and device, storage medium and electronic equipment | |
CN112882830A (en) | Video memory management method, video memory management device, model training device, electronic equipment and storage medium | |
JP2023139227A (en) | Battery health state prediction method, device, and electronic instrument and readable storage medium | |
CN109582649A (en) | A kind of metadata storing method, device, equipment and readable storage medium storing program for executing | |
Lee et al. | Mobile memory management system based on user's application usage patterns | |
KR102118799B1 (en) | Apparatus and Method for managing power of processor in a mobile terminal device | |
CN114996173A (en) | Method and device for managing write operation of storage equipment | |
Tu et al. | Unveiling energy efficiency in deep learning: Measurement, prediction, and scoring across edge devices | |
CN108628678B (en) | Method, device and equipment for determining memory parameters | |
CN117235088A (en) | Cache updating method, device, equipment, medium and platform of storage system | |
CN111694835B (en) | Number section access method, system, equipment and storage medium of logistics electronic bill | |
CN114389953B (en) | Method and system for dynamic expansion and contraction of Kubernetes container based on flow prediction | |
US20230100110A1 (en) | Computing resource management method, electronic equipment and program product | |
US11494697B2 (en) | Method of selecting a machine learning model for performance prediction based on versioning information | |
CN113296951A (en) | Resource allocation scheme determination method and equipment | |
CN116107761B (en) | Performance tuning method, system, electronic device and readable storage medium | |
Tasneem et al. | Android memory optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |