KR20200032253A - 부트-업 동안 서비스의 스케줄링을 관리하기 위한 방법 및 장치 - Google Patents

부트-업 동안 서비스의 스케줄링을 관리하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20200032253A
KR20200032253A KR1020207007696A KR20207007696A KR20200032253A KR 20200032253 A KR20200032253 A KR 20200032253A KR 1020207007696 A KR1020207007696 A KR 1020207007696A KR 20207007696 A KR20207007696 A KR 20207007696A KR 20200032253 A KR20200032253 A KR 20200032253A
Authority
KR
South Korea
Prior art keywords
services
electronic device
boot
cluster
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
KR1020207007696A
Other languages
English (en)
Other versions
KR102621670B1 (ko
Inventor
아티칸트 싱흐
아누라드하 카누코트라
김현준
이경석
라마링감 라마무르티
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20200032253A publication Critical patent/KR20200032253A/ko
Application granted granted Critical
Publication of KR102621670B1 publication Critical patent/KR102621670B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)

Abstract

따라서 본 명세서의 실시 예들은 멀티-코어 프로세서를 포함하는 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하는 방법을 제공한다. 이 방법은 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하는 단계를 포함한다. 또한, 이 방법은 결정된 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계를 포함한다. 또한, 이 방법은 서비스가 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지를 결정하는 단계를 포함한다. 또한, 이 방법은 결정된 서비스들 각각에 라벨 데이터를 태깅하는 단계를 포함하며, 이 라벨 데이터는 서비스가 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다. 또한, 이 방법은 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나로 클러스터링 하는 단계를 포함한다.

Description

부트-업 동안 서비스의 스케줄링을 관리하기 위한 방법 및 장치
본 개시는 컴퓨팅 디바이스의 부팅에 관한 것이며, 보다 구체적으로는 부트-업(boot-up) 동안 서비스들의 스케줄링을 관리하기 위한 방법 및 장치에 관한 것이다.
전자 디바이스가 켜지면, 전자 디바이스는 정상 작동을 시작하기 전에 부팅 프로세스를 거치게 된다. 전자 디바이스의 부팅 시간은 전자 디바이스의 성능을 결정하는 주요 요인들 중 하나이다.
본 개시의 일 양태는 부트-업 동안 서비스들의 스케줄링을 관리하기 위한 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 멀티-코어 프로세서를 포함하는 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하고, 결정된 서비스들 각각에 대한 중앙 처리 장치(CPU) 로드, 병렬화 팩터 및 메모리 이용 팩터를 포함하는 전자 디바이스와 관련된 시스템 파라미터들을 등록하기 위한 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 서비스가 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지 여부를 결정하기 위한 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 서비스가 중요한 것인지 또는 중요하지 않은 것인지 여부를 나타내기 위해 결정된 서비스들 각각에 라벨 데이터를 태깅하는 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나로 클러스터링하기 위한 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 전자 디바이스의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정하기 위한 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 결정된 새로운 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들 및 후속 부트-업 프로세스 동안 태깅 된 라벨 데이터에 기초하여, 가속 클러스터 및 감속 클러스터 중 하나에서 후속 부트-업 프로세스 동안 결정된 새로운 서비스들을 동적으로 업데이트하기 위한 방법 및 장치를 제공하는 것이다.
본 개시의 다른 양태는 후속 부트-업 프로세스 동안에 멀티-코어 프로세서의 적어도 하나의 빅 코어(big core)를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고 멀티-코어 프로세서의 적어도 하나의 스몰 코어(small core)를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링하기 위한 방법 및 장치를 제공하는 것이다.
따라서 본 명세서의 실시 예들은 멀티-코어 프로세서를 포함하는 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하는 방법을 제공한다. 이 방법은 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하는 단계를 포함한다. 또한, 이 방법은 결정된 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계를 포함한다. 또한, 이 방법은 서비스가 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지 여부를 결정하는 단계를 포함한다. 또한, 이 방법은 결정된 서비스들 각각에 라벨 데이터를 태깅하는 단계를 포함하며, 이 라벨 데이터는 서비스가 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다. 또한, 이 방법은 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나로 클러스터링 하는 단계를 포함한다.
일 실시 예에서, 이 방법은 전자 디바이스에서 후속 부트-업 프로세스를 검출하는 단계를 더 포함한다. 또한, 이 방법은 가속 클러스터에서 이용 가능한 서비스들 및 감속 클러스터에서 이용 가능한 서비스들을 결정하는 단계를 포함한다. 또한, 이 방법은 후속 부트-업 프로세스 동안에 멀티-코어 프로세서의 적어도 하나의 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고, 멀티-코어 프로세서의 적어도 하나의 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링 하는 단계를 포함한다.
일 실시 예에서, 이 방법은 전자 디바이스의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정하는 단계를 더 포함한다. 또한, 이 방법은 후속 부트-업 프로세스 동안에 결정된 새로운 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계를 포함한다. 또한, 이 방법은 후속 부트-업 프로세스 동안에 결정된 새로운 서비스들 각각에 대한 라벨 데이터를 중요한 것으로 또는 중요하지 않은 것으로 태깅하는 단계를 포함한다. 또한, 이 방법은 후속 부트-업 프로세스 동안에 결정된 새로운 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 가속 클러스터 및 감속 클러스터 중 하나에서 후속 부트-업 프로세스 동안 결정된 새로운 서비스들을 동적으로 업데이트하는 단계를 포함한다.
일 실시 예에서, 전자 디바이스와 관련된 시스템 파라미터들은 CPU 로드, 병렬화 팩터(parallelizability factor) 및 메모리 이용 팩터(memory utilization factor) 중 적어도 하나를 포함한다.
일 실시 예에서, 각각의 서비스들은, 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터를 4D(four Dimensional) 클러스터링 모델에 피딩하고, 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여 4D 클러스터링 모델의 4개의 축 상에 서비스들을 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성하고, 적어도 2개의 데이터 포인트가 임계 값보다 클 경우 클러스터 센터를 결정하고 - 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트됨 -, 클러스터 센터에 기초하여 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 것에 의하여 가속 클러스터 및 감속 클러스 중 하나에 클러스터링 된다.
일 실시 예에서, 4D 클러스터링 모델의 4개의 축의 X축은 CPU 로드를 나타내고, 4D 클러스터링 모델의 4개의 축의 Y축은 메모리 이용 팩터를 나타내고, 4D 클러스터링 모델의 4개의 축의 Z축은 병렬화 팩터를 나타내고, 4D 클러스터링 모델의 4개의 축의 W축은 라벨 데이터를 나타낸다.
일 실시 예에서, 서비스 중 하나가 미리 정의된 개수의 다른 서비스들을 개시시키고 서비스가 전자 디바이스의 알림 패널에서 인에이블 또는 디스에이블될 경우 서비스가 부트-업 프로세스에 중요한 것으로 결정되며, 서비스가 미리 정의된 개수의 다른 서비스들을 개시시키지 않는 경우에는 서비스가 부트-업 프로세스에 중요하지 않은 것으로 결정된다.
따라서, 본 명세서의 실시 예들은 멀티-코어 프로세서를 포함하는 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하는 방법을 제공한다. 이 방법은 전자 디바이스에서 부트-업 프로세스를 검출하는 단계를 포함한다. 또한, 이 방법은 가속 클러스터에서 이용 가능한 서비스들 및 감속 클러스터에서 이용 가능한 서비스들을 결정하는 단계를 포함한다. 또한, 이 방법은 부트-업 프로세스 동안에 멀티-코어 프로세서의 적어도 하나의 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고 멀티-코어 프로세서의 적어도 하나의 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링 하는 단계를 포함한다.
일 실시 예에서, 가속 클러스터 및 감속 클러스터 중 하나는 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하고, 결정된 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록하고, 서비스가 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지 여부를 결정하고, 결정된 서비스들 각각에 대하여 라벨 데이터를 태깅하고 - 라벨 데이터는 서비스가 중요한 것인지 또는 중요하지 않은 것인지 여부를 나타냄 -, 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터를 4D 클러스터링 모델에 피딩하고, 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 4D 클러스터링 모델의 4개의 축 상에 서비스들을 나타내는 데이터 포인트들을 플롯팅함으로써 4D 맵을 생성하고, 적어도 2개의 데이터 포인트들이 임계 값보다 큰 경우 클러스터 센터를 결정하고 - 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트됨 -, 클러스터 센터에 기초하여, 가속 클러스터 및 감속 클러스터 중 하나에 서비스들을 나타내는 데이터 포인트들을 클러스터링 하는 것에 의해 생성된다.
따라서, 본 명세서의 실시 예들은 부트-업 동안에 서비스들의 스케줄링을 관리하기 위한 전자 디바이스를 제공한다. 이 전자 디바이스는 메모리, 멀티-코어 프로세서 및 스케줄러를 포함한다. 스케줄러는 메모리 및 프로세서에 커플링된다. 스케줄러는 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하도록 구성된다. 또한, 스케줄러는 결정된 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록하도록 구성된다. 또한, 스케줄러는 서비스가 중요한 것인지 또는 중요하지 않은 것인지 여부를 결정하도록 구성된다. 또한, 스케줄러는 결정된 서비스들 각각에 라벨 데이터를 태깅하도록 구성되며, 여기서 라벨 데이터는 서비스가 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지 여부를 나타낸다. 또한, 스케줄러는 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나로 클러스터링 하도록 구성된다.
따라서, 본 명세서의 실시 예들은 부트-업 동안에 서비스들의 스케줄링을 관리하기 위한 전자 디바이스를 제공한다. 이 전자 디바이스는 메모리, 멀티-코어 프로세서 및 스케줄러를 포함한다. 스케줄러는 메모리 및 프로세서에 커플링된다. 스케줄러는 전자 디바이스에서 부트-업 프로세스를 검출하도록 구성된다. 또한, 스케줄러는 가속 클러스터에서 이용 가능한 서비스들 및 감속 클러스터에서 이용 가능한 서비스들을 결정하도록 구성된다. 또한, 스케줄러는 부트-업 프로세스 동안 멀티-코어 프로세서의 적어도 하나의 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고 멀티-코어 프로세서의 적어도 하나의 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링 하도록 구성된다.
본 명세서의 실시 예들의 이들 및 다른 양태들은 다음의 설명 및 첨부 도면과 함께 고려될 때 더 잘 인식되고 이해될 것이다. 그러나, 다음의 설명이 바람직한 실시 예들 및 이것의 다수의 특정 세부 사항을 나타내고 있지만, 이것은 제한이 아닌 예시로서 제공된다는 것을 이해해야 한다. 본 명세서의 실시 예들의 범위 내에서 다수의 변경 및 수정이 본 발명의 사상을 벗어나지 않고 이루어질 수 있으며, 본 명세서의 실시 예들은 이러한 모든 수정 사항들을 포함한다.
본 개시의 다양한 실시 예들에 따르면, 전자 디바이스에서 부트-업 프로세스 동안에 서비스들의 스케줄링을 관리함으로써, 최적화된 부팅 시간이 제공될 수 있다.
이 방법이 첨부 도면들에 도시되어 있으며, 이 도면들 전체에 걸쳐서 유사한 참조 부호는 다양한 도면들의 대응하는 부분을 나타낸다. 본 명세서의 실시 예들은 도면들을 참조하는 다음의 설명으로부터 더 잘 이해될 것이다.
도 1은 종래 기술에 따른 전자 디바이스에서의 예시적인 태스크 스케줄링 시스템을 나타내는 개략도이다.
도 2는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들을 스케줄링하기 위한 예시적인 방법과 본 제안된 방법의 비교를 도시한 것이다.
도 3은 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 새로운 서비스들을 스케줄링하기 위한 예시적인 방법과 본 제안된 방법의 비교를 도시한 것이다.
도 4a는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 전자 디바이스의 다양한 하드웨어 컴포넌트들을 나타내는 블록도이다.
도 4b는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 전자 디바이스의 다양한 하드웨어 컴포넌트들을 나타내는 다른 블록도이다.
도 5는 본 명세서에 개시된 일 실시 예에 따른, 스케줄러의 다양한 하드웨어 컴포넌트들을 나타내는 블록도이다.
도 6은 본 명세서에 개시된 일 실시 예에 따른, 클러스터링 엔진의 다양한 하드웨어 컴포넌트들을 나타내는 블록도이다.
도 7a는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들을 클러스터링하기 위한 방법을 나타내는 흐름도이다.
도 7b는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 상이한 클러스터들에서 서비스들을 스케줄링하기 위한 방법을 나타내는 흐름도이다.
도 7c는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 방법을 나타내는 흐름도이다.
도 7d는 본 명세서에 개시된 일 실시 예에 따른, 서비스들 각각을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 다양한 단계들을 나타내는 흐름도이다.
도 8은 본 명세서에 개시된 일 실시 예에 따른, 다양한 부팅 단계들에 대한 부팅 시간 라인을 나타내는 개략도이다.
도 9는 본 명세서에 개시된 일 실시 예에 따른, 서비스들에 라벨 데이터를 태깅하는 다양한 단계들을 나타내는 흐름도이다.
도 10a는 본 명세서에 개시된 일 실시 예에 따른, 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 예시적인 시나리오를 도시한 것이다.
도 10b는 본 명세서에 개시된 일 실시 예들에 따른, 3D 모델에서 데이터 포인트들 및 클러스터 센터의 플로팅을 도시한 것이다.
도 10c는 본 명세서에 개시된 일 실시 예에 따른, 4D 클러스터링 모델에서 가속 클러스터 및 감속 클러스터를 나타내는 개략도이다.
도 11은 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스의 알림 패널에서 서비스의 인에이블/디스에이블에 기초하여 라벨 데이터를 서비스들에 태깅하는 다양한 단계들을 나타내는 흐름도이다.
도 12는 본 명세서에 개시된 일 실시 예에 따른, 후속 부트-업 프로세스 동안 알림 패널에서 인에이블/디스에이블 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 동적으로 업데이트하는 예시적인 시나리오를 도시한 것이다.
도 13은 본 명세서에 개시된 일 실시 예에 따른, 후속 부트-업 프로세스 동안 서비스들 또는 새로운 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 동적으로 업데이트하는 다양한 단계들을 나타내는 흐름도이다.
본 명세서의 실시 예들 및 그 다양한 특징들 및 유리한 세부 사항들은 첨부 도면에 도시되고 다음의 설명에서 상세히 설명되는 비제한적인 실시 예들을 참조하여 보다 완전하게 설명된다. 잘 알려진 구성 요소들 및 처리 기술들에 대한 설명은 본 명세서의 실시 예들을 불필요하게 모호화하지 않도록 생략된다. 또한, 일부 실시 예들이 새로운 실시 예들을 형성하기 위해 하나 이상의 다른 실시 예들과 조합될 수 있으므로, 여기에 설명된 다양한 실시 예들은 반드시 상호 배타적인 것은 아니다. 본 명세서에서 사용되는 "또는"이라는 용어는 달리 지시되지 않는 한, 비 배타적인 것을 나타낸다. 본 명세서에서 사용되는 예들은 단지 본 명세서의 실시 예들이 실시될 수 있는 방식의 이해를 용이하게 하고 당업자가 본 명세서의 실시 예들을 실시할 수 있게 하기 위한 것이다. 따라서, 이 예들이 본 명세서의 실시 예들의 범위를 제한하는 것으로 해석되어서는 안된다.
본 기술 분야에서 통상적인 바와 같이, 실시 예들은 설명된 기능 또는 기능들을 수행하는 블록들에 의해 설명되고 예시될 수 있다. 본 명세서에서 관리자, 유닛, 모듈, 하드웨어 컴포넌트 등으로 지칭될 수 있는 이들 블록들은 논리 게이트, 집적 회로, 마이크로 프로세서, 마이크로 컨트롤러, 메모리 회로, 수동 전자 컴포넌트, 능동 전자 컴포넌트, 광학 컴포넌트, 하드와이어 회로 등과 같은 아날로그 및/또는 디지털 회로들에 의해 물리적으로 구현되며, 선택적으로 펌웨어 및 소프트웨어에 의해 구동될 수 있다. 회로들은, 예를 들어 하나 이상의 반도체 칩으로, 또는 인쇄 회로 기판 등과 같은 기판 지지체 상에 구현될 수 있다. 블록을 구성하는 회로는 전용 하드웨어 또는 프로세서(예를 들어, 하나 이상의 프로그램 된 마이크로 프로세서 및 관련 회로)에 의해, 또는 블록의 일부 기능을 수행하기 위한 전용 하드웨어와 블록의 다른 기능들을 수행하기 위한 프로세서의 조합에 의해 구현될 수 있다. 실시 예들의 각각의 블록은 본 개시의 범위를 벗어나지 않고 둘 이상의 상호 작용하는 이산 블록들로 물리적으로 분리될 수 있다. 마찬가지로, 실시 예들의 블록들은 본 개시의 범위를 벗어나지 않으면서 더 복잡한 블록들로 물리적으로 조합될 수 있다.
부팅 프로세스 동안, 전자 디바이스의 예시적인 태스크 스케줄링 시스템은 멀티-코어 프로세서에서 빅 코어들(고속 CPU)에 더 높은 로드를 갖는 태스크(예를 들어, 프로세스 및 서비스들)를 할당한다. 또한, 태스크는 멀티-코어 프로세서의 스몰 코어들(저속 CPU)에 스케줄링 될 수도 있다.
도 1은 전자 디바이스에서의 예시적인 태스크 스케줄링 시스템을 나타내는 개략도이다. 예시적인 시스템에서, 대부분의 태스크들(서비스들과 동일)은 시스템 리소스들(예를 들어, 빅 코어, 스몰 코어 등)에 대한 태스크의 로드에 기초하여 프로세서 상의 코어들에 할당됨으로써, 태스크의 중요도를 고려하는 것 없이 태스크를 수행한다. 부팅 프로세스 동안에 시작되는 태스크와 관련된 모든 서비스들은 빅 코어들 또는 스몰 코어들에 랜덤으로 스케줄링 된다. 중요한 태스크는 적어도 하나의 중요한 서비스를 포함하며, 여기서 다른 다수의 서비스들은 작동을 위해 이 중요한 서비스들에 의존한다. 따라서, 스몰 코어들 상에서 실행되는 중요한 서비스로 인해 다른 다수의 서비스들의 동작이 지연되는 경우, 전자 디바이스의 부팅 시간이 보다 더 증가하게 된다.
예시적인 시스템에서, 서비스들은 부팅 프로세스 동안에 빅 코어에서 스몰 코어로, 그 후에 빅 코어로 등으로 계속 마이그레이팅한다. 이러한 빅 코어와 스몰 코어 사이의 서비스들의 이동은 부팅 시간을 증가시킨다. 또한, 전자 디바이스(예를 들면, 스마트 폰, 태블릿 컴퓨터 등)에 새로운 애플리케이션들을 설치할 경우 다수의 새로운 서비스들이 개시되어 부팅 시간이 길어진다. 전자 디바이스에서 Wi-Fi, Bluetooth, GPS 등과 같은 다양한 서비스들의 활성 상태 변경(예를 들면, 턴 온)으로 인해 또한 전자 디바이스가 부팅하는데 더 많은 시간이 걸리게 된다.
따라서, 상기 언급된 단점들 또는 다른 문제점들을 해결하거나 적어도 최적화된 부팅 시간에 대한 유용한 대안을 제공하는 것이 바람직하다.
따라서 본 명세서의 실시 예들은 멀티-코어 프로세서를 포함하는 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하는 방법을 제공한다. 이 방법은 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하는 단계를 포함한다. 또한, 이 방법은 결정된 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계를 포함한다. 또한, 이 방법은 서비스가 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지 여부를 결정하는 단계를 포함한다. 또한, 이 방법은 결정된 서비스들 각각에 라벨 데이터를 태깅하는 단계를 포함하며, 이 라벨 데이터는 서비스가 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다. 또한, 이 방법은 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나로 클러스터링 하는 단계를 포함한다.
종래의 방법 및 시스템과 달리, 본 제안된 방법은 전자 디바이스에서 부트 업 프로세스 동안 개시되는 서비스들을 가속 및 감속 클러스터들로 구별하도록 사용된다. 가속 클러스터는 중요한 서비스 세트를 나타내고, 감속 클러스터는 중요하지 않은 서비스 세트를 나타낸다. 또한 중요한 서비스들에 더 많은 디바이스 리소스들(예를 들면, 빅 코어)이 스케줄링 된다. 따라서, 이 방법은 전자 디바이스의 부팅 시간의 최적화를 제공하며, 중요한 서비스들의 다른 의존적 서비스들이 작동 지연되지 않게 된다.
본 제안된 전자 디바이스는 등록된 시스템 파라미터들 및 라벨링된 데이터에 기초하여 4D 맵을 생성하기 위한 4D 클러스터링 모델을 포함한다. 전자 디바이스는 새로운 앱이 전자 디바이스에 설치된 것의 검출에 응답하여(이 설치 시에 새로운 서비스들이 개시됨), 4D 맵을 리모델링한다. 전자 디바이스는 또한 전자 디바이스에서의 Wi-Fi, 블루투스, GPS, 야간 모드, 절전 모드 등과 같은 서비스들의 활성화/비활성화를 검출하는 것에 응답하여(이 활성화/비활성화 시에 새로운 서비스들이 개시됨), 4D 맵을 리모델링한다. 또한, 전자 디바이스는 새로운 서비스들을 가속 클러스터로 클러스터링 할 경우 새로운 서비스들이 부팅 시간을 저하시키는지 여부를 추정한다. 새로운 서비스들의 가속 클러스터로의 클러스터링이 부팅 시간을 저하시키는 것을 검출한 것에 응답하여, 전자 디바이스는 최적화된 부팅 시간을 위해 새로운 서비스들을 감속 클러스터로 동적으로 클러스터링 한다. 이에 따라, 중요한 서비스들이 결핍 없이 작동할 수 있도록 디바이스 리소스들이 계속 사용될 수 있다. 따라서, 전자 디바이스는 부팅 시간을 최적화하기 위해 서비스들을 적응적으로 클러스터링 한다.
종래의 방법 및 시스템과 달리, 본 제안된 전자 디바이스의 전력 소모가 부팅 시간의 최적화로 인해서 더 적어지게 되며, 여기서 전원은 예시적인 시스템에 비해 적은 시간 동안 사용된다.
이제 도면들을 참조하면, 보다 구체적으로 도 2 내지 도 13을 참조하면, 바람직한 실시 예들이 도시되어 있다.
도 2는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들을 스케줄링하기 위한 예시적인 방법과 본 제안된 방법의 비교를 도시한 것이다. 예시적인 방법에서, 도 2의 '(a)'에 나타낸 바와 같이, 전자 디바이스에서 부트-업 프로세스를 시작할 때(도 2에 도시되지 않음), 직렬 태스크들(서비스들과 동일)이 전자 디바이스의 멀티-코어 프로세스 상의 코어들에 스케줄링 된다. 직렬 태스크들은 이 직렬 태스크를 수행하기 위해 시스템 리소스들(예를 들어, 빅 코어, 스몰 코어 등)에 대한 직렬 태스크의 로드에 기초하여 코어들에 스케줄링되지만, 직렬 태스크의 중요성을 기초로 하지는 않는다. 따라서, 전자 디바이스는 부트-업 프로세스를 완료하는데 더 많은 시간을 필요로 하기 때문에, 중요한 직렬 태스크는 스몰 코어들에서 실행될 수 있다. 병렬 스레드들이 실행되는 동안, 중요한 태스크들은 빅 코어에서 스몰 코어로 그리고 그 후에 빅 코어로 등과 같이 계속 마이그레이팅하며(CPU 마이그레이션(CPU migration) 이라고 함), 이로 인해 부트-업 프로세스 중에 오버헤드가 발생된다.
본 제안된 방법에 따르면, 도 2의 '(b)'에 나타낸 바와 같이, 전자 디바이스에서 부트-업 프로세스를 시작할 경우에, 전자 디바이스가 부트-업 프로세스 동안 개시되는 복수의 태스크들을 식별한다. 또한, 전자 디바이스는 결정된 태스크들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록한다. 일 실시 예에서, 전자 디바이스와 관련된 시스템 파라미터들은 중앙 처리 장치(CPU) 로드, 병렬화 팩터(parallelizability factor) 및 메모리 이용 팩터(memory utilization factor)를 포함한다.
CPU 로드는 부트-업 프로세스 동안 서비스를 개시하기 위한 CPU 상의 최대 로드이다. 일 실시 예에서, CPU 로드는 CPU 주파수 및 그래픽 처리 유닛(Graphics Processing Unit, GPU) 주파수를 사용하여 추정한다. 병렬화 팩터는 서비스들에 둘 이상의 하위 서비스가 있는 것처럼 달라진다. 메모리 이용 팩터는 부트-업 프로세스 동안 서비스가 사용하는 최대 메모리이다. 일 예에서, CPU 로드 값에 대한 CPU 로드는 시스템 서버 서비스의 경우 0.9%이고, nfc 서비스의 경우 1.7%이다. 일 예에서, 병렬화 팩터 또는 병렬화 팩터의 값은 시스템 서버 서비스의 경우 1이고, nfc 서비스의 경우 0이다. 일 예에서, 메모리 이용 팩터 또는 메모리 이용 팩터의 값은 시스템 서버 서비스의 경우 25,252K이고, nfc 서비스의 경우 20,779K이다.
또한, 전자 디바이스는 태스크가 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 결정한다. 일 실시 예에서, 서비스가 미리 정의된 수의 다른 서비스들을 개시할 경우, 이 서비스는 부트-업 프로세스에 중요한 것으로 결정된다.
일 실시 예에서, 서비스가 전자 디바이스의 알림 패널에서 인에이블 또는 디스에이블될 경우, 이 서비스는 부트-업 프로세스에 중요한 것으로 결정된다. 일 실시 예에서, 중요한 서비스는 사용자에 의해 선택되는 서비스를 포함한다. 전자 디바이스는 사용자 사용 패턴에 기초하여 사용자에 의해 선택되는 서비스들을 검출한다. 전자 디바이스의 알림 패널에 있는 Wi-Fi, Bluetooth, 야간 모드 및 절전 모드 등과 같은 서비스들은 사용자가 부트-업 프로세스가 완료되는 바로 그 때에 이것을 사용하도록 하기 위해서 매우 빠르게 시작되어야 한다. 시작 화면이 표시되면 부트-업 프로세스가 완료된 것으로 간주된다. 일 예에서, 서비스의 PPID(Parent Process Identifier) 라벨 데이터는, 사용자가 알림 패널에서 서비스를 선택하는 경우, 그 서비스가 중요하다는 것을 나타낸다.
일 실시 예에서, 서비스가 미리 정의된 수의 다른 서비스들을 개시하지 않는 경우, 이 서비스는 부트-업 프로세스에 중요하지 않은 것으로 결정된다.
또한, 전자 디바이스는 결정된 태스크들의 각각 것에 라벨 데이터를 태깅하며, 여기서 라벨 데이터는 태스크가 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다. 라벨 데이터는 더욱 양호한 부팅 성능을 위해 매우 중요한 서비스들/태스크들을 나타낸다. 일 실시 예에서, 전자 디바이스는 서비스의 라벨 데이터를 결정하기 위해 서비스들의 PPID를 카운트한다. 일 예에서, 라벨 데이터는 최대 10개의 하위 서비스에 대한 상위 서비스인 서비스들이다. 일 예에서, 라벨 데이터는 10개보다 많은 다른 서비스들을 시작시키는 서비스이다. 일 예에서, INIT 서비스는 bootanim, powersnd, ccm 등과 같은 커널 로그들에 표시되는 다수의 다른 서비스(데몬(daemons)이라 함)를 시작시킨다. 다른 중요한 서비스들은 system_server, zygote64, application_manager_service 등과 같은 10개보다 많은 서비스를 시작시킨다. 커널 로그들이 표 1에 주어져 있다.
표 1: 커널 로그들(Kernel logs)
Figure pct00001
일 실시 예에서, 전자 디바이스는 서비스의 라벨 데이터를 결정하기 위해 서비스들의 PPID를 카운트한다. 일 예에서, 서비스의 PPID 카운트가 10보다 큰 경우, 서비스의 라벨 데이터는 1이다. 서비스의 PPID 카운트가 10보다 크지 않은 경우, 서비스의 라벨 데이터는 0이다.
일 예에서, 서비스가 중요한 것이며, 서비스의 라벨 데이터의 값은 1이다. 서비스의 라벨 데이터 값이 0인 경우, 이 서비스는 중요한 것이 아니다. 중요한 서비스들은 가속 클러스터에서의 클러스터보다 선호되며, 이것은 전자 디바이스의 부팅 시간을 향상시킨다.
전자 디바이스는 태스크들 상에 적응적 4개의 4D 클러스터링을 적용함으로써 태스크들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 한다. 적응적 4D 클러스터링은 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터를 4D 클러스터링 모델에 피딩(feeding)하는 것을 포함한다. 4D 클러스터링 모델은 X축, Y축, Z축 및 W축을 포함한다. 일 실시 예에서, X축은 CPU 로드를 나타내고, Y축은 메모리 이용 팩터를 나타내고, Z축은 병렬화 팩터를 나타내며, W축은 라벨 데이터를 나타낸다. 일 실시 예에서, 라벨 데이터 및 각각의 시스템 파라미터들의 표현은 X축, Y축, Z축 및 W축 사이에서 교환된다.
또한, 적응적 4D 클러스터링은 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 4D 클러스터링 모델의 4개의 축 상에 서비스들을 나타내는 데이터 포인트들을 플로팅(plotting)함으로써 4D 맵을 생성하는 것을 포함한다. 일 실시 예에서, 각 서비스의 등록된 파라미터들 및 태깅 된 라벨 데이터는 서비스의 데이터 포인트들이다.
또한, 적응적 4D 클러스터링은 적어도 2개의 데이터 포인트가 임계값보다 클 경우, 클러스터 센터(cluster center)를 결정하는 것을 포함하며, 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트된다. 'a'는 데이터 포인트들 {a1, a2, a3, a4}를 갖는 하나의 서비스이고 'b'는 클러스터 센터 {b1, b2, b3, b4}이다. 데이터 포인트들 ai와 클러스터 센터 bj 사이의 거리는 수학식 1로 표시된다:
Figure pct00002
수학식 2는 최종 4D 클러스터링 표현을 나타낸다:
Figure pct00003
'ci'는 i 번째 클러스터의 데이터 포인트들의 수이다. '2'는 클러스터 센터들의 수이다. 또한, 적응적 4D 클러스터링은 클러스터 센터에 기초하여, 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 것을 포함한다.
일 실시 예에서, 모든 직렬 태스크들 및 중요한/중대한 태스크들이 가속 클러스트에 클러스터링 된다. 일 실시 예에서는, 모든 병렬 태스크들이 적응적 4D 클러스터링을 적용함으로써, 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 된다. 따라서, CPU 마이그레이션이 다음 부트-업 프로세스로부터로 제한된다. 전자 디바이스의 멀티-코어 프로세서의 빅 코어들은 가속 클러스터의 서비스들을 위해서 스케줄링 된다. 전자 디바이스의 멀티-코어 프로세서의 스몰 코어들은 감속 클러스터의 서비스들을 위해서 스케줄링 된다. 따라서, 후속 부팅부터 부팅 시간의 최적화가 달성된다.
도 3은 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 새로운 서비스들을 스케줄링하기 위한 예시적인 방법과 본 제안된 방법의 비교를 도시한 것이다. 예시적인 방법에서, 도 3의 '(a)'에 나타낸 바와 같이, 전자 디바이스에 새로운 애플리케이션들을 설치할 경우, 부트-업 프로세스 동안 개시하기 위한 다수의 새로운 서비스들(태스크들과 동일)이 추가된다. 사용자가 전자 디바이스(예를 들어, 스마트 폰, 태블릿 컴퓨터 등)의 알림 패널에서 서비스들(예를 들어, Wi-Fi, Bluetooth, GPS 등)을 인에이블/디스에이블할 경우, 부트-업 프로세스를 위한 다수의 새로운 서비스들이 업데이트된다. 전자 디바이스는 새로운 서비스들을 개시시킴으로써 부트-업 프로세스를 완료하는데 더 많은 시간이 필요하게 된다.
본 제안된 방법에 따르면, 도 3의 '(b)'에 나타낸 바와 같이, 새로운 서비스들은, 적응적 4D 클러스터링 방법 및 보상 피드백 방법(reward feedback method)을 적용함으로써, 가속 클러스터 및 감속 클러스터 중 하나에 동적으로 업데이트된다. 다음 부트-업 프로세스 동안 새로운 서비스들이 전자 디바이스에 의해 개시되어야 한다는 것을 검출한 것에 응답하여, 전자 디바이스는 새로운 서비스들에 대하여 보상 피드백 방법을 적용한다. 보상 피드백 방법은 가속 클러스터에 대한 각각의 새로운 서비스들의 클러스터링이 전자 디바이스의 부팅 시간을 저하시키는지 여부를 추정하기 위해, 전자 디바이스에 의해서 사용된다.
일 실시 예에서, 전자 디바이스는 새로운 서비스들을 가속 클로스터에 클러스터링 할 시에, 다음 부트-업 프로세스의 부팅 시간을 추정한다. 부팅 시간이 다음 부트-업 프로세스에 최적화되어 있음을 검출한 것에 응답하여, 전자 디바이스는 새로운 서비스에 대해 양의(positive) 보상 포인트(숫자 값)를 제공한다. 또한, 전자 디바이스는 후속 부트-업 프로세스를 위해 새로운 서비스를 가속 클러스터에 클러스터링 한다. 부팅 시간이 다음 부팅 프로세스에 최적화되어 있지 않다는 것을 검출한 것에 응답하여, 전자 디바이스는 새로운 서비스에 대해 음의(negative) 보상 포인트(숫자 값)를 제공한다. 또한, 전자 디바이스는 후속 부트-업 프로세스를 위해 새로운 서비스를 감속 클러스터에 클러스터링 한다.
일 실시 예에서, 새로운 서비스들을 가속 클러스터에 클러스터링 하는 것으로 인해 전자 디바이스의 부팅 시간이 저하되지 않는다는 것을 검출할 경우, 검출된 새로운 서비스들은, 적응적 4D 클러스터링 방법을 적용하는 것에 의하여 가속 클러스터에 클러스터링 된다. 새로운 서비스들을 가속 클러스터에 클러스터링 하는 것으로 인해 전자 디바이스의 부팅 시간이 저하된다는 것을 검출할 경우, 검출된 새로운 서비스들은, 적응적 4D 클러스터링 방법을 적용하는 것에 의하여 감속 클러스터에 클러스터링 된다. 일 예에서, 새로운 서비스에 대하여 추정된 부팅 시간이 임계 시간 내에 있을 경우, 양의 보상 포인트가 새로운 서비스에 제공되고, 그렇지 않은 경우에는, 음의 보상 포인트가 새로운 서비스에 제공된다. 따라서, 후속 부팅부터 부팅 시간의 최적화를 달성할 수 있다.
도 4a는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스(100)에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 전자 디바이스(100)의 다양한 하드웨어 컴포넌트들을 나타내는 블록도이다. 전자 디바이스(100)의 예들은 스마트 폰, 태블릿 컴퓨터, 개인용 컴퓨터, 데스크탑 컴퓨터, 모바일 디바이스, PDA(personal digital assistance), 멀티미디어 디바이스, 사물 인터넷(IoT) 등이며, 이에 제한되지 않는다. 일 실시 예에서, 전자 디바이스(100)는 스케줄러(110), 프로세서(120), 메모리(130) 및 통신기(140)를 포함한다. 일 실시 예에서, 프로세서(120)는 빅 코어들 및 스몰 코어들을 포함하는 멀티-코어 프로세서이다. 프로세서(120)는 메모리(130)에 저장된 명령어들을 실행하여 다양한 동작들을 수행하도록 구성된다. 스케줄러(110)는 메모리(130) 및 프로세서(120)에 커플링된다. 스케줄러(110)는 전자 디바이스(100)의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하도록 구성된다. 또한, 스케줄러(110)는 결정된 서비스들 각각에 대해 전자 디바이스(100)와 관련된 시스템 파라미터들을 등록하도록 구성된다. 일 실시 예에서, 스케줄러(110)는 모든 결정된 서비스들에 대한 PPID를 기록하도록 구성된다. 또한, 스케줄러(110)는 서비스가 중요한 것인지 중요하지 않은 것인지 여부를 결정하도록 구성된다. 또한, 스케줄러(110)는 라벨 데이터를 결정된 서비스들 각각에 태깅하도록 구성되며, 여기서 라벨 데이터는 서비스가 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다.
일 실시 예에서, 스케줄러(110)는 서비스들에 대한 라벨 데이터를 태깅하기 위한 서비스들의 PPID 카운트를 카운트하고, PPID 카운트가 임계 값(예를 들어, 10)보다 큰지 여부를 결정하도록 구성된다. 스케줄러(110)는 PPID 카운트가 임계 값보다 크지 않다는 결정에 응답하여, 라벨 데이터의 값을 0으로 설정하도록 구성된다. 스케줄러(110)는 PPID 카운트가 임계 값보다 크다는 결정에 응답하여, 라벨 데이터의 값을 1로 설정하도록 구성된다.
스케줄러(110)는 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링하도록 구성된다.
일 실시 예에서는, 각각의 서비스들은, 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터를 4D 클러스터링 모델에 피딩하고, 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여 4D 클러스터링 모델의 4개의 축 상에 서비스들을 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성하고, 적어도 2개의 데이터 포인트가 임계 값보다 클 경우 클러스터 센터를 결정하고 - 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트됨 -, 클러스터 센터에 기초하여 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 것에 의하여 가속 클러스터 및 감속 클러스 중 하나에 클러스터링 된다.
또한, 스케줄러(110)는 전자 디바이스(100)에서 후속 부트-업 프로세스를 검출하도록 구성된다. 또한, 스케줄러(110)는 가속 클러스터에서 이용 가능한 서비스들 및 감속 클러스터에서 이용 가능한 서비스들을 결정하도록 구성된다. 또한, 스케줄러(110)는 후속 부트-업 프로세스 동안 적어도 하나의 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고 또한 적어도 하나의 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링하도록 구성된다.
다른 실시 예에서, 스케줄러(110)는 알림 패널에서 서비스들의 인에이블/디스에이블을 검출하도록 구성된다. 일 실시 예에서, 스케줄러(110)는 사용자 사용 패턴에 기초하여 알림 패널에서 서비스들에 대한 사용자 선택을 검출하도록 구성된다. 일 실시 예에서, 스케줄러(110)는 전자 디바이스(100)에 새로운 애플리케이션들의 설치로 인해 개시시킬 새로운 서비스들을 검출하도록 구성된다. 또한, 스케줄러(110)는 전자 디바이스(100)의 후속 부트-업 프로세스 동안 개시시킬 검출 서비스들을 포함하도록 구성된다.
또한, 스케줄러(110)는 전자 디바이스(100)의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정하도록 구성된다. 또한, 스케줄러(110)는 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들을 등록하도록 구성된다. 일 실시 예에서, 스케줄러(110)는 알림 패널에서 서비스의 인에이블/디스에이블에 대한 사용자 입력을 기록하도록 구성된다. 또한, 스케줄러(110)는 서비스의 PPID를 기록하도록 구성된다. 또한, 스케줄러(110)는 알림 패널에서 서비스의 인에이블/디스에이블을 검출한 것에 응답하여, 서비스를 위해 PPID 라벨 데이터를 1로 업데이트하도록 구성된다.
스케줄러(110)는 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 라벨 데이터를 중요한 것 또는 중요하지 않은 것으로 태깅하도록 구성된다. 또한, 스케줄러(110)는 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 및 태깅 된 레벨 데이터 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들에 기초하여, 가속 클러스터 및 감속 클러스터 중 하나에 후속 부트-업 프로세스 동안 결정된 새로운 서비스들을 동적으로 업데이트하도록 구성된다.
일 실시 예에서, 스케줄러(110)는 모든 종류의 식별된 서비스들, 서비스들의 대응하는 등록된 시스템 파라미터들의 값들, 서비스의 라벨 데이터의 값 및 클러스터 값을 포함하는 값 매트릭스(value matrix)를 생성하도록 구성된다. 일 예에서, 서비스의 라벨 데이터의 값은 0 또는 1이다. 일 예에서, 서비스의 클러스터 값은 1 또는 2이며, 여기서 1은 가속 클러스터를 나타내고 2는 감속 클러스터를 나타낸다.
메모리(130)는 프로세서(120)에 의해 실행될 명령어들을 저장한다. 메모리(130)는 비-휘발성 저장 요소들을 포함할 수 있다. 이러한 비-휘발성 저장 요소의 예들로는 자기 하드 디스크, 광 디스크, 플로피 디스크, 플래시 메모리, 또는 EPROM(electrically programmable memory)이나 EEPROM(electrically erasable and programmable memory)의 형태들을 포함한다.
또한, 메모리(130)는 일부 예들에서, 비-일시적 저장 매체로 간주될 수 있다. "비-일시적"이라는 용어는 저장 매체가 반송파 또는 전파 신호로 구현되지 않음을 나타낼 수 있다. 그러나, 용어 "비-일시적"은 메모리(130)가 비-이동적인 것으로 해석되어서는 안된다. 일부 예들에서, 메모리(130)는 메모리(130)보다 많은 양의 정보를 저장하도록 구성될 수 있다. 특정 예들에서, 비-일시적 저장 매체는 (예를 들어, RMA(Random Access Memory) 또는 캐시에) 시간이 지남에 따라 변경될 수 있는 데이터를 저장할 수 있다.
통신기(140)는 전자 디바이스(100)의 하드웨어 컴포넌트들 사이에서 내부적으로 통신하도록 구성된다.
도 4a가 전자 디바이스(100)의 하드웨어 컴포넌트들을 도시하고 있지만, 다른 실시 예들이 이에 제한되지 않음을 이해해야 한다. 다른 실시 예들에서, 전자 디바이스(100)는 더 적거나 많은 수의 컴포넌트들을 포함할 수 있다. 또한, 컴포넌트들의 라벨들 또는 명칭들은 단지 예시적인 목적으로 사용된 것이며, 본 발명의 범위를 제한하지 않는다. 하나 이상의 컴포넌트들은 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위해 동일하거나 실질적으로 유사한 기능을 수행하도록 함께 결합될 수 있다.
도 4b는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 전자 디바이스의 다양한 하드웨어 컴포넌트들을 나타내는 다른 블록도이다. 도 4b에 예시된 구조는 전자 디바이스(100)의 구조로 이해될 수 있다. 이하에서 사용되는 용어 "-모듈", "-유닛" 또는 "-기"는 적어도 하나의 기능 또는 동작을 처리하기 위한 유닛들을 의미할 수 있으며, 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다.
도 4b를 참조하면, 전자 디바이스(100)는 통신 인터페이스(410), 저장 유닛(420) 및 제어기(430)를 포함한다.
통신 인터페이스(410)는 무선 채널을 통해 신호를 송/수신하기 위한 기능들을 수행한다. 예를 들어, 통신 인터페이스(410)는 시스템의 물리 계층 표준에 따라 기저 대역 신호와 비트 스트림들 사이의 변환 기능을 수행한다. 예를 들어, 데이터 송신 시에, 통신 인터페이스(410)는 송신 비트 스트림들을 인코딩 및 변조함으로써 복소 심볼들을 생성한다. 또한, 데이터 수신 시에, 통신 인터페이스(410)는 기저 대역 신호를 복조 및 디코딩함으로써 수신 비트 스트림들을 재구성한다. 또한, 통신 인터페이스(410)는 기저 대역 신호를 RF 대역 신호로 상향 변환하고, 변환된 신호를 안테나를 통해 송신한 다음, 안테나를 통해 수신된 RF 대역 신호를 기저 대역 신호로 하향 변환한다. 예를 들어, 통신 인터페이스(410)는 송신 필터, 수신 필터, 증폭기, 믹서, 발진기, DAC 및 ADC를 포함할 수 있다.
또한, 통신 인터페이스(410)는 복수의 송/수신 경로들을 포함할 수 있다. 또한, 통신 인터페이스(410)는 복수의 안테나 요소들로 구성된 적어도 하나의 안테나 어레이를 포함할 수 있다. 하드웨어 측면에서, 무선 통신 인터페이스(210)는 디지털 회로 및 아날로그 회로(예를 들어, 무선 주파수 집적 회로(radio frequency integrated circuit, RFIC))를 포함할 수 있다. 디지털 회로 및 아날로그 회로는 하나의 패키지로서 구현될 수 있다. 디지털 회로는 적어도 하나의 프로세서(예를 들어, DSP)로서 구현될 수 있다. 통신 인터페이스(410)는 복수의 RF 체인들을 포함할 수 있다. 통신 인터페이스(410)는 빔 포밍을 수행할 수 있다.
통신 인터페이스(410)는 전술한 바와 같이 신호를 송신 및 수신한다. 따라서, 통신 인터페이스(410)는 "송신기", "수신기" 또는 "송수신기"로 지칭될 수 있다. 또한, 이하의 설명에서, 무선 채널을 통해 수행되는 송신 및 수신은 전술한 바와 같이 통신 인터페이스(410)에 의해 수행되는 처리를 포함하는 의미를 갖는 것으로 사용된다. 다양한 실시 예들에 따르면, 통신 인터페이스(410)는 통신기(140)를 포함할 수 있다.
저장 유닛(420)은 기본 프로그램, 애플리케이션, 및 전자 디바이스(100)의 동작을 위한 설정 정보와 같은 데이터를 저장한다. 저장 유닛(420)은 휘발성 메모리, 비-휘발성 메모리, 또는 휘발성 메모리와 비-휘발성 메모리의 조합을 포함할 수 있다. 또한, 저장 유닛(420)은 제어기(430)로부터의 요청에 응답하여 저장된 데이터를 제공한다. 다양한 실시 예들에 따르면, 저장 유닛(420)은 메모리(130)를 포함할 수 있다.
제어기(430)는 전자 디바이스(100)의 일반적인 동작을 제어한다. 예를 들어, 제어기(430)는 통신 인터페이스(410)를 통해 신호를 송신 및 수신한다. 또한, 제어기(430)는 저장 유닛(420)에 데이터를 기록하고 기록된 데이터를 판독한다. 제어기(430)는 통신 규격에서 요구되는 프로토콜 스택(protocol stack)의 기능들을 수행할 수 있다. 다른 구현예에 따르면, 프로토콜 스택은 통신 인터페이스(410)에 포함될 수 있다. 이를 위해, 제어기(430)는 적어도 하나의 프로세서 또는 마이크로 프로세서를 포함하거나, 프로세서의 일부를 수행할 수 있다. 또한, 통신 인터페이스(410) 또는 제어기(430)의 일부는 통신 프로세서(communication processor, CP)로 지칭될 수도 있다. 다양한 실시 예들에 따르면, 제어기(430)는 스케줄러(110) 및/또는 프로세서(120)를 포함할 수 있다.
본 개시의 예시적인 실시 예들에 따르면, 제어기(430)는 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정할 수 있고, 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록할 수 있고, 부트-업 프로세스에 대한 복수의 서비스들 각각의 중요도를 결정할 수 있으며 - 여기서 중요도는 복수의 서비스들 각각이 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 나타냄 -, 라벨 데이터를 서비스들 각각에 태깅할 수 있고 - 여기서 라벨 데이터는 복수의 서비스들 각각이 중요한 것인지 중요하지 않은 것인지 여부를 나타냄 -, 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 복수의 서비스들 각각에 대한 태깅 된 라벨 데이터에 기초하여, 서비스들 각각을 가속 클러스터 또는 감속 클러스터에 클러스터링 할 수 있다. 예를 들어, 제어기(430)는 본 개시의 예시적인 실시 예들에 따른 동작들을 수행하도록 전자 디바이스를 제어할 수 있다.
도 5는 본 명세서에 개시된 일 실시 예에 따른, 스케줄러(110)의 다양한 하드웨어 컴포넌트들을 나타내는 블록도이다. 일 실시 예에서, 스케줄러(110)는 서비스 검출기(111), 시스템 파라미터 검출기(112), 라벨 데이터 태거(label data tagger)(113), 클러스터링 엔진(clustering engine)(114), 로드 밸러서(load balancer)(115) 및 알림 패널 매니저(116)를 포함한다. 서비스 검출기(111)는 전자 디바이스(100)의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정한다. 서비스 검출기(111)는 서비스가 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 결정한다. 서비스 검출기(111)는 전자 디바이스(100)에서 후속 부트-업 프로세스를 검출한다. 서비스 검출기(111)는 가속 클러스터에서 이용 가능한 서비스들 및 감속 클러스터에서 이용 가능한 서비스들을 결정한다. 서비스 검출기(111)는 전자 디바이스(100)의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정한다.
시스템 파라미터 검출기(112)는 결정된 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들을 등록한다. 시스템 파라미터 검출기(112)는 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들을 등록한다. 일 실시 예에서, 시스템 파라미터 검출기(112)는 모든 서비스들에 대한 PPID를 기록한다.
라벨 데이터 태거(113)는 라벨 데이터를 결정된 서비스들 각각에 태깅한다. 라벨 데이터 태거(113)는 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 라벨 데이터를 중요한 것 또는 중요하지 않은 것으로 태깅한다. 일 실시 예에서, 라벨 데이터 태거(113)는 PPID의 카운트가 임계 값(예를 들어, 10)보다 큰지 여부를 결정한다. 일 실시 예에서, 라벨 데이터 태거(113)는 PPI의 카운트가 임계 값보다 크지 않다는 결정에 응답하여 라벨 데이터의 값을 0으로 설정한다. 일 실시 예에서, 라벨 데이터 태거(113)는 PPID의 카운트가 임계 값보다 크다는 결정에 응답하여 라벨 데이터의 값을 1로 설정한다. 일 실시 예에서, 라벨 데이터 태거(113)는 알림 패널에서 서비스의 인에이블/디스에이블을 검출한 것에 응답하여, 서비스를 위해 PPID 라벨 데이터를 1로 업데이트한다.
클러스터링 엔진(114)은 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 한다. 클러스터링 엔진(114)은 결정된 새로운 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들 및 후속 부트-업 프로세스 동안 태깅 된 라벨 데이터에 기초하여, 가속 클러스터 및 감속 클러스터 중 하나에서 후속 부트-업 프로세스 동안 결정된 새로운 서비스들을 동적으로 업데이트한다.
로드 밸런서(115)는 후속 부트-업 프로세스 동안 적어도 하나의 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고 또한 적어도 하나의 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링한다.
알림 패널 매니저(116)는 알림 패널에서 서비스들의 인에이블/디스에이블을 검출한다. 일 실시 예에서, 알림 패널 매니저(116)는 알림 패널에서 서비스의 인에이블/디스에이블의 사용자 입력을 기록한다. 알림 패널 매니저(116)는 전자 디바이스(100)에서의 새로운 애플리케이션들의 설치로 인해 개시시킬 새로운 서비스들을 검출한다. 또한, 알림 패널 매니저(116)는 검출된 서비스들/새로운 서비스들을 클러스터링 엔진(11)에 제공한다. 또한, 클러스터링 엔진(11)은 보상 피드백 방법을 이용하여, 후속 부트-업 프로세스를 위해 결정된 서비스들/새로운 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 동적으로 업데이트한다.
도 5가 스케줄러(110)의 하드웨어 컴포넌트들을 도시하고 있지만, 다른 실시 예들은 이에 제한되지 않음을 이해해야 한다. 다른 실시 예들에서, 스케줄러(110)는 더 적거나 많은 수의 컴포넌트들을 포함할 수 있다. 또한, 컴포넌트들의 라벨들 또는 명칭들은 단지 예시적인 목적으로 사용된 것이며 본 발명의 범위를 제한하지 않는다. 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위해 동일하거나 실질적으로 유사한 기능을 수행하도록 하나 이상의 컴포넌트들이 함께 결합될 수 있다.
도 6은 본 명세서에 개시된 일 실시 예에 따른, 클러스터링 엔진(114)의 다양한 하드웨어 컴포넌트들을 나타내는 블록도이다. 일 실시 예에서, 클러스터링 엔진(114)은 피더(feeder)(114a), 4D 클러스터 모델(114b), 클러스터 센터 추정기(114c), 가속 클러스터 제어기(114d), 감속 클러스터 제어기(114e) 및 머신 러닝(114f)을 포함한다. 피더(114a)는 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터를 4D 클러스터링 모델에 피딩한다. 4D 클러스터 모델(114b)은 전자 디바이스(100)와 관련된 시스템 파라미터들 및 태깅 된 라벨 데이터를 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성한다. 클러스터 센터 추정기(114c)는 적어도 2개의 데이터 포인트가 임계 값보다 클 경우 클러스터 센터(cluster center)를 결정하며, 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트된다. 가속 클러스터 제어기(114d)는 서비스들을 나타내는 데이터 포인트들을 가속 클러스터에 클러스터링 한다. 감속 클러스터 제어기(114e)는 서비스들을 나타내는 데이터 포인트들을 감속 클러스터에 클러스터링 한다.
머신 러닝(114f)은 보상 피드백 방법을 사용하여 가속 클러스터 및 감속 클러스터 중 하나에서 후속 부트-업 프로세스 동안 결정된 서비스들/새로운 서비스들을 동적으로 업데이트한다. 일 실시 예에서, 새로운 서비스들이 후속 부트-업 프로세스 동안 개시하도록 추가되는 것을 검출한 것에 응답하여, 머신 러닝(114f)은 다음 부팅을 위해 클러스터를 동적으로 리모델링한다. 머신 러닝(114f)은 새로운 서비스들을 가속 클러스터에 클러스터링 할 경우, 다음 부트-업 프로세스의 부팅 시간을 추정한다. 부팅 시간이 다음 부트-업 프로세스에 최적화되어 있음을 검출한 것에 응답하여, 머신 러닝(114f)은 새로운 서비스에 대한 양의 보상 포인트(숫자 값)를 제공한다. 부팅 시간이 다음 부트-업 프로세스에 대해 최적화되어 있지 않았다는 것을 검출한 것에 응답하여, 머신 러닝(114f)은 새로운 서비스에 대해 음의 보상 포인트(숫자 값)를 제공한다. 양의 보상 포인트/음의 보상 포인트에 기초하여, 클러스터링 엔진(114)은 새로운 서비스들에 대한 4D 맵을 리모델링한다.
도 6이 클러스터링 엔진(114)의 하드웨어 컴포넌트들을 도시하고 있지만, 다른 실시 예들은 이에 제한되지 않음을 이해해야 한다. 다른 실시 예들에서, 클러스터링 엔진(114)은 더 적거나 많은 수의 컴포넌트들을 포함할 수 있다. 또한, 컴포넌트들의 라벨들 또는 명칭들은 단지 예시적인 목적으로 사용된 것이며 본 발명의 범위를 제한하지 않는다. 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링하기 위해 동일하거나 실질적으로 유사한 기능을 수행하도록 하나 이상의 컴포넌트들이 함께 결합될 수 있다.
도 7a는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 서비스들을 클러스터링 하는 방법을 나타내는 흐름도이다. 도 7a는 전자 디바이스(100)에 의해 수행되는 동작들을 도시한 것이다.
도 7a를 참조하면, 동작 721에서, 전자 디바이스는 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정할 수 있다. 예를 들어, 제어기(430)가 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정할 수 있다.
동작 723에서, 전자 디바이스는 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록할 수 있다. 예를 들어, 제어기(430)가 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록할 수 있다. 전자 디바이스와 관련된 시스템 파라미터들은 중앙 처리 장치(CPU) 로드, 병렬화 팩터 또는 메모리 이용 팩터 중 적어도 하나를 포함한다.
동작 725에서, 전자 디바이스는 부트-업 프로세스에 대한 복수의 서비스들 각각의 중요도를 결정할 수 있다. 예를 들어, 제어기(330)가 부트-업 프로세스에 대한 복수의 서비스들 각각의 중요도를 결정할 수 있다. 다양한 실시 예들에서, 중요도는 복수의 서비스들 각각이 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 나타낼 수 있다. 예를 들어, 서비스가 미리 정의된 수의 다른 서비스들을 개시하거나 서비스가 전자 디바이스의 알림 패널에서 인에이블되거나 디스에이블되는 경우, 복수의 서비스들의 서비스가 부트-업 프로세스에 중요한 것으로 결정되고, 서비스가 미리 정의된 수의 다른 서비스들을 개시하지 않는 경우, 서비스가 부트-업 프로세스에 중요하지 않은 것으로 결정된다.
동작 727에서, 전자 디바이스는 라벨 데이터를 각각의 서비스들에 태깅할 수 있다. 예를 들어, 제어기(330)가 라벨 데이터를 각각의 서비스들에 태깅할 수 있다. 다양한 실시 예들에 따르면, 라벨 데이터는 복수의 서비스들 각각이 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다.
동작 729에서, 전자 디바이스는 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 복수의 서비스들 각각에 대한 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 또는 감속 클러스터에 클러스터링 할 수 있다. 예를 들어, 제어기(330)가 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 복수의 서비스들 각각에 대한 태깅 된 라벨 데이터에 기초하여, 각각의 서비스들을 가속 클러스터 또는 감속 클러스터에 클러스터링 할 수 있다. 다양한 실시 예들에 따르면, 제어기(330)는, 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 복수의 서비스들 각각에 대한 태깅 된 라벨 데이터를 4 차원(4D) 클러스터링 모델에 피딩할 수 있고, 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 복수의 서비스들 각각에 대한 태깅 된 라벨 데이터에 기초하여, 4D 클스터링 모델의 4개의 축 상에 복수의 서비스들을 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성할 수 있고, 적어도 2개의 데이터 포인트가 임계 값보다 큰 경우, 클러스터 센터를 결정할 수 있고 - 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 기초하여 결정됨 -, 클러스터 센터에 기초하여 복수의 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 또는 감속 클러스터에 클러스터링 할 수 있다. 다양한 실시 예들에 따르면, 4D 클러스터링 모델의 제 1 축은 중앙 처리 장치(CPU) 로드를 나타내고, 4D 클러스터링 모델의 제 2 축은 메모리 이용 팩터를 나타내고, 4D 클러스터링 모델의 제 3 축은 병렬화 팩터를 나타내고, 4D 클러스터링 모델의 제 5 축은 라벨 데이터를 나타낸다.
도시되지는 않았지만, 전자 디바이스는(예를 들어, 제어기(330)가 이러한 동작들을 수행하도록 더 구성될 수 있음) 전자 디바이스에서 후속 부트-업 프로세스를 검출할 수 있고, 가속 클러스터에서 이용 가능한 제 1 서비스들 및 감속 클러스터에서 이용 가능한 제 2 서비스들을 결정할 수 있고, 후속 부트-업 프로세스 동안, 멀티-코어 프로세서의 적어도 하나의 빅 코어에 기초하여 제 1 서비스들을 스케줄링 할 수 있고 멀티-코어 프로세서의 적어도 하나의 스몰 코어에 기초하여 제 2 서비스들을 스케줄링 할 수 있다.
도시되지 않았지만, 전자 디바이스는(예를 들어, 제어기(330)가 이러한 동작들을 수행하도록 더 구성될 수 있음) 전자 디바이스의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정할 수 있고, 후속 부트-업 프로세스 동안 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록할 수 있고, 복수의 새로운 서비스들 각각의 중요도에 기초하여 후속 부트-업 프로세스에서 라벨 데이터를 복수의 새로운 서비스들 각각에 태깅할 수 있고, 복수의 새로운 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들 및 복수의 새로운 서비스들 각각에 대한 태깅 된 라벨 데이터에 기초하여 가속 클러스터 또는 감속 클러스터에서 후속 부트-업 프로세스 동안 복수의 새로운 서비스들 각각을 동적으로 업데이트할 수 있다.
도 7b는 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스에서 부트-업 프로세스 동안 상이한 클러스터들에서 서비스들을 스케줄링 하는 방법을 나타내는 흐름도이다. 도 7b는 전자 디바이스(100)에 의해 수행되는 동작들을 도시한 것이다.
도 7b를 참조하면, 동작 731에서, 전자 디바이스는 전자 디바이스에서의 부트-업 프로세스 개시를 검출할 수 있다. 예를 들어, 제어기(403)가 전자 디바이스에서의 부트-업 프로세스 개시를 검출할 수 있다.
동작 733에서, 전자 디바이스는 가속 클러스터에서 이용 가능한 제 1 서비스들 및 감속 클러스터에서 이용 가능한 제 2 서비스들을 결정할 수 있다. 예를 들어, 제어기(430)가 가속 클러스터에서 이용 가능한 제 1 서비스들 및 감속 클러스터에서 이용 가능한 제 2 서비스들을 결정할 수 있다.
동작 735에서, 전자 디바이스는 부트-업 프로세스 동안, 멀티-코어 프로세서의 적어도 하나의 빅 코어에 기초하여 제 1 서비스들을 스케줄링하고 멀티-코어 프로세서의 적어도 하나의 스몰 코어에 기초하여 제 2 서비스들을 스케줄링 수 있다. 예를 들어, 제어기(430)가 부트-업 프로세스 동안, 멀티-코어 프로세서의 적어도 하나의 빅 코어에 기초하여 제 1 서비스들을 스케줄링하고 멀티-코어 프로세서의 적어도 하나의 스몰 코어에 기초하여 제 2 서비스들을 스케줄링 할 수 있다.
도시되지 않았지만, 전자 디바이스는(또는, 제어기(430)가 이러한 동작들을 수행하도록 더 구성될 수 있음) 전자 디바이스의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정할 수 있고 - 여기서 복수의 서비스들은 제 1 서비스들 및 제 2 서비스들을 포함함 -, 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록할 수 있고, 부트-업 프로세스에 대한 복수의 서비스들 각각의 중요도를 결정할 수 있고 - 여기서 중요도는 복수의 서비스들 각각이 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 나타냄 -, 라벨 데이터를 각각의 서비스들에 태깅할 수 있고 - 여기서 라벨 데이터는 복수의 서비스들 각각이 중요한 것인지 중요하지 않은 것인지 여부를 나타냄 -, 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 복수의 서비스들 각각에 대한 태깅 된 라벨 데이터를 4 차원(4D) 클러스터링 모델에 피딩할 수 있고, 복수의 서비스들 각각에 대한 전자 디바이스와 관련된 등록된 시스템 파라미터들 및 복수의 서비스들 각각에 대한 태깅 된 라벨 데이터에 기초하여 4D 클러스터링 모델의 4개의 축 상에 복수의 서비스들을 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성할 수 있고, 적어도 2개의 데이터 포인트가 임계 값보다 큰 경우, 클러스터 센터를 결정할 수 있고 - 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 기초하여 결정됨 -, 클러스터 센터에 기초하여 복수의 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 또는 감속 클러스터에 클러스터링 한다. 다양한 실시 예들에 따르면, 4D 클러스터링 모델의 제 1 축은 중앙 처리 장치(CPU) 로드를 나타내고, 4D 클러스터링 모델의 제 2 축은 메모리 이용 팩터를 나타내고, 4D 클러스터링 모델의 제 3 축은 병렬화 팩터를 나타내고, 4D 클러스터링 모델의 제 5 축은 라벨 데이터를 나타낸다. 다양한 실시 예들에 따르면, 전자 디바이스와 관련된 시스템 파라미터들은 중앙 처리 장치(CPU) 로드, 병렬화 팩터 또는 메모리 이용 팩터 중 적어도 하나를 포함한다. 다양한 실시 예들에 따르면, 서비스가 미리 정의된 수의 다른 서비스들을 개시하거나 서비스가 전자 디바이스의 알림 패널에서 인에이블 또는 디스에이블되는 경우, 복수의 서비스들의 서비스는 부트-업 프로세스에 중요한 것으로 결정되고, 서비스가 미리 정의된 수의 다른 서비스들을 개시하지 않는 경우, 서비스는 부트-업 프로세스에 중요하지 않은 것으로 결정된다.
도시되지 않았지만, 전자 디바이스는(또는, 제어기(430)가 이러한 동작들을 수행하도록 더 구성될 수 있음) 전자 디바이스의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정할 수 있고, 후속 부트-업 프로세스 동안 복수의 새로운 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들을 등록할 수 있고, 복수의 서비스들 각각의 중요도에 기초하여 후속 부트-업 프로세스 동안 라벨 데이터를 복수의 새로운 서비스들 각각에 태깅할 수 있고, 복수의 새로운 서비스들 각각에 대한 전자 디바이스와 관련된 시스템 파라미터들 및 복수의 새로운 서비스들 각각에 대한 태깅 된 라벨 데이터에 기초하여 가속 클러스터 또는 감속 클러스터에서 후속 부트-업 프로세스 동안 복수의 새로운 서비스들 각각을 동적으로 업데이트할 수 있다.
도 7c는 본 명세서에 개시된 일 실시 예들에 따른, 전자 디바이스(100)에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 방법을 나타내는 흐름도(700)이다. 701에서, 이 방법은 전자 디바이스(100)의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하는 것을 포함한다. 일 실시 예에서, 이 방법은 서비스 검출기(111)가 전자 디바이스(100)의 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정할 수 있게 한다. 702에서, 이 방법은 결정된 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들을 등록하는 것을 포함한다. 일 실시 예에서, 이 방법은 시스템 파라미터 검출기(112)가 결정된 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들을 등록할 수 있게 한다. 703에서, 이 방법은 서비스가 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 결정하는 것을 포함한다. 일 실시 예에서, 이 방법은 서비스가 부트-업 프로세스에 중요한 것인지 중요하지 않은 것인지 여부를 서비스 검출기(111)가 결정할 수 있게 한다.
704에서, 이 방법은 라벨 데이터를 결정된 서비스들 각각에 태깅하는 것을 포함하며, 여기서 라벨 데이터는 서비스가 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다. 일 실시 예에서, 이 방법은 라벨 데이터 태거(113)가 라벨 데이터를 결정된 서비스들 각각에 태깅할 수 있게 하며, 여기서 라벨 데이터는 서비스가 중요한 것인지 중요하지 않은 것인지 여부를 나타낸다. 705에서, 이 방법은 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 것을 포함한다. 일 실시 예에서, 이 방법은 클러스터링 엔진(114)이 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 할 수 있게 한다.
706에서, 이 방법은 전자 디바이스(100)에서 후속 부트-업 프로세스를 검출하는 것을 포함한다. 일 실시 예에서, 이 방법은 서비스 검출기(111)가 전자 디바이스(100)에서 후속 부트-업 프로세스를 검출할 수 있게 한다. 707에서, 이 방법은 가속 클러스터에서 이용 가능한 서비스들 및 감속 클러스터에서 이용 가능한 서비스들을 결정하는 것을 포함한다. 일 실시 예에서, 이 방법은 서비스 검출기(111)가 가속 클러스터에서 이용 가능한 서비스들 및 감속 클러스터에서 이용 가능한 서비스들을 결정할 수 있게 한다.
708에서, 이 방법은 부트-업 프로세스 동안, 적어도 하나의 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고 적어도 하나의 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링 하는 것을 포함한다. 일 실시 예에서, 이 방법은 로드 밸런서(115)가 부트-업 프로세스 동안, 적어도 하나의 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고 적어도 하나의 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링 할 수 있게 한다. 709에서, 이 방법은 전자 디바이스(100)의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정하는 것을 포함한다. 일 실시 예에서, 이 방법은 서비스 검출기(111)가 전자 디바이스(100)의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정할 수 있게 한다. 710에서, 이 방법은 후속 부트-업 프로세스 동안 시스템 파라미터들을 등록하는 것을 포함한다. 일 실시 예에서, 이 방법은 시스템 파라미터 검출기(112)가 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들을 등록할 수 있게 한다.
711에서, 이 방법은 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 라벨 데이터를 중요한 것 또는 중요하지 않은 것으로 태깅하는 것을 포함한다. 일 실시 예에서, 이 방법은 라벨 데이터 태거(113)가 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 라벨 데이터를 중요한 것 또는 중요하지 않은 것으로 태깅할 수 있게 한다. 712에서, 이 방법은 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 가속 클러스터 및 감속 클러스터 중 하나에서 후속 부트-업 프로세스 동안 결정된 서비스들을 동적으로 업데이트하는 것을 포함한다. 일 실시 예에서, 이 방법은 클러스터링 엔진(114)이 후속 부트-업 프로세스 동안 결정된 새로운 서비스들 각각에 대한 전자 디바이스(100)와 관련된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 가속 클러스터 및 감속 클러스터 중 하나에서 후속 부트-업 프로세스 동안 결정된 서비스들을 동적으로 업데이트할 수 있게 한다.
흐름도(700)의 다양한 액션들, 동작들, 블록들, 단계들 등은 제시된 순서로, 상이한 순서로 또는 동시에 수행될 수 있다. 또한, 일부 실시 예들에서, 액션들, 동작들, 블록들, 단계들 등의 일부는 본 발명의 범위를 벗어나지 않고 생략, 추가, 수정, 스킵 등이 될 수 있다.
도 7d는 본 명세서에 개시된 일 실시 예에 따른, 각각의 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 다양한 단계들을 나타내는 흐름도(705)이다. 705a에서, 이 방법은 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터를 4D 클러스터링 모델에 피딩하는 것을 포함한다. 일 실시 예에서, 이 방법은 피더(114a)가 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 데이터를 4D 클러스터링 모델에 피딩할 수 있게 한다. 705b에서, 이 방법은 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 4D 클러스터링 모델의 4개의 축 상에 서비스들을 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성하는 것을 포함한다. 일 실시 예에서, 이 방법은 4D 클러스터 모델(114b)이 전자 디바이스(100)와 관련된 등록된 시스템 파라미터들 및 태깅 된 라벨 데이터에 기초하여, 4D 클러스터링 모델의 4개의 축 상에 서비스들을 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성할 수 있게 한다.
705c에서, 이 방법은 적어도 2개의 데이터 포인트가 임계 값보다 클 경우 클러스터 센터를 결정하는 것을 포함하며, 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트된다. 일 실시 예에서, 이 방법은 적어도 2개의 데이터 포인트가 임계 값보다 클 경우, 클러스터 센터 추정기(114c)가 클러스터 센터를 결정할 수 있게 하며, 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트된다. 705d에서, 이 방법은 클러스터 센터에 기초하여, 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 하는 것을 포함한다. 일 실시 예에서, 이 방법은 가속 클러스터 제어기(114d) 및 감속 클러스터 제어기(114e)가 클러스터 센터에 기초하여, 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 할 수 있게 한다.
흐름도(705)의 다양한 액션들, 동작들, 블록들, 단계들 등은 제시된 순서로, 상이한 순서로 또는 동시에 수행될 수 있다. 또한, 일부 실시 예들에서, 액션들, 동작들, 블록들, 단계들 등의 일부는 본 발명의 범위를 벗어나지 않고 생략, 추가, 수정, 스킵 등이 될 수 있다.
도 8은 본 명세서에 개시된 일 실시 예에 따른, 다양한 부팅 단계들에 대한 부팅 시간 라인을 나타내는 개략도이다. 부트-업 프로세스의 부팅 단계들은 초기화 단계, 자이고트 단계(zygote phase), 패키지 매니저 스캔(Package Manager Scan, PMS) 단계 및 액티비티 매니저 서비스(Activity Manager Service, AMS) 단계를 포함한다. 카메라 서버, 오디오 서버 등과 같은 모든 데몬들은 초기화 단계에서 시작된다. 모든 클래스들 및 리소스들이 자이고트 단계에서 사전 로드된다. 애플리케이션 서비스들 등과 같은 모든 비-원시 서비스들(non-native services)이 AMS 단계에서 시작된다.
부트-업 프로세스는 초기화 단계에서 시작되며, 여기서 초기화 단계 동안 개시되는 서비스들을 초기화 서비스들이라고 한다. 또한, 부트-업 프로세스의 자이고트 단계가 초기화 단계의 완료 이후에 시작되며, 여기서 'm'개의 서비스들이 자이고트 단계 동안 개시되는 것을 자이고트 서비스들이라 한다. 전자 디바이스(100)는 초기화 단계를 완료하는데 6초가 걸린다. 또한, 자이고트 단계의 완료 이후에 부트-업 프로세스의 PMS 단계가 시작된다. 또한, 부트-업 프로세스의 AMS 단계가 PMS 단계의 완료 이후에 시작되며, 여기서 AMS 단계 동안 'n'개의 서비스들이 개시되는 것을 AMS 서비스들이라 한다. 부트-업 프로세스는 AMS 단계 완료 이후에, 일반 동작들을 위해 전자 디바이스(100)의 화면을 인에이블함으로써 완료된다.
단계 1에서, 전자 디바이스(100)는 부트-업 프로세스 동안 개시되는, 초기화 서비스들, 자이고트 서비스들 및 AMS 서비스들을 포함하는 복수의 서비스들을 식별한다. 단계 2에서, 전자 디바이스(100)는 식별된 서비스들 각각의 시스템 파라미터들 및 관련된 라벨 데이터를 기록한다. 일 실시 예에서, 시스템 파라미터들은 CPU 로드, 병렬화 팩터 및 메모리 이용 팩터를 포함한다. 전자 디바이스(100)는 식별된 서비스들 각각에 대한 시스템 파라미터들을 등록함으로써 시스템 파라미터들을 기록한다. 또한, 전자 디바이스(100)는 서비스의 중요도에 기초하여 라벨 데이터를 식별된 서비스들에 태깅한다. 단계 3에서, 전자 디바이스(100)는 식별된 서비스들을 사용하여 4D 클러스터링 모델에서 4D 맵을 생성한다. 4D 맵은 4D 클러스터링 모델의 4개의 축 상에 각각의 서비스들의 시스템 파라미터들과 라벨 데이터의 대응하는 데이터 포인트들을 플로팅함으로써 생성된다. 또한, 전자 디바이스(100)는 클러스터 센터를 결정하며, 여기서 클러스터 센터는 데이터 포인트들과 클러스터 센터 사이의 거리에 따라 시프트된다. 또한, 전자 디바이스(100)는 클러스터 센터에 기초하여, 서비스들을 나타내는 데이터 포인트들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링 한다. 또한, 전자 디바이스(100)는 후속 부트-업 프로세스 동안, 빅 코어를 사용하여 가속 클러스터에서 이용 가능한 서비스들을 스케줄링하고, 스몰 코어를 사용하여 감속 클러스터에서 이용 가능한 서비스들을 스케줄링한다.
도 9는 본 명세서에 개시된 일 실시 예에 따른, 라벨 데이터를 서비스들에 태깅하는 다양한 단계들을 나타내는 흐름도(900)이다. 901에서, 라벨 데이터를 서비스들에 태깅하는 것은 식별된 모든 서비스들에 대한 PPID를 기록하는 것을 포함한다. 일 실시 예에서, 이 방법은 시스템 파라미터 검출기(112)가 모든 서비스들에 대한 PPID를 기록할 수 있게 한다. 902에서, 라벨 데이터를 서비스들에 태깅하는 것은 PPID의 카운트가 10보다 큰지 여부를 결정하는 것을 포함한다. 일 실시 예에서, 이 방법은 PPID의 카운트가 10보다 큰지 여부를 라벨 데이터 태거(113)가 결정할 수 있게 한다. 903에서, 라벨 데이터를 서비스들에 태깅하는 것은 PPID의 카운트가 10보다 크지 않다는 결정에 응답하여, 라벨 데이터의 값을 0으로 설정하는 것을 포함한다. 일 실시 예에서, 이 방법은 라벨 데이터 PPID의 카운트가 10보다 크지 않다는 결정에 응답하여, 라벨 데이터 태거(113)가 라벨 데이터의 값을 0으로 설정할 수 있게 한다. 904에서, 라벨 데이터를 서비스들에 태깅하는 것은 PPID의 카운트가 10보다 크다는 결정에 응답하여, 라벨 데이터의 값을 1로 설정하는 것을 포함한다. 일 실시 예에서, 이 방법은 PPID의 카운트가 10보다 크다는 결정에 응답하여, 라벨 데이터 태거(113)가 라벨 데이터의 값을 1로 설정할 수 있게 한다.
흐름도(900)의 다양한 액션들, 동작들, 블록들, 단계들 등은 제시된 순서로, 상이한 순서로 또는 동시에 수행될 수 있다. 또한, 일부 실시 예들에서, 액션들, 동작들, 블록들, 단계들 등의 일부는 본 발명의 범위를 벗어나지 않고 생략, 추가, 수정, 스킵 등이 될 수 있다.
도 10a는 본 명세서에 개시된 실시 예에 따라, 서비스들을 가속 클러스터 및 감속 클러스터 중 하나로 클러스터링 하는 예시적인 시나리오를 도시한 것이다. 전자 디바이스(100)가 부트-업 프로세스를 수행 중인 것으로 가정한다. 전자 디바이스(100)는 부트-업 프로세스 동안에 개시되는 복수의 서비스들을 식별할 수 있다. 또한, 전자 디바이스(100)는 시스템 파라미터들을 값 매트릭스에 등록하는 것에 의하여 값 매트릭스를 생성할 수 있다. 사용자가 전자 디바이스(100)에 메신저 애플리케이션을 설치하는 것으로 가정한다. 전자 디바이스(100)는 전자 디바이스(100)에서의 새로운 애플리케이션(예를 들면, 메신저 애플리케이션)의 설치 및 다른 식별된 서비스들로 인해 개시되는 새로운 서비스(예를 들면, messengerapp)를 식별할 수 있다. 이 새로운 서비스는 messengerapp이며, 다른 서비스들은 systemserver, zygot64, cameraserver, nfc, Bluetooth, audioserver, messaging 및 incallui이다.
전자 디바이스(100)는 클러스터 서버 값을 1로 제공함으로써 systemserver, zygot64 및 cameraserver를 포함하는 서비스들을 가속 클러스터로 클러스터링 할 수 있다. 전자 디바이스(100)는 클러스터 값을 2로 제공함으로써 NFC, Bluetooth, audioserver, messaging 및 incallui을 포함하는 서비스들을 감속 클러스터로 클러스터링 한다. messengerapp의 클러스터 값은 'new'이며, 이것은 messengerapp가 다음 부트-업 프로세스 동안에 개시되어야 하는 새로운 서비스임을 나타낸다. 전자 디바이스(100)는 messengerapp에 대한 보상 피드백 방법을 수행함으로써 messengerapp을 가속 클러스터 및 감속 클러스터 중 하나로 클러스터링하기 위한 messengerapp의 클러스터 값을 결정할 수 있다.
도 10b는 본 명세서에 개시된 일 실시 예에 따른, 3D 모델에서의 데이터 포인트들 및 클러스터 센터들의 플로팅을 도시한 것이다. 전자 디바이스(100)는 4D 클러스터링 모델에서 각 식별된 서비스들의 시스템 파라미터들 및 라벨 데이터의 대응하는 데이터 포인트들을 플로팅한다. 또한, 전자 디바이스(100)는 클러스터 센터와의 각각의 데이터 포인트들의 거리에 기초하여 가속 클러스터 및 감속 클러스터의 클러스터 센터를 결정한다.
도 10c는 본 명세서에 개시된 일 실시 예에 따른, 4D 클러스터링 모델에서의 가속 클러스터 및 감속 클러스터를 나타내는 개략도이다. 전자 디바이스(100)는 4D 클러스터링 모델에서 서비스들의 데이터 포인트들을 플로팅하여 4D 맵을 생성한다. 4D 클러스터링 모델의 4개의 축의 X축은 CPU 로드를 나타내고, 4D 클러스터링 모델의 4개의 축의 Y축은 메모리 이용 팩터를 나타내고, 4D 클러스터링 모델의 4개의 축의 Z축은 병렬화 팩터를 나타내고, 4D 클러스터링 모델의 4개의 축의 W축은 라벨 데이터를 나타낸다. 또한, 전자 디바이스(100)는 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 클러스터링하며, 여기서 도 10c에서 더 작은 구(sphere)는 가속 클로스터를 나타내고, 도 10c에서 더 큰 구는 감속 클러스터를 나타낸다.
도 11은 본 명세서에 개시된 일 실시 예에 따른, 전자 디바이스(100)의 알림 패널에서 서비스의 인에이블/디스에이블에 기초하여 라벨 데이터를 서비스들에 태깅하는 다양한 단계들을 나타내는 흐름도(1100)이다. 1101에서, 알림 패널에서 서비스의 인에이블/디스에이블에 기초하여 라벨 데이터를 서비스들에 태깅하는 것은 알림 패널에서 서비스의 인에이블/디스에이블의 사용자 입력을 기록하는 것을 포함한다. 일 실시 예에서, 이 방법은 알림 패널 매니저(116)가 알림 패널에서 서비스의 인에이블/디스에이블의 사용자 입력을 기록할 수 있게 한다. 1102에서, 알림 패널에서 서비스의 인에이블/디스에이블에 기초하여 라벨 데이터를 서비스들에 태깅하는 것은 서비스의 PPID를 기록하는 것을 포함한다. 일 실시 예에서, 이 방법은 시스템 파라미터 검출기(112)가 서비스의 PPID를 기록할 수 있게 한다. 1103에서, 알림 패널에서 서비스의 인에이블/디스에이블에 기초하여 라벨 데이터를 서비스들에 태깅하는 것은 서비스를 위해 PPID 라벨 데이터를 1로 업데이트하는 것을 포함한다. 일 실시 예에서, 이 방법은 라벨 데이터 태거(113)가 서비스를 위해PPID 라벨 데이터를 1로 업데이트할 수 있게 한다.
흐름도(1100)의 다양한 액션들, 동작들, 블록들, 단계들 등은 제시된 순서로, 상이한 순서로 또는 동시에 수행될 수 있다. 또한, 일부 실시 예들에서, 액션들, 동작들, 블록들, 단계들 등의 일부는 본 발명의 범위를 벗어나지 않고 생략, 추가, 수정, 스킵 등이 될 수 있다.
도 12는 본 명세서에 개시된 일 실시 예에 따른, 후속 부트-업 프로세스 동안, 알림 패널에서 인에이블/디스에이블된 서비스들을 가속 클러스터 및 감속 클러스터 중 하나에 동적으로 업데이트하는 예시적인 시나리오를 도시한 것이다. 사용자가 부팅 후 전자 디바이스(100)의 알림 패널에서 블루투스 서비스를 인에이블/디스에이블하는 것으로 가정한다. 전자 디바이스(100)는 블루투스 서비스의 인에이블/디스에이블을 검출하고, 블루투스 서비스가 다음 부트-업 동안 개시되어야 하는 중요한 서비스임을 검출한다. 또한, 전자 디바이스(100)는 블루투스 서비스에 대한 보상 피드백 방법을 수행하여 다음 부트-업 동안 블루투스 서비스의 개시가 부팅 시간을 저하시키는지 여부를 결정한다. 다음 부트-업 동안 블루투스 서비스의 개시가 부팅 시간을 저하시키지 않는다는 결정에 응답하여, 전자 디바이스(100)는 블루투스 서비스의 클러스터 값을 1로 업데이트한다. 블루투스 서비스의 클러스터 값을 1로 업데이트하는 것은 블루투스 서비스가 다음 부트-업 프로세스를 위해 가속 클러스터에 클러스터링 된다는 것을 나타낸다.
도 13은 본 명세서에 개시된 일 실시 예에 따른, 후속 부트-업 프로세스 동안 서비스들 또는 새로운 서비스들을 가속 클러스터 및 감속 클러스 중 하나로 동적으로 업데이트하는 다양한 단계들을 나타내는 흐름도(1300)이다. 1301에서, 서비스들 또는 새로운 서비스들을 동적으로 업데이트하는 것은 전자 디바이스(100)에서 후속 부트-업 프로세스를 검출하는 것을 포함한다. 일 실시 예에서, 이 방법은 서비스 검출기(111)가 전자 디바이스(100)에서 후속 부트-업 프로세스를 검출할 수 있게 한다. 1302에서, 서비스들 또는 새로운 서비스들을 동적으로 업데이트하는 것은 사용자가 새로운 애플리케이션(예를 들어, 메신저 앱)을 설치할 때 추가되는 새로운 서비스들을 검출하는 것을 포함한다. 일 실시 예에서, 이 방법은 서비스 검출기(111)가, 사용자가 새로운 애플리케이션을 설치할 때 추가되는 새로운 서비스들을 검출할 수 있게 한다. 1303에서, 서비스들 또는 새로운 서비스들을 동적으로 업데이트하는 것은 사용자가 알림 패널로부터 서비스를 켜거나 끌 때 추가되는 새로운 서비스들을 검출하는 것을 포함한다. 일 실시 예에서, 이 방법은 사용자가 알림 패널로부터 서비스를 켜거나 끌 때 추가되는 새로운 서비스들을 알림 패널 매니저(116)가 검출할 수 있게 한다.
1304에서, 서비스들 또는 새로운 서비스들을 동적으로 업데이트하는 것은 새로운 서비스들에 대한 4D 클러스터링을 수행하는 것을 포함한다. 일 실시 예에서, 이 방법은 클러스터링 엔진(114)이 새로운 서비스들에 대해 4D 클러스터링을 수행할 수 있게 한다. 1305에서, 서비스들 또는 새로운 서비들을 동적으로 업데이트하는 것은 새로운 서비스를 가속 클러스터에 클러스터링 할 시에, 전자 디바이스(100)의 다음 부팅 시간을 체크하는 것을 포함한다. 일 실시 예에서, 이 방법은 클러스터링 엔진(114)이 새로운 서비스를 가속 클러스터에 클러스터링 할 시에, 전자 디바이스(100)의 다음 부팅 시간을 체크할 수 있게 한다. 1306에서, 서비스들 또는 새로운 서비스들을 동적으로 업데이트하는 것은 새로운 서비스가 가속 클러스터에 클러스터링 될 시에, 부팅 시간이 최적화되어 있다는 것(양호함)을 검출한 것에 응답하여, 새로운 서비스들에 대한 양의 보상 포인트들을 제공하는 것을 포함한다. 일 실시 예에서, 이 방법은 새로운 서비스가 가속 클러스터에 클러스터링 될 시에, 부팅 시간이 최적화되어 있다는 것(양호함)을 검출한 것에 응답하여, 클러스터링 엔진(114)이 새로운 서비스들에 대한 양의 보상 포인트들을 제공할 수 있게 한다.
1307에서, 서비스들 또는 새로운 서비스들을 동적으로 업데이트하는 것은 새로운 서비스가 가속 클러스터에 클러스터링 될 시에, 부팅 시간이 최적화되어 있지 않다는 것(양호하지 않음)을 검출한 것에 응답하여, 새로운 서비스들에 대한 음의 보상 포인트들을 제공하는 것을 포함한다. 일 실시 예에서, 이 방법은 새로운 서비스가 가속 클러스터에 클러스터링 될 시에, 부팅 시간이 최적화되어 있지 않다는 것(양호하지 않음)을 검출한 것에 응답하여, 클러스터링 엔진(114)이 새로운 서비스들에 대한 음의 보상 포인트들을 제공할 수 있게 한다. 1308에서, 서비스들 또는 새로운 서비스들을 동적으로 업데이트하는 것은 양의 보상 포인트/음의 보상 포인트에 기초하여 다음 부팅을 위해 클러스터를 동적으로 리모델링하는 것을 포함한다. 일 실시 예에서, 이 방법은 클러스터링 엔진(114)이 양의 보상 포인트/음의 보상 포인트에 기초하여 다음 부팅을 위해 클러스터를 동적으로 리모델링할 수 있게 한다.
본 명세서에 개시된 실시 예들은, 적어도 하나의 하드웨어 디바이스 상에서 실행되고 요소들을 제어하기 위해 네트워크 관리 기능을 수행하는 적어도 하나의 소프트웨어 프로그램을 사용하여 구현될 수 있다.
특정 실시 예들에 대한 전술한 설명은 다른 사람들이 현재의 지식을 적용함으로써 일반적인 개념을 벗어나지 않고 이러한 특정 실시 예들에 대해 다양한 적용들에 대해 쉽게 수정 및/또는 적응할 수 있도록 본 명세서의 실시 예들의 일반적인 본질을 충분히 밝힐 것이며, 따라서 이러한 적응 및 수정은 개시된 실시 예들의 의미 및 등가물의 범위 내에서 이해되어야 한다. 본 명세서에서 사용된 어구 또는 용어는 제한이 아닌 설명의 목적을 위한 것이라는 것을 이해해야 한다. 그러므로, 본 명세서의 실시 예들이 바람직한 실시 예들의 관점에서 설명되었지만, 당업자는 본 명세서의 실시 예들이 본 명세서에 기술된 바와 같은 실시 예들의 사상 및 범위 내에서 수정되어 실시될 수 있음을 인식할 것이다.

Claims (15)

  1. 멀티-코어 프로세서를 포함하는 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하는 방법으로서,
    상기 전자 디바이스의 상기 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하는 단계와,
    상기 복수의 서비스들 각각에 대한 상기 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계와,
    상기 부트-업 프로세스에 대한 상기 복수의 서비스들 각각의 중요도를 결정하는 단계와,
    상기 중요도는 상기 복수의 서비스들 각각이 상기 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지 여부를 나타내고,
    라벨 데이터(label data)를 상기 서비스들 각각에 태깅(tagging)하는 단계 와,
    상기 라벨 데이터는 상기 복수의 서비스들 각각이 중요한 것인지 또는 중요하지 않은 것인지 여부를 나타내고,
    상기 복수의 서비스들 각각에 대한 상기 전자 디바이스와 관련된 상기 등록된 시스템 파라미터들 및 상기 복수의 서비스들 각각에 태깅 된 상기 라벨 데이터에 기초하여, 상기 서비스들 각각을 가속 클러스터(accelerating cluster) 또는 감속 클러스터(decelerating cluster)로 클러스터링 하는 단계를 포함하는,
    방법.
  2. 제 1 항에 있어서,
    상기 전자 디바이스에서의 후속 부트-업 프로세스를 검출하는 단계와,
    상기 가속 클러스터에서 이용 가능한 제 1 서비스들 및 상기 감속 클러스터에서 이용 가능한 제 2 서비스들을 결정하는 단계와,
    상기 후속 부트-업 프로세스 동안, 상기 멀티-코어 프로세서의 적어도 하나의 빅 코어(big core)에 기초하여 상기 제 1 서비스들을 스케줄링하고, 상기 멀티-코어 프로세서의 적어도 하나의 스몰 코어(small core)에 기초하여 상기 제 2 서비스들을 스케줄링 하는 단계를 더 포함하는,
    방법.
  3. 제 2 항에 있어서,
    상기 전자 디바이스의 상기 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정하는 단계와,
    상기 후속 부트-업 프로세스 동안 상기 복수의 새로운 서비스들 각각에 대한 상기 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계와,
    상기 복수의 새로운 서비스들 각각의 중요도에 기초하여, 상기 후속 부트-업 프로세스 동안 라벨 데이터를 상기 복수의 새로운 서비스들 각각에 태깅하는 단계와,
    상기 복수의 새로운 서비스들 각각에 대한 상기 전자 디바이스와 관련된 상기 시스템 파라미터들 및 상기 복수의 새로운 서비스들 각각에 태깅 된 상기 라벨 데이터에 기초하여, 상기 가속 클러스터 또는 상기 감속 클러스터에서 상기 후속 부트-업 프로세스 동안 상기 복수의 새로운 서비스들 각각을 동적으로 업데이트하는 단계를 더 포함하는,
    방법.
  4. 제 1 항에 있어서,
    상기 전자 디바이스와 관련된 상기 시스템 파라미터들은 중앙 처리 장치(CPU) 로드, 병렬화 팩터(parallelizability factor) 또는 메모리 이용 팩터(memory utilization factor) 중 적어도 하나를 포함하는,
    방법.
  5. 제 1 항에 있어서,
    상기 복수의 서비스들 각각의 클러스터링은,
    상기 복수의 서비스들 각각에 대한 상기 전자 디바이스와 관련된 상기 등록된 시스템 파라미터들 및 상기 복수의 서비스들 각각에 태깅 된 상기 라벨 데이터를 4 차원(4D) 클러스터링 모델로 피딩(feeding)하고;
    상기 복수의 서비스들 각각에 대한 상기 전자 디바이스와 관련된 상기 등록된 시스템 파라미터들 및 상기 복수의 서비스들 각각에 태깅 된 상기 라벨 데이터에 기초하여, 상기 4D 클러스터링 모델의 4개의 축 상에 상기 복수의 서비스들을 나타내는 데이터 포인트들을 플로팅(plotting)함으로써 4D 맵을 생성하고;
    적어도 2개의 데이터 포인트들이 임계 값보다 큰 경우, 클러스터 센터(cluster center)를 결정하고,
    상기 클러스터 센터는 상기 데이터 포인트들과 상기 클러스터 센터 사이의 거리에 기초하여 결정되고,
    상기 클러스터 센터에 기초하여, 상기 복수의 서비스들을 나타내는 상기 데이터 포인트들을 상기 가속 클러스터 또는 상기 감속 클러스터로 클러스터링 하는 것을 포함하는,
    방법.
  6. 제 5 항에 있어서,
    상기 4D 클러스터링 모델의 제 1 축은 중앙 처리 장치(CPU) 로드를 나타내고, 상기 4D 클러스터링 모델의 제 2 축은 메모리 이용 팩터를 나타내고, 상기 4D 클러스터링 모델의 제 3 축은 병렬화 팩터를 나타내고, 상기 4D 클러스터링 모델의 제 5 축은 상기 라벨 데이터를 나타내는,
    방법.
  7. 제 1 항에 있어서,
    상기 복수의 서비스들의 일 서비스는, 상기 서비스가 미리 정의된 개수의 다른 서비스들을 개시 시키거나, 또는 상기 서비스가 상기 전자 디바이스의 알림 패널(notification panel)에서 인에이블 되거나 디스에이블 되는 경우에 상기 부트-업 프로세스에 중요한 것으로 결정되고, 상기 서비스가 미리 정의된 개수의 다른 서비스들을 개시 시키지 않는 경우에는 상기 서비스가 상기 부트-업 프로세스에 중요하지 않은 것으로 결정되는,
    방법.
  8. 멀티-코어 프로세서를 포함하는 전자 디바이스에서 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하는 방법으로서,
    상기 전자 디바이스에서의 상기 부트-업 프로세스의 개시를 검출하는 단계와,
    가속 클러스터에서 이용 가능한 제 1 서비스들 및 감속 클러스터에서 이용 가능한 제 2 서비스들을 결정하는 단계와,
    상기 부트-업 프로세스 동안, 상기 멀티-코어 프로세서의 적어도 하나의 빅 코어에 기초하여 상기 제 1 서비스들을 스케줄링하고, 상기 멀티-코어 프로세서의 적어도 하나의 스몰 코어에 기초하여 상기 제 2 서비스들을 스케줄링 하는 단계를 포함하는,
    방법.
  9. 제 8 항에 있어서,
    상기 전자 디바이스의 상기 부트-업 프로세스 동안 개시되는 복수의 서비스들을 결정하는 단계와,
    상기 복수의 서비스들은 상기 제 1 서비스들 및 상기 제 2 서비스들을 포함하고,
    상기 복수의 서비스들 각각에 대한 상기 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계와,
    상기 부트-업 프로세스에 대한 상기 복수의 서비스들 각각의 중요도를 결정하는 단계와,
    상기 중요도는 상기 복수의 서비스들 각각이 상기 부트-업 프로세스에 중요한 것인지 또는 중요하지 않은 것인지 여부를 나타내고,
    라벨 데이터를 상기 서비스들 각각에 태깅하는 단계와,
    상기 라벨 데이터는 상기 복수의 서비스들 각각이 중요한 것인지 또는 중요하지 않은 것인지 여부를 나타내고,
    상기 복수의 서비스들 각각에 대한 상기 전자 디바이스와 관련된 상기 등록된 시스템 파라미터들 및 상기 복수의 서비스들 각각에 태깅 된 상기 라벨 데이터를 4 차원(4D) 클러스터링 모델로 피딩하는 단계와,
    상기 복수의 서비스들 각각에 대한 상기 전자 디바이스와 관련된 상기 등록된 시스템 파라미터들 및 상기 복수의 서비스들 각각에 태깅 된 상기 라벨 데이터에 기초하여, 상기 4D 클러스터링 모델의 4개의 축 상에 상기 복수의 서비스들을 나타내는 데이터 포인트들을 플로팅함으로써 4D 맵을 생성하는 단계와,
    적어도 2개의 데이터 포인트들이 임계 값보다 큰 경우, 클러스터 센터를 결정하는 단계와,
    상기 클러스터 센터는 상기 데이터 포인트들과 상기 클러스터 센터 사이의 거리에 기초하여 결정되고,
    상기 클러스터 센터에 기초하여, 상기 복수의 서비스들을 나타내는 상기 데이터 포인트들을 상기 가속 클러스터 또는 상기 감속 클러스터로 클러스터링 하는 단계를 포함하는,
    방법.
  10. 제 9 항에 있어서,
    상기 4D 클러스터링 모델의 제 1 축은 중앙 처리 장치(CPU) 로드를 나타내고, 상기 4D 클러스터링 모델의 제 2 축은 메모리 이용 팩터를 나타내고, 상기 4D 클러스터링 모델의 제 3 축은 병렬화 팩터를 나타내고, 상기 4D 클러스터링 모델의 제 5 축은 상기 라벨 데이터를 나타내는,
    방법.
  11. 제 8 항에 있어서,
    상기 전자 디바이스의 후속 부트-업 프로세스 동안 개시되는 복수의 새로운 서비스들을 결정하는 단계와,
    상기 후속 부트-업 프로세스 동안 상기 복수의 새로운 서비스들 각각에 대한 상기 전자 디바이스와 관련된 시스템 파라미터들을 등록하는 단계와,
    상기 복수의 새로운 서비스들 각각의 중요도에 기초하여, 상기 후속 부트-업 프로세스 동안 라벨 데이터를 상기 복수의 새로운 서비스들 각각에 태깅하는 단계와,
    상기 복수의 새로운 서비스들 각각에 대한 상기 전자 디바이스와 관련된 상기 시스템 파라미터들 및 상기 복수의 새로운 서비스들 각각에 태깅 된 상기 라벨 데이터에 기초하여, 상기 가속 클러스터 또는 상기 감속 클러스터에서 상기 후속 부트-업 프로세스 동안 상기 복수의 새로운 서비스들 각각을 동적으로 업데이트하는 단계를 더 포함하는,
    방법.
  12. 제 9 항에 있어서,
    상기 전자 디바이스와 관련된 상기 시스템 파라미터들은 중앙 처리 장치(CPU) 로드, 병렬화 팩터 또는 메모리 이용 팩터 중 적어도 하나를 포함하는,
    방법.
  13. 제 9 항에 있어서,
    상기 복수의 서비스들의 일 서비스는, 상기 서비스가 미리 정의된 개수의 다른 서비스들을 개시 시키거나, 또는 상기 서비스가 상기 전자 디바이스의 알림 패널에서 인에이블 되거나 디스에이블 되는 경우에 상기 부트-업 프로세스에 중요한 것으로 결정되고, 상기 서비스가 미리 정의된 개수의 다른 서비스들을 개시 시키지 않는 경우에는 상기 서비스가 상기 부트-업 프로세스에 중요하지 않은 것으로 결정되는,
    방법.
  14. 제 1 항 내지 제 7 항 중 어느 한 항의 방법을 구현하도록 구성되는 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 전자 디바이스.
  15. 제 8 항 내지 제 13 항 중 어느 한 항의 방법을 구현하도록 구성되는 부트-업 프로세스 동안 서비스들의 스케줄링을 관리하기 위한 전자 디바이스.
KR1020207007696A 2017-08-16 2018-08-16 부트-업 동안 서비스의 스케줄링을 관리하기 위한 방법 및 장치 Active KR102621670B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN201741029059 2017-08-16
IN201741029059(PS) 2017-08-16
IN201741029059(CS) 2018-08-14
PCT/KR2018/009397 WO2019035660A1 (en) 2017-08-16 2018-08-16 METHOD AND APPARATUS FOR MANAGING SERVICE PLANNING DURING STARTING

Publications (2)

Publication Number Publication Date
KR20200032253A true KR20200032253A (ko) 2020-03-25
KR102621670B1 KR102621670B1 (ko) 2024-01-05

Family

ID=65363014

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207007696A Active KR102621670B1 (ko) 2017-08-16 2018-08-16 부트-업 동안 서비스의 스케줄링을 관리하기 위한 방법 및 장치

Country Status (5)

Country Link
US (1) US11455172B2 (ko)
EP (1) EP3662368B1 (ko)
KR (1) KR102621670B1 (ko)
CN (1) CN111052083B (ko)
WO (1) WO2019035660A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507383B2 (en) * 2020-03-10 2022-11-22 Dell Products L.P. Configurable boot paths
KR20220101434A (ko) * 2021-01-11 2022-07-19 삼성전자주식회사 서비스 운용 방법 및 이를 지원하는 전자 장치
US11416263B1 (en) * 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns
CN119065817B (zh) * 2024-11-01 2025-03-04 麒麟软件有限公司 一种在大小核架构cpu下的多进程动态调度方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170090988A (ko) * 2016-01-29 2017-08-08 주식회사 오운 수중음향 센서 시스템

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296267B2 (en) * 2010-10-20 2012-10-23 Microsoft Corporation Upgrade of highly available farm server groups
US20120260080A1 (en) * 2011-04-08 2012-10-11 Nokia Corporation Method and Apparatus for Preprocessing Operations During a Boot Process
US9619282B2 (en) 2012-08-21 2017-04-11 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
JP6046978B2 (ja) * 2012-10-26 2016-12-21 キヤノン株式会社 情報処理装置およびその方法
RU2630171C2 (ru) * 2013-03-15 2017-09-05 Хуавей Текнолоджиз Ко., Лтд. Способ начальной загрузки компьютерной системы с множеством центральных процессоров
CN104216862B (zh) * 2013-05-29 2017-08-04 华为技术有限公司 一种用户进程与系统服务之间的通信方法、装置
US9612879B2 (en) * 2013-08-01 2017-04-04 Texas Instruments Incorporated System constraints-aware scheduler for heterogeneous computing architecture
US10423430B2 (en) * 2014-07-10 2019-09-24 Harman International Industries, Incorporated Operating system startup acceleration
US20160026952A1 (en) * 2014-07-28 2016-01-28 Robin Systems, Inc. System and method performing job management
US9548781B2 (en) * 2014-08-12 2017-01-17 Verizon Patent And Licensing Inc. Enabling pre-provisioned proprietary carrier-specific feature services and applications for execution on a mobile device
CN106200815A (zh) * 2015-04-30 2016-12-07 联想企业解决方案(新加坡)有限公司 电子设备管理
WO2016195274A1 (en) * 2015-06-01 2016-12-08 Samsung Electronics Co., Ltd. Method for scheduling entity in multi-core processor system
US10509677B2 (en) 2015-09-30 2019-12-17 Lenova (Singapore) Pte. Ltd. Granular quality of service for computing resources
US9965329B2 (en) 2015-10-12 2018-05-08 Advanced Micro Devices, Inc. Method and apparatus for workload placement on heterogeneous systems
CN105373431B (zh) * 2015-10-29 2022-09-27 武汉联影医疗科技有限公司 一种计算机系统资源的管理方法及计算机资源管理系统
US10318886B2 (en) 2015-10-30 2019-06-11 Citrix Systems, Inc. Anomaly detection with K-means clustering and artificial outlier injection
CN105760201B (zh) * 2016-02-29 2019-05-28 华为技术有限公司 一种嵌入式装置的启动方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170090988A (ko) * 2016-01-29 2017-08-08 주식회사 오운 수중음향 센서 시스템

Also Published As

Publication number Publication date
EP3662368A4 (en) 2020-08-19
US11455172B2 (en) 2022-09-27
EP3662368B1 (en) 2022-07-20
CN111052083B (zh) 2023-11-07
KR102621670B1 (ko) 2024-01-05
CN111052083A (zh) 2020-04-21
US20210132956A1 (en) 2021-05-06
WO2019035660A1 (en) 2019-02-21
EP3662368A1 (en) 2020-06-10

Similar Documents

Publication Publication Date Title
RU2683509C2 (ru) Диспетчеризация ресурсов на основании профилей использования ресурсов, зависящих от устройства или зависящих от пользователя
US10564708B2 (en) Opportunistic waking of an application processor
KR102621670B1 (ko) 부트-업 동안 서비스의 스케줄링을 관리하기 위한 방법 및 장치
US20170353397A1 (en) Offloading Execution of an Application by a Network Connected Device
US10841397B2 (en) Methods, apparatus, and systems to dynamically discover and host services in fog servers
EP3268842B1 (en) Methods and systems for coordination of operating states amongst multiple socs within a computing device
US20140068624A1 (en) Quota-based resource management
CN113132456B (zh) 一种基于截止时间感知的边云协同任务调度方法及系统
WO2013101289A2 (en) Management of background tasks
US9684536B2 (en) Scheduling method and scheduling system
US20170097854A1 (en) Task placement for related tasks in a cluster based multi-core system
CN112740638A (zh) 分组数据单元(pdu)会话控制方法和设备
US8843545B2 (en) Supervision timer control mechanisms
WO2023024894A1 (zh) 一种多设备同步播放方法及装置
CN102625453B (zh) 用于动态选择rf资源分配中的调度策略的方法和装置
US12008396B2 (en) Application state control method apparatus, and terminal and computer-readable storage medium
EP3276489B1 (en) Parallel processing system
US20200076938A1 (en) Method and system for managing accessory application of accessory device by companion device
US20260024003A1 (en) System and method of managing loading of machine learning models in random access memory based on usage by software applications
US20260052065A1 (en) Reconciler engine(s) for managing external resources within a cloud-based environment
KR20260042337A (ko) 단일 어피니티 설정을 지원하는 전자 장치 및 방법
CN116149871A (zh) 数据传输控制方法及装置、计算机可读存储介质、终端
CN117971473A (zh) 离线任务资源隔离方法及装置
CN119690615A (zh) 一种任务调度方法以及电子设备

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20200316

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20210811

Comment text: Request for Examination of Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20221219

Patent event code: PE09021S01D

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20230628

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20231226

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20240102

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20240103

End annual number: 3

Start annual number: 1

PG1601 Publication of registration