Electronic device and method for identifying cause of bottleneck of electronic device

By employing statistical analysis to determine the cause of bottlenecks in multi-processor systems, the method addresses resource insufficiency and competition, leading to targeted resource allocation and improved performance in electronic devices.

WO2025028907A1PCT designated stage expired Publication Date: 2025-02-06SAMSUNG ELECTRONICS CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/KR2024/010791
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-08-18
Filing Date
2024-07-25
Publication Date
2025-02-06

AI Technical Summary

Technical Problem

Multi-processor computing systems in electronic devices face bottlenecks due to competition for shared resources, leading to delayed threads and decreased system performance, as existing methods fail to accurately identify the cause of resource insufficiency and inefficiently allocate resources.

Method used

The system detects bottlenecks by collecting resource data and using statistical analysis, such as multiple regression analysis, to determine the specific resource causing the bottleneck, allowing for targeted resource allocation to improve performance.

Benefits of technology

This approach effectively identifies the root cause of bottlenecks, enabling precise resource management that enhances system performance without unnecessary resource surpluses, thus improving user experience by reducing delays and maintaining high performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure KR2024010791_06022025_PF_FP_ABST
    Figure KR2024010791_06022025_PF_FP_ABST
Patent Text Reader

Abstract

An electronic device according to various embodiments of the present document may comprise a memory and a processor operatively connected to the memory. The memory may include instructions which are executable by at least one processor and which, when executed, cause the electronic device to: detect a bottleneck occurring on the electronic device; when the bottleneck is detected, collect resource data including information on resources being used; record the collected resource data in a bottleneck data set stored in the memory; and determine at least one resource causing the bottleneck on the basis of the bottleneck data set recorded in the memory. Various other embodiments are possible.
Need to check novelty before this filing date? Find Prior Art

Description

How to identify the cause of bottlenecks in electronic devices and electronics

[0001] This article is about electronic devices, and for example, how to determine what is causing the bottleneck if the electronic device is experiencing a bottleneck.

[0002] Portable electronic devices (hereinafter referred to as electronic devices) such as smartphones are required to process large amounts of high-quality data to provide diverse user experiences. To achieve this, high-performance computing systems are required, and multi-processor computer architectures with multiple cores (e.g., dual, quad, or octa-core) are being developed. These multiprocessor systems are configured to simultaneously process multiple program codes in parallel. More specifically, they provide an environment where multiple processes and threads can be executed simultaneously by operating multiple processors.

[0003] Multiprocessor computing systems implemented on electronic devices require that multiple pieces of program code running on independent processors be able to access shared resources, which can lead to bottlenecks. As multiple threads running within the system compete for limited resources, such as memory, I / O devices, and networks, delays in specific threads can occur. A bottleneck can refer to a phenomenon in which the performance of the entire system deteriorates due to delays in a specific thread. The causes of system performance bottlenecks can vary, including resource shortages, contention for shared resources, resource monopolization by specific threads, and resource misconfiguration / operation.

[0004] To alleviate performance bottlenecks in multiprocessor computing systems, electronic devices can detect situations where system resources are running low and forcibly allocate them. This approach to bottleneck resolution typically involves allocating resources that are responsible for the bottleneck, rather than identifying and eliminating the underlying cause. In this case, some resources may be overused beyond what is needed to address the bottleneck, which may not help alleviate the bottleneck.

[0005] An electronic device according to the present disclosure (or specification, invention) may include a memory and a processor operatively connected to the memory.

[0006] According to one embodiment, the memory may include instructions that are executable by at least one processor and, when executed, cause the electronic device to detect a bottleneck occurring on the electronic device, collect resource data including information on resources being used when the bottleneck is detected, record the collected resource data in a bottleneck data set stored in the memory, and determine at least one resource causing the bottleneck based on the bottleneck data set recorded in the memory.

[0007] A method for an electronic device to determine the cause of a bottleneck according to various embodiments may include an operation of detecting a bottleneck occurring on the electronic device, an operation of collecting resource data including information on resources being used when the bottleneck is detected, an operation of recording the collected resource data in a bottleneck data set, and an operation of determining at least one resource causing the bottleneck based on the bottleneck data set.

[0008] According to various embodiments of the present document, when a bottleneck occurs, a cause of the bottleneck is identified through statistical analysis using recorded data, and accordingly, necessary control operations are performed only for factors that help improve the bottleneck, thereby improving the bottleneck while maintaining system performance, thereby providing an electronic device and a method for identifying the cause of a bottleneck in an electronic device.

[0009] FIG. 1 is a block diagram of an electronic device within a network environment according to various embodiments.

[0010] Figure 2 is a block diagram of a program according to one embodiment.

[0011] Figure 3 is a block diagram of an electronic device according to one embodiment.

[0012] FIG. 4 is a block diagram of a software module operating in an electronic device according to one embodiment.

[0013] Figure 5 is a block diagram of models for analyzing the cause of a bottleneck according to one embodiment.

[0014] Figure 6 illustrates a graph of resource dates according to one embodiment.

[0015] FIG. 7 is a flowchart of a method for analyzing the cause of a bottleneck in an electronic device according to one embodiment.

[0016] FIG. 8 is a flowchart of a method for analyzing the cause of a bottleneck in an electronic device according to one embodiment.

[0017] FIG. 9 illustrates a graphical user interface that provides information on the cause of a bottleneck according to one embodiment.

[0018] Hereinafter, embodiments of the present disclosure will be described in detail with reference to the drawings so that those skilled in the art can easily implement the present disclosure. However, the present disclosure may be implemented in various different forms and is not limited to the embodiments described herein. In connection with the description of the drawings, the same or similar reference numerals may be used for identical or similar components. Furthermore, in the drawings and related descriptions, descriptions of well-known functions and configurations may be omitted for clarity and conciseness.

[0019] FIG. 1 is a block diagram of an electronic device (101) within a network environment (100) according to various embodiments. Referring to FIG. 1, in the network environment (100), the electronic device (101) may communicate with the electronic device (102) via a first network (198) (e.g., a short-range wireless communication network), or may communicate with at least one of the electronic device (104) or the server (108) via a second network (199) (e.g., a long-range wireless communication network). In one embodiment, the electronic device (101) may communicate with the electronic device (104) via the server (108). According to one embodiment, the electronic device (101) may include a processor (120), a memory (130), an input module (150), an audio output module (155), a display module (160), an audio module (170), a sensor module (176), an interface (177), a connection terminal (178), a haptic module (179), a camera module (180), a power management module (188), a battery (189), a communication module (190), a subscriber identification module (196), or an antenna module (197). In some embodiments, the electronic device (101) may omit at least one of these components (e.g., the connection terminal (178)), or may have one or more other components added. In some embodiments, some of these components (e.g., the sensor module (176), the camera module (180), or the antenna module (197)) may be integrated into one component (e.g., the display module (160)).

[0020] The processor (120) may, for example, execute software (e.g., a program (140)) to control at least one other component (e.g., a hardware or software component) of the electronic device (101) connected to the processor (120) and perform various data processing or operations. According to one embodiment, as at least a part of the data processing or operations, the processor (120) may store commands or data received from other components (e.g., a sensor module (176) or a communication module (190)) in a volatile memory (132), process the commands or data stored in the volatile memory (132), and store result data in a non-volatile memory (134). According to one embodiment, the processor (120) may include a main processor (121) (e.g., a central processing unit or an application processor) or an auxiliary processor (123) (e.g., a graphics processing unit, a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor) that can operate independently or together with the main processor (121). For example, when the electronic device (101) includes the main processor (121) and the auxiliary processor (123), the auxiliary processor (123) may be configured to use less power than the main processor (121) or to be specialized for a given function. The auxiliary processor (123) may be implemented separately from the main processor (121) or as a part thereof.

[0021] The auxiliary processor (123) may control at least a portion of functions or states associated with at least one component (e.g., a display module (160), a sensor module (176), or a communication module (190)) of the electronic device (101), for example, on behalf of the main processor (121) while the main processor (121) is in an inactive (e.g., sleep) state, or together with the main processor (121) while the main processor (121) is in an active (e.g., application execution) state. In one embodiment, the auxiliary processor (123) (e.g., an image signal processor or a communication processor) may be implemented as a part of another functionally related component (e.g., a camera module (180) or a communication module (190)). In one embodiment, the auxiliary processor (123) (e.g., a neural network processing unit) may include a hardware structure specialized for processing artificial intelligence models. The artificial intelligence models may be generated through machine learning. This learning can be performed, for example, on the electronic device (101) itself where the artificial intelligence model is executed, or can be performed through a separate server (e.g., server (108)). The learning algorithm can include, for example, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but is not limited to the examples described above. The artificial intelligence model can include multiple artificial neural network layers.The artificial neural network may be one of a deep neural network (DNN), a convolutional neural network (CNN), a recurrent neural network (RNN), a restricted Boltzmann machine (RBM), a deep belief network (DBN), a bidirectional recurrent deep neural network (BRDNN), a deep Q-network, or a combination of two or more of the above, but is not limited to the examples described above. In addition to, or alternatively to, a hardware structure, an artificial intelligence model may include a software structure.

[0022] The memory (130) can store various data used by at least one component (e.g., processor (120) or sensor module (176)) of the electronic device (101). The data can include, for example, software (e.g., program (140)) and input data or output data for commands related thereto. The memory (130) can include volatile memory (132) or non-volatile memory (134).

[0023] The program (140) may be stored as software in the memory (130) and may include, for example, an operating system (142), middleware (144), or an application (146).

[0024] The input module (150) can receive commands or data to be used in a component of the electronic device (101) (e.g., a processor (120)) from an external source (e.g., a user) of the electronic device (101). The input module (150) can include, for example, a microphone, a mouse, a keyboard, a key (e.g., a button), or a digital pen (e.g., a stylus pen).

[0025] The audio output module (155) can output audio signals to the outside of the electronic device (101). The audio output module (155) can include, for example, a speaker or a receiver. The speaker can be used for general purposes, such as multimedia playback or recording playback. The receiver can be used to receive incoming calls. In one embodiment, the receiver can be implemented separately from the speaker or as part of the speaker.

[0026] The display module (160) can visually provide information to an external party (e.g., a user) of the electronic device (101). The display module (160) may include, for example, a display, a holographic device, or a projector and a control circuit for controlling the device. According to one embodiment, the display module (160) may include a touch sensor configured to detect a touch, or a pressure sensor configured to measure the intensity of a force generated by the touch.

[0027] The audio module (170) can convert sound into an electrical signal, or vice versa, convert an electrical signal into sound. According to one embodiment, the audio module (170) can acquire sound through the input module (150), output sound through the sound output module (155), or an external electronic device (e.g., electronic device (102)) (e.g., speaker or headphone) directly or wirelessly connected to the electronic device (101).

[0028] The sensor module (176) can detect the operating status (e.g., power or temperature) of the electronic device (101) or the external environmental status (e.g., user status) and generate an electrical signal or data value corresponding to the detected status. According to one embodiment, the sensor module (176) can include, for example, a gesture sensor, a gyro sensor, a barometric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, a temperature sensor, a humidity sensor, or an illuminance sensor.

[0029] The interface (177) may support one or more designated protocols that may be used to directly or wirelessly connect the electronic device (101) with an external electronic device (e.g., the electronic device (102)). In one embodiment, the interface (177) may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.

[0030] The connection terminal (178) may include a connector through which the electronic device (101) may be physically connected to an external electronic device (e.g., electronic device (102)). According to one embodiment, the connection terminal (178) may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (e.g., a headphone connector).

[0031] The haptic module (179) can convert electrical signals into mechanical stimuli (e.g., vibration or movement) or electrical stimuli that a user can perceive through tactile or kinesthetic sensations. According to one embodiment, the haptic module (179) can include, for example, a motor, a piezoelectric element, or an electrical stimulation device.

[0032] The camera module (180) can capture still images and videos. According to one embodiment, the camera module (180) may include one or more lenses, image sensors, image signal processors, or flashes.

[0033] The power management module (188) can manage power supplied to the electronic device (101). According to one embodiment, the power management module (188) can be implemented as, for example, at least a part of a power management integrated circuit (PMIC).

[0034] A battery (189) may power at least one component of the electronic device (101). In one embodiment, the battery (189) may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.

[0035] The communication module (190) may support the establishment of a direct (e.g., wired) communication channel or a wireless communication channel between the electronic device (101) and an external electronic device (e.g., electronic device (102), electronic device (104), or server (108)), and the performance of communication through the established communication channel. The communication module (190) may operate independently from the processor (120) (e.g., application processor) and may include one or more communication processors that support direct (e.g., wired) communication or wireless communication. According to one embodiment, the communication module (190) may include a wireless communication module (192) (e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module (194) (e.g., a local area network (LAN) communication module, or a power line communication module). Among these communication modules, the corresponding communication module can communicate with an external electronic device (104) via a first network (198) (e.g., a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network (199) (e.g., a long-range communication network such as a legacy cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., a LAN or WAN)). These various types of communication modules can be integrated into a single component (e.g., a single chip) or implemented as multiple separate components (e.g., multiple chips). The wireless communication module (192) can verify or authenticate the electronic device (101) within a communication network such as the first network (198) or the second network (199) by using subscriber information (e.g., an international mobile subscriber identity (IMSI)) stored in the subscriber identification module (196).

[0036] The wireless communication module (192) can support 5G networks and next-generation communication technologies following the 4G network, such as NR access technology (new radio access technology). The NR access technology can support high-speed transmission of high-capacity data (eMBB (enhanced mobile broadband)), minimization of terminal power and connection of multiple terminals (mMTC (massive machine type communications)), or high reliability and low latency (URLLC (ultra-reliable and low-latency communications)). The wireless communication module (192) can support, for example, a high-frequency band (e.g., mmWave band) to achieve a high data transmission rate. The wireless communication module (192) can support various technologies for securing performance in a high-frequency band, such as beamforming, massive multiple-input and multiple-output (MIMO), full dimensional MIMO (FD-MIMO), array antenna, analog beam-forming, or large scale antenna. The wireless communication module (192) can support various requirements specified in the electronic device (101), an external electronic device (e.g., the electronic device (104)), or a network system (e.g., the second network (199)). According to one embodiment, the wireless communication module (192) can support a peak data rate (e.g., 20 Gbps or more) for eMBB realization, a loss coverage (e.g., 164 dB or less) for mMTC realization, or a U-plane latency (e.g., 0.5 ms or less for downlink (DL) and uplink (UL), or 1 ms or less for round trip) for URLLC realization.

[0037] The antenna module (197) can transmit or receive signals or power to or from an external device (e.g., an external electronic device). In one embodiment, the antenna module (197) may include an antenna including a radiator formed of a conductor or a conductive pattern formed on a substrate (e.g., a PCB). In one embodiment, the antenna module (197) may include a plurality of antennas (e.g., an array antenna). In this case, at least one antenna suitable for a communication method used in a communication network, such as the first network (198) or the second network (199), may be selected from the plurality of antennas, for example, by the communication module (190). A signal or power may be transmitted or received between the communication module (190) and an external electronic device via the at least one selected antenna. In some embodiments, in addition to the radiator, another component (e.g., a radio frequency integrated circuit (RFIC)) may be additionally formed as a part of the antenna module (197).

[0038] According to various embodiments, the antenna module (197) may form a mmWave antenna module. In one embodiment, the mmWave antenna module may include a printed circuit board, an RFIC disposed on or adjacent a first side (e.g., a bottom side) of the printed circuit board and capable of supporting a designated high-frequency band (e.g., a mmWave band), and a plurality of antennas (e.g., an array antenna) disposed on or adjacent a second side (e.g., a top side or a side side) of the printed circuit board and capable of transmitting or receiving signals in the designated high-frequency band.

[0039] At least some of the above components can be interconnected and exchange signals (e.g., commands or data) with each other via a communication method between peripheral devices (e.g., a bus, GPIO (general purpose input and output), SPI (serial peripheral interface), or MIPI (mobile industry processor interface)).

[0040] According to one embodiment, commands or data may be transmitted or received between the electronic device (101) and an external electronic device (104) via a server (108) connected to a second network (199). Each of the external electronic devices (102 or 104) may be the same or a different type of device as the electronic device (101). According to one embodiment, all or part of the operations executed in the electronic device (101) may be executed in one or more of the external electronic devices (102, 104, or 108). For example, when the electronic device (101) is to perform a certain function or service automatically or in response to a request from a user or another device, the electronic device (101) may, instead of or in addition to executing the function or service itself, request one or more external electronic devices to perform the function or at least a part of the service. One or more external electronic devices that receive the request may execute at least a portion of the requested function or service, or an additional function or service related to the request, and transmit the result of the execution to the electronic device (101). The electronic device (101) may process the result as is or additionally and provide it as at least a portion of a response to the request. For this purpose, cloud computing, distributed computing, mobile edge computing (MEC), or client-server computing technology may be used, for example. The electronic device (101) may provide an ultra-low latency service by using distributed computing or mobile edge computing, for example. In another embodiment, the external electronic device (104) may include an Internet of Things (IoT) device. The server (108) may be an intelligent server utilizing machine learning and / or a neural network. According to one embodiment, the external electronic device (104) or the server (108) may be included in the second network (199).The electronic device (101) can be applied to intelligent services (e.g., smart home, smart city, smart car, or healthcare) based on 5G communication technology and IoT-related technology.

[0041] Figure 2 is a block diagram of a program module according to various embodiments.

[0042] According to one embodiment, the program (140) may include an operating system (142), middleware (144), or an application (146) executable on the operating system (142) for controlling one or more resources of the electronic device (101). The operating system (142) may be, for example, Android. TM , iOS TM , Windows TM , Symbian TM , Tizen TM , or Bada TM At least some of the programs (140) may be preloaded onto the electronic device (101), for example, at the time of manufacture, or may be downloaded or updated from an external electronic device (e.g., electronic device (102 or 104), or server (108)) in the user's usage environment.

[0043] The operating system (142) can control (e.g., allocate or reclaim) system resources (e.g., processes, memory, or power) of the electronic device (101). The operating system (142) may additionally or alternatively include one or more driver programs for driving other hardware devices of the electronic device (101), for example, an input device (150), an audio output device (155), a display device (160), an audio module (170), a sensor module (176), an interface (177), a haptic module (179), a camera module (180), a power management module (188), a battery (189), a communication module (190), a subscriber identification module (196), or an antenna module (197).

[0044] The middleware (144) can provide various functions to the application (146) so that the application (146) can use functions or information provided by one or more resources of the electronic device (101). The middleware (144) can include, for example, an application manager (201), a window manager (203), a multimedia manager (205), a resource manager (207), a power manager (209), a database manager (211), a package manager (213), a connectivity manager (215), a notification manager (217), a location manager (219), a graphics manager (221), a security manager (223), a call manager (225), or a voice recognition manager (227). The application manager (201) can manage, for example, the life cycle of the application (146). The window manager (203) can manage, for example, GUI resources used on the screen. The multimedia manager (205) can, for example, identify the format required for playing media files and perform encoding or decoding of the media files using a codec suitable for the format. The resource manager (207) can, for example, manage the source code of the application (146) or the space of the memory. The power manager (209) can, for example, manage the capacity, temperature, or power of the battery and, using the information among these, determine or provide power information required for the operation of the electronic device (101). According to one embodiment, the power manager (209) can be linked with the basic input / output system (BIOS).

[0045] The database manager (211) can, for example, create, search, or modify a database to be used in the application (146). The package manager (213) can, for example, manage the installation or update of an application distributed in the form of a package file. The connectivity manager (215) can, for example, manage a wireless or wired connection between the electronic device (101) and an external electronic device. The notification manager (217) can, for example, provide a function for notifying a user of an event that has occurred (e.g., a call, a message, or an alarm). The location manager (219) can, for example, manage location information of the electronic device (101). The graphics manager (221) can, for example, manage graphic effects to be provided to the user or a user interface related thereto. The security manager (223) can, for example, provide system security or user authentication. The telephony manager (225) can manage, for example, the voice call or video call function of the electronic device (101). The voice recognition manager (227) can, for example, transmit the user's voice data to the server (108) and receive a command corresponding to a function to be performed in the electronic device (101) based on the voice data or text data converted based on the voice data. According to one embodiment, the middleware (244) can dynamically delete some of the existing components or add new components. According to one embodiment, at least a part of the middleware (144) can be included as a part of the operating system (142) or implemented as software separate from the operating system (142).

[0046] The application (146) may include, for example, a home (251), a dialer (253), an SMS / MMS (255), an instant message (IM) (257), a browser (259), a camera (261), an alarm (263), a contact (265), a voice recognition (267), an email (269), a calendar (271), a media player (273), an album (275), a watch (277), a health (279) (e.g., measuring the amount of exercise or blood sugar, etc.), or an environmental information (281) (e.g., information on barometric pressure, humidity, or temperature) application. According to one embodiment, the application (146) may further include an information exchange application (not shown) that can support information exchange between the electronic device (101) and an external electronic device. The information exchange application may include, for example, a notification relay application for transmitting designated information (e.g., a call, a message, or an alarm) to an external electronic device, or a device management application for managing the external electronic device. The notification relay application may transmit, for example, notification information corresponding to an event (e.g., reception of a mail) generated in another application (e.g., an email application (269)) of the electronic device (101) to the external electronic device, or receive notification information from the external electronic device and provide it to the user of the electronic device (101). The device management application may control, for example, the power (e.g., turn-on or turn-off) or the function (e.g., brightness, resolution, or focus of the display device (160) or the camera module (180)) of the external electronic device or some component thereof (e.g., the display device (160) or the camera module (180)) that communicates with the electronic device (101). The device management application may additionally or alternatively support installation, deletion, or updating of applications running on external electronic devices.

[0047] Figure 3 is a block diagram of an electronic device according to one embodiment.

[0048] Referring to FIG. 3, the electronic device (300) may include a display (330), a communication module (340), a processor (310), and a memory (320). According to one embodiment, various embodiments of the present document may be implemented even if some of the illustrated configurations are omitted or replaced with other configurations. In addition to the illustrated configurations, the electronic device (300) may further include at least some of the configurations and / or functions of the electronic device (101) of FIG. 1. At least some of the respective components of the illustrated (or not illustrated) electronic device (300) may be operatively, functionally, and / or electrically connected to each other.

[0049] According to one embodiment, the display (330) may be implemented as any one of a liquid crystal display (LCD), a light-emitting diode (LED) display, and an organic light-emitting diode (OLED) display, but is not limited thereto. The display (330) may be configured as a touch screen that detects a touch and / or proximity touch (or hovering) input using a part of a user's body (e.g., a finger) or an input device (e.g., a stylus pen). At least a portion of the display (330) may be flexible, and may be implemented as a foldable display (330) or a rollable display (330). The display (330) may include at least a portion of the configuration and / or functions of the display module (160) of FIG. 1.

[0050] According to one embodiment, the communication module (340) may include various hardware and / or software configurations to support wireless communication with external devices. The communication module (340) may support short-range wireless communication (e.g., Wi-Fi, Bluetooth) and cellular wireless communication (e.g., 4G LTE, 5G NR). The communication module (340) may include at least some of the configurations and / or functions of the communication module (190) of FIG. 1.

[0051] According to one embodiment, the memory (320) may temporarily or permanently store various data, including volatile memory and non-volatile memory. The memory (320) may include at least some of the configuration and / or functions of the memory (130) of FIG. 1, and may store the program (140) of FIGS. 1 and 2.

[0052] According to one embodiment, the memory (320) may store various instructions that may be performed by the processor (310). Such instructions may include control commands such as arithmetic and logical operations, data movement, and input / output that may be recognized by the processor (310).

[0053] According to one embodiment, the processor (310) may be configured as one or more processors capable of performing calculations or data processing related to control and / or communication of each component of the electronic device (300). The processor (310) may be electrically, functionally, and / or operatively connected to each component of the electronic device (300), including a memory (320), a display (330), and a communication module (340). The processor (310) may include at least some of the configurations and / or functions of the processor (120) of FIG. 1.

[0054] In one embodiment, the electronic device (300) may include a multi-processor computer architecture, such as a dual, quad, or octa-core processor. For example, the electronic device (300) may configure a processor (310) by integrating multiple cores that perform core operations, such as computational tasks, on a single integrated circuit. In another embodiment, the processor (310) may be implemented as a single-core processor.

[0055] According to one embodiment, there is no limitation to the computational and data processing functions that the processor (310) can implement on the electronic device (300), but below, various embodiments in which, when a bottleneck occurs in the electronic device (300), resource data is recorded in a bottleneck data set, and the resource causing the bottleneck is analyzed through statistical analysis of the recorded bottleneck data set will be described in detail. The operations of the processor (310) to be described below can be performed by loading instructions stored in the memory (320). For example, the processor (310) executing a specific operation may correspond to executing an instruction that causes the corresponding operation to be executed stored in the memory (320). Hereinafter, an operation that the electronic device (300) or the processor (310) detects or senses may include an operation of recognizing, determining, and / or identifying.

[0056] According to one embodiment, the processor (310) can perform various operations using various resources. Here, the resources may refer to hardware and / or software resources used to execute various processes or threads on the electronic device (300). For example, the resources may include, but are not limited to, the central processing unit (CPU) frequency, the graphics processing unit (GPU) frequency, the load of background processes, and the memory status.

[0057] According to one embodiment, the processor (310) can detect the occurrence of a bottleneck while executing various operations. In a multiprocessor computing system, a performance bottleneck may refer to a phenomenon in which multiple threads within the system compete for limited resources, causing delays in a specific thread, resulting in a deterioration in system performance. The causes of such a bottleneck may vary, such as resource shortage, contention for shared resources, monopolization of resources by a specific thread, misconfiguration of resources, or malfunction of resources.

[0058] In one embodiment, if a bottleneck causes delays in at least one thread, delays in some threads, such as UI-related threads (e.g., the main thread), may result in a perceptible performance degradation for the user. For example, the types of delays (or performance degradation) due to bottlenecks that the user may experience include input delays, looper delays, or ANRs (application not responding). Input delays may occur when a target application does not immediately respond to user input (e.g., touch, hover, or voice input). Looper is a class that handles the message loop associated with the main thread and can perform the function of passing each message entering the message queue to a handler that will process it. If a Looper delay occurs, the application may freeze and / or appear unresponsive to user input. ANRs (application not responding) may be an error that occurs when the application temporarily becomes unresponsive.

[0059] According to one embodiment, the processor (310) may store a bottleneck data set on the memory (320). The bottleneck data set may record the type of delay caused by the bottleneck (e.g., input delay, looper delay, ANR occurrence), delay time, and resource information.

[0060] According to one embodiment, when a bottleneck occurs, the processor (310) can identify resources in use and collect resource data including information about the identified resources. For example, when an input delay occurs, the processor (310) can collect resource data such as the current CPU frequency, GPU frequency, number of task schedulers, number of background processes, and / or memory (320) usage. The processor (310) can accumulate and record the collected resource data on a bottleneck data set.

[0061] According to one embodiment, the processor (310) may collect and record resource data when a user-perceived delay (e.g., a delay in a UI-related thread) occurs among the bottlenecks that occur.

[0062] According to one embodiment, when a bottleneck occurs, the processor (310) may further identify the type and delay time information of the delay caused by the bottleneck and record them in a bottleneck data set. According to one embodiment, the bottleneck data set may accumulate and record delay time and resource usage data for each type of delay.

[0063] Table 1 below shows an example of data recorded in the bottleneck data set when input delay occurs.

[0064] Latency(a) CPU frequency(b) GPU frequency(c) Job scheduler(d) Background(e) Memory07911401430524.9518282208430324.9528141401565324.9538131766650224.9548122131800524.9558122208800524.95.............

[0065] Referring to Table 1 above, when an input delay occurs, the delay time and the resources being used, such as CPU frequency, GPU frequency, number of task schedulers, number of background processes, and memory (320) usage, can be collected and recorded on a bottleneck data set.

[0066] According to one embodiment, the processor (310) may determine at least one resource that causes a bottleneck phenomenon when it occurs based on data recorded in a bottleneck data set stored in the memory (320). The operation of determining the resource may be performed when a reference number or more of data for each bottleneck type is accumulated and recorded in the bottleneck data set, and / or when an actual bottleneck phenomenon occurs.

[0067] Conventional computing systems use methods to forcibly allocate necessary system resources to alleviate bottlenecks. Bottlenecks can occur when some of the resources being used are insufficient. However, conventional computing systems perform control operations to secure all resources without identifying the resource causing the bottleneck. This can result in excess resources that do not actually help alleviate the bottleneck. For example, when increasing CPU frequency, control operations such as securing available capacity can cause problems such as heat generation and increased power consumption. However, if the actual CPU frequency does not affect the bottleneck, this can only cause problems such as heat generation and increased power consumption without alleviating the bottleneck. Therefore, when a bottleneck occurs, the electronic device (300) can determine at least one resource causing the bottleneck and perform necessary control operations only for the determined resource.

[0068] According to one embodiment, the processor (310) may determine at least one resource causing a bottleneck phenomenon based on statistical analysis of a bottleneck data set. Here, the statistical analysis may include multiple regression analysis. Multiple regression analysis is an analysis method for understanding the influence of multiple independent variables on a single dependent variable, and may verify changes in independent variables that affect changes in the dependent variable according to multiple regression analysis. The processor (310) may input multiple resource data recorded in the bottleneck data set as independent variables of the multiple regression analysis model, and input the type and delay time of a delay caused by the bottleneck phenomenon as dependent variables. For example, referring to Table 1, the delay time of the input delay recorded in the bottleneck data set may be input as a dependent variable in the multiple regression analysis model, and the CPU frequency, GPU frequency, the number of task schedulers, the number of background processes, and the memory (320) usage may be input as independent variables, respectively. The processor (310) may input all resource data (e.g., 0 to N in Table 1) recorded in the bottleneck data set, or may input some resource data by sampling it.

[0069] According to one embodiment, the processor (310) may test at least one of linearity, homoscedasticity, normality, and independence for each resource data recorded in the bottleneck data set, and input the resource data that pass the test result into a multiple regression analysis model. This may be a process of testing assumptions required for multiple regression analysis, and data that do not pass the test result may lower the reliability of the analysis result of the multiple regression analysis model, and thus may be intended to remove data that affects the reliability.

[0070] According to one embodiment, the processor (310) may perform a hypothesis testing process to confirm linearity. For example, the processor (310) may set a null hypothesis that the coefficient of each resource that affects the delay when a bottleneck occurs is not 0, and calculate t-statistics and p-values ​​for the null hypothesis. If the calculated p-value is less than the significance level (e.g., 0.005), the null hypothesis may be rejected and the alternative hypothesis may be accepted. In other words, if the calculated p-value is less than the significance level, it may be determined that a specific resource has an effect on the delay of the bottleneck, which is the alternative hypothesis to the null hypothesis. The method by which the processor (310) confirms linearity is not limited to this, and various statistical analysis techniques may be used.

[0071] According to one embodiment, the processor (310) may perform the Brown-Forsythe test and / or the Breusch-Pagan test to confirm the homoscedasticity of residuals. Here, the residual refers to the difference between the predicted value and the actual observed value in regression analysis, and the homoscedasticity of residuals may mean that the residuals of the dependent variable (e.g., delay time due to a bottleneck) and the independent variable (e.g., each resource data) have a constant variance. The method by which the processor (310) confirms the homoscedasticity of residuals is not limited to the above example, and various statistical analysis techniques may be used.

[0072] According to one embodiment, the processor (310) may perform at least one of the Shapiro-Wilk test, the Anderson-Darling test, the KS test, the Normal test, and the Jarque-Bera test to verify the normality of the probable error. Here, the normality of the probable error may mean whether the size of the error from the estimated expected value when obtaining a certain measurement value follows a normal distribution. The method by which the processor (310) verifies the normality of the probable error is not limited to the above example, and various statistical analysis techniques may be used.

[0073] In one embodiment, the processor (310) may use the Durbin Watson test or the variance inflation factor to verify the independence of residuals. Here, the independence of residuals refers to whether residuals, which are the differences between predicted values ​​and actual observed values ​​in regression analysis, are independent of each other, and may include a test of whether there is no correlation between residuals calculated from each resource data. The method by which the processor (310) verifies the independence of residuals is not limited to the above example, and various statistical analysis techniques may be used. An embodiment of verifying linearity, homoscedasticity, normality, or independence of the resource data will be described in more detail with reference to FIGS. 5 and 6.

[0074] According to one embodiment, when a specific delay (e.g., input delay) occurs due to a bottleneck phenomenon, the processor (310) may input resource data recorded in the bottleneck data set that have passed at least one of linearity, homoscedasticity, normality, or independence tests as independent variables in a multiple regression analysis model. Accordingly, only data with high reliability can be selected and input as independent variables in the multiple regression analysis model.

[0075] According to one embodiment, the processor (310) may input a plurality of resource data as independent variables into a multiple regression analysis model, and input the type and delay time of a delay caused by a bottleneck as dependent variables. The processor (310) may determine a combination having the highest explanatory power for the bottleneck, which is the dependent variable, among combinations including at least one of the plurality of resource data as at least one resource causing the bottleneck. For example, when determining the cause of a bottleneck using five resource data, the processor (310) may input at least some of 31 combinations that can be composed of 1 to 5 resource data as independent variables, obtain an explanatory power for the bottleneck, which is the dependent variable, and determine the combination having the highest explanatory power as at least one resource causing the bottleneck.

[0076] According to one embodiment, the processor (310) can determine an independent variable (e.g., a combination of resource data) that maximizes the explanatory power of a dependent variable (e.g., a bottleneck) by using at least one of statistical forward selection, backward elimination, forward stepwise selection, backward stepwise selection, and stepwise selection.

[0077] According to one embodiment, the processor (310) may select one of the resource data, which is an independent variable, with the highest explanatory power for the dependent variable, and determine the combination of resource data including the selected one with the highest explanatory power as at least one resource causing the bottleneck phenomenon. For example, when determining the cause of the bottleneck phenomenon using five resource data, the processor (310) may input each of the five resource data as an independent variable to obtain the explanatory power for the dependent variable, the bottleneck phenomenon, and determine one resource data with the highest explanatory power among them. When it is determined that resource data A has the highest explanatory power, 16 combinations including resource data A among the five resource data combinations may be input as independent variables to obtain the explanatory power for the dependent variable, the bottleneck phenomenon, and determine the combination with the highest explanatory power as at least one resource causing the bottleneck phenomenon. Accordingly, the amount of computation required to calculate the explanatory power may be reduced compared to when all combinations of resource data are used. The present embodiment will be described in more detail with reference to FIG. 8.

[0078] According to one embodiment, if at least one resource is determined to be the cause of a bottleneck through multiple regression analysis, the processor (310) may perform an operation to secure at least one identified resource. For example, the processor (310) may perform an operation to increase the CPU frequency, increase the GPU frequency, delay or terminate the scheduling of at least one background process, and / or secure memory availability.

[0079] According to one embodiment, when the processor (310) determines at least one resource causing a bottleneck, it may provide a user interface including information about the determined resource via the display (330). The user interface will be described in more detail with reference to FIG. 9.

[0080] According to one embodiment, when the amount of data recorded in the bottleneck data set is greater than or equal to a reference value, the processor (310) may determine at least one resource causing the bottleneck phenomenon using a multiple regression analysis model. Statistical analysis such as multiple regression analysis may have high reliability when the amount of input data is sufficient, and when the amount of data recorded in the bottleneck data set is small due to a small number of bottleneck occurrences on the electronic device (300), the reliability of the statistical analysis may be low. Accordingly, when the amount of data recorded in the bottleneck data set is less than the reference value, the processor (310) may not perform an operation of determining a resource causing the bottleneck phenomenon, but may perform an operation of securing each resource according to a predetermined policy. For example, when a delay (e.g., input delay, looper delay, ANR occurrence) occurs due to a specific bottleneck, the electronic device (300) may pre-designate a resource securing operation (e.g., increasing CPU frequency, increasing GPU frequency, scheduling background processes, securing memory (320) availability) to be executed when the bottleneck occurs, and may perform the pre-designated resource securing operation when the bottleneck occurs.

[0081] Instructions for performing the operations of the electronic device (300) (or processor (310)) described above may be stored on a computer-readable recording medium. The recording medium may be tangible and non-transitory. The recording medium may store one or more computer programs including the instructions.

[0082] FIG. 4 is a block diagram of a software module operating in an electronic device according to one embodiment.

[0083] Each software module illustrated may be non-permanently stored in a memory (e.g., memory (320) of FIG. 3) and executed by a processor (e.g., processor (310) of FIG. 3).

[0084] According to one embodiment, an electronic device (or processor) may execute various system processes (410) that are responsible for core parts related to the operation of the system. The system processes (410) may be kernel processes that run in kernel space.

[0085] According to one embodiment, the electronic device (400) may include a bottleneck monitor (412) and a resource controller (414) as part of a system process (410).

[0086] According to one embodiment, the bottleneck monitor (412) may be provided in the form of a Java class (e.g., BottleneckMonitor.class(.java)), a JNI library (e.g., BottleneckMonitor JNI library(.cpp)), and / or a shared object (SO) (e.g., Lib BottleneckMonitor.so).

[0087] According to one embodiment, the bottleneck monitor (412) obtains information on a delay section caused by a bottleneck when a bottleneck occurs and transmits the information to a performance daemon (420), and data related to the bottleneck transmitted to a data collector (422) of the performance daemon (420) can be stored.

[0088] According to one embodiment, the resource controller (414) of the system process (410) and the resource controller (432) of the kernel (430) transmit resource information affecting the performance of the electronic device (400) to the performance daemon (420), and the resource-related data transmitted to the data collector (422) of the performance daemon (420) may be stored.

[0089] According to one embodiment, the data collector (422) of the performance daemon (422) may record information received from the bottleneck monitor (412) and the resource controller (414) in a bottleneck data set. For example, the bottleneck data set may record the type of delay caused by the bottleneck (e.g., input delay, looper delay, ANR occurrence), delay time, and resource information.

[0090] According to one embodiment, the boost framework (424) of the performance daemon (420) may determine at least one resource affecting a bottleneck based on a bottleneck data set recorded in the data collector (422) when the amount of bottleneck-related data transmitted from the bottleneck monitor (412) and / or data recorded in the data collector (422) is greater than a threshold value. For example, the boost framework (424) may determine at least one resource causing a bottleneck based on a statistical analysis (e.g., multiple regression analysis) for the bottleneck data set.

[0091] According to one embodiment, the boost framework (424) can determine at least one resource causing a bottleneck and deliver the determination to the resource controller (414) of the system process (410) and the resource controller (432) of the kernel (430). The resource controller (414) of the system process (410) and the resource controller (432) of the kernel (430) can call a control API (application programming interface) and perform a control operation to secure at least one resource causing a bottleneck through the control API. For example, the control API can perform a control operation such as increasing a CPU frequency, increasing a GPU frequency, rescheduling a background process, and / or securing memory availability.

[0092] Figure 5 is a block diagram of models for analyzing the cause of a bottleneck according to one embodiment.

[0093] According to one embodiment, an electronic device (e.g., the electronic device (300) of FIG. 3) may determine at least one resource causing a bottleneck phenomenon based on resource data (510) recorded in a bottleneck data set. The operation of determining the resource may be performed when a reference number or more of data for each bottleneck type is accumulated and recorded in the bottleneck data set, and / or when an actual bottleneck phenomenon occurs. The electronic device may determine at least one resource causing a bottleneck phenomenon based on a statistical analysis model (e.g., a multiple regression analysis model (530)) for the bottleneck data set.

[0094] According to one embodiment, the electronic device may test at least one of linearity, homoscedasticity, normality, and independence for each resource data (510) recorded in the bottleneck data set, and input the resource data that passed the test result into the multiple regression analysis model (530). For example, the electronic device may input the recorded resource data (510) when a specific bottleneck phenomenon occurs into the data test model (520), and input the resource data that passed the test result in the data test model (520) into the multiple regression analysis model (530). The verification process of the data test model (520) may be a process of testing assumptions required for multiple regression analysis, and by inputting only data that did not pass the test result as an independent variable of the multiple regression analysis model (530), the reliability of the analysis result of the multiple regression analysis model (530) may be increased.

[0095] Referring to FIG. 5, the data validation model (520) may include a linearity validation model (522), a homoscedasticity validation model (524), a normality validation module, and an independence validation model (528). In one embodiment, the data validation model (520) may include only some of the illustrated linearity validation model (522), the homoscedasticity validation model (524), the normality validation model (526), ​​and the independence validation model (528), or may perform a validation process on only some of the linearity validation model (522), the homoscedasticity validation model (524), the normality validation model (526), ​​and the independence validation model (528) for resource data.

[0096] According to one embodiment, the linearity test model (522) can test whether each resource data has linearity. For example, the linearity test model (522) can set a null hypothesis that the coefficient of each resource that affects the delay when a bottleneck occurs is not 0, and can calculate t-statistics and p-values ​​for the null hypothesis. If the calculated p-value is less than the significance level (e.g., 0.005), the linearity test model (522) can reject the null hypothesis and accept the alternative hypothesis. That is, if the calculated p-value is less than the significance level, it can be determined that a specific resource has an effect on the delay of the bottleneck, which is the alternative hypothesis to the null hypothesis. In addition to the method described above, the linearity test model (522) can utilize various test statistical methods, such as the Kolmogorov-Smirnov test and the Shapiro-Wilk test.

[0097] According to one embodiment, the homoscedasticity test model (524) can test whether the residuals of each resource data have homoscedasticity. Here, the residual refers to the difference between the predicted value and the actual observed value in regression analysis, and the homoscedasticity of the residuals can mean that the residuals of the dependent variable (e.g., delay time due to a bottleneck) and the independent variable (e.g., each resource data) have a constant variance.

[0098] According to one embodiment, the homoscedasticity test model (524) may use the Brown-Forsythe test and / or the Breusch-Pagan test to confirm the homoscedasticity of residuals. For example, when using the Brown-Forsythe test, the homoscedasticity test model (524) may perform the following steps: obtaining residuals through regression analysis, calculating absolute deviations from the residuals, dividing the residuals into several groups and calculating the average of the absolute deviations within each group, calculating F-statistics and P-values ​​using the average of the absolute deviations between groups, and comparing the P-values ​​with the significance level. The method by which the homoscedasticity test model (524) tests the homoscedasticity of residuals is not limited thereto, and various statistical analysis techniques may be utilized.

[0099] According to one embodiment, the normality test model (526) can verify whether the probability error of each resource data is normal. Here, the normality of the probability error can mean whether the size of the error from the estimated expected value when obtaining a certain measurement value follows a normal distribution.

[0100] According to one embodiment, the normality test model (526) may use at least one of the Shapiro-Wilk test, the Anderson-Darling test, the KS test, the Normal test, and the Jarque-Bera test to confirm the normality of the probability errors. For example, when the Shapiro-Wilk test is used, the normality test model (526) may test the normality of the probability errors through a process of calculating probability errors from each resource data recorded when a bottleneck occurs, a process of obtaining a test statistic W and a p-value from the calculated probability errors, and a process of comparing the p-value with a significance level. The method by which the normality test model (526) tests the normality of the probability errors is not limited thereto, and various statistical analysis techniques may be utilized.

[0101] In one embodiment, the independence test model (528) can verify whether the residuals of each resource data are independent. Here, the independence of the residuals refers to whether the residuals, which are the differences between predicted values ​​and actual observed values ​​in regression analysis, are independent of each other, and can include a test of whether there is no correlation between the residuals calculated from each resource data.

[0102] According to one embodiment, the independence test model (528) may use the Durbin Watson test or the variance inflation factor to test the independence of the residuals. For example, when the independence test model (528) uses the Durbin Watson test, the model may include a process of obtaining residuals through regression analysis, a process of obtaining a DW test value from the calculated residuals, and a process of testing whether the residuals are correlated according to the DW test value. The DW test value is between 0 and 4. If the DW test value is close to 0, the residuals may have a positive autocorrelation, if it is close to 0, the residuals have a positive autocorrelation, if it is close to 4, the residuals have a negative autocorrelation, and if it is close to 2 (e.g., between 1.5 and 2.5), the residuals can be interpreted as being independent without autocorrelation. In addition, the variance inflation factor (VIF) may be a value that indicates how the variance of each independent variable is affected by other independent variables. The independence test model (528) calculates a variance inflation factor value. If the variance inflation factor value is greater than or equal to a reference value (e.g., 10), the multiplicity is high. If the variance inflation factor value is less than the reference value, the multiplicity is low, indicating independence. The method by which the independence test model (528) tests the independence of residuals is not limited to this, and various statistical analysis techniques can be utilized.

[0103] According to one embodiment, the electronic device may input resource data that have passed the verification result of the data verification model (520) among the resource data recorded in the bottleneck data set as independent variables of the multiple regression analysis model (530). The multiple regression analysis model (530) may determine, through multiple regression analysis, a combination of input resource data that includes at least one resource that has the highest explanatory power for the delay due to the bottleneck phenomenon, which is the dependent variable.

[0104] Figure 6 illustrates a graph of resource dates according to one embodiment.

[0105] Fig. 6 illustrates a graph of resource data that passed the data verification model of Fig. 5 (e.g., the data verification model (520) of Fig. 5) among the resource data recorded in the bottleneck data set. In the graph of Fig. 6, the x-axis may represent the usage value of each resource, and the y-axis may represent the delay time due to the bottleneck phenomenon that occurred.

[0106] According to one embodiment, an electronic device (e.g., the electronic device (300) of FIG. 3) may test at least one of linearity, homoscedasticity, normality, or independence for each resource data recorded in a bottleneck data set, and input the resource data that passes the test result into a multiple regression analysis model (e.g., the multiple regression analysis model (530) of FIG. 5). For example, when a specific bottleneck phenomenon occurs, the electronic device may input the resource data recorded in the bottleneck data set into a data test model, and test at least one of linearity, homoscedasticity, normality, or independence for each resource data using the data test model.

[0107] According to one embodiment, when a specific type of bottleneck (e.g., input delay) occurs, among various resource data recorded in a bottleneck data set, CPU frequency, GPU frequency, number of task schedulers, number of background processes, and memory usage can pass the verification process by the data verification model. Referring to the graphs of FIG. 6, it can be interpreted that the delay time of the bottleneck for each resource data is somewhat correlated. In this way, the electronic device can input resource data that passed at least one of the linearity verification model, the homoscedasticity verification model, the normality verification model, and the independence verification model of the data verification model as independent variables into a multiple regression analysis model.

[0108] FIG. 7 is a flowchart of a method for analyzing the cause of a bottleneck in an electronic device according to one embodiment.

[0109] The method illustrated in FIG. 7 may be performed by a processor (e.g., a processor (310) of FIG. 3) of an electronic device (e.g., an electronic device (300) of FIG. 3), and for example, at least some of the operations illustrated may be performed by a bottleneck monitor (412), a resource controller (414), a data collector (422), or a boost framework (424) of FIG. 4. The method illustrated may be implemented as instructions executable by the electronic device (or a processor of the electronic device). These instructions may be stored on a computer-readable recording medium.

[0110] According to one embodiment, in operation 710, the electronic device may input resource data as an independent variable and delay information of a bottleneck as a dependent variable into a multiple regression analysis model (e.g., the multiple regression analysis model (530) of FIG. 5). According to one embodiment, the electronic device may test at least one of linearity, homoscedasticity, normality, or independence through a data test model (e.g., the data test model (520) of FIG. 5) for each resource data recorded in a bottleneck data set, and input resource data (e.g., CPU frequency, GPU frequency, number of task schedulers, number of background processes, memory usage of FIG. 6) that passed the test result as an independent variable into the multiple regression analysis model.

[0111] According to one embodiment, in operation 720, the electronic device may calculate the explanatory power of the delay information of the bottleneck, which is a dependent variable, for each combination of resource information. Here, the explanatory power is an indicator of how well the independent variables explain the variability of the dependent variable, and may include the coefficient of determination (or R-squared), the adjusted coefficient of determination (adjusted R-squared), the Akaike information criterion (AIC), or the Bayesian information criterion (BIC). For example, the coefficient of determination is calculated as the variability of the dependent variable due to the influence of the independent variable divided by the total variability of the dependent variable, and may have a value between 0 and 1. The calculated value may be higher as the variability of the dependent variable due to the independent variable increases. The adjusted coefficient of determination may be calculated by further considering the number of sample data and the number of independent variables in the formula for calculating the coefficient of determination. The AIC and BIC may be methods for calculating the goodness of fit and complexity of a model using maximum likelihood estimation.

[0112] According to one embodiment, when the processor passes the test of the data test model (e.g., linearity test, homoscedasticity test, normality test, independence test) for five resource data (e.g., CPU frequency, GPU frequency, number of task schedulers, number of background processes, memory usage of FIG. 6) as described in FIG. 6, the processor can input 31 combinations that can be obtained through each resource data as independent variables to calculate the explanatory power for the bottleneck phenomenon, which is the dependent variable.

[0113] According to one embodiment, the electronic device may select one of the resource data, which is an independent variable, with the highest explanatory power for the dependent variable, and determine the combination of resource data including the selected one with the highest explanatory power as at least one resource causing the bottleneck. For example, when determining the cause of the bottleneck using five resource data (e.g., CPU frequency, GPU frequency, number of task schedulers, number of background processes, and memory usage), the electronic device may input each of the five resource data as an independent variable to obtain the explanatory power for the dependent variable, which is the bottleneck, and determine one of the resource data with the highest explanatory power among them. When the calculation result shows that memory usage has the highest explanatory power, the electronic device may input each of 16 combinations including memory usage among the five resource data combinations as independent variables to calculate the explanatory power for the dependent variable, which is the bottleneck.

[0114] According to one embodiment, at operation 730, the electronic device may determine the combination of resource data with the highest explanatory power as at least one resource causing the bottleneck. For example, if among 16 combinations including memory usage, memory usage and the number of background processes are input as independent variables and the combination yields the highest calculated explanatory power, memory usage and background processes may be determined as the resources causing the bottleneck.

[0115] In one embodiment, the electronic device may perform a resource acquisition operation for at least one resource causing a bottleneck. For example, the electronic device may perform an operation to secure memory usage and an operation to delay or terminate the scheduling of at least one background process.

[0116] According to one embodiment, when a bottleneck occurs while the amount of data recorded in the bottleneck data set is less than a reference value, the electronic device may perform operations for securing each resource according to a predetermined policy without performing operations 710 to 730. For example, when a delay (e.g., input delay, looper delay, ANR occurrence) due to a specific bottleneck occurs, the electronic device may pre-designate a resource securing operation (e.g., increasing CPU frequency, increasing GPU frequency, scheduling background processes, securing memory availability) to be executed when the bottleneck occurs, and perform the designated resource securing operation when the bottleneck occurs.

[0117] FIG. 8 is a flowchart of a method for analyzing the cause of a bottleneck in an electronic device according to one embodiment.

[0118] The method illustrated in FIG. 8 may be performed by a processor (e.g., the processor (310) of FIG. 3) of an electronic device (e.g., the electronic device (300) of FIG. 3), and for example, at least some of the operations illustrated may be performed by a bottleneck monitor (412), a resource controller (414), a data collector (422), or a boost framework (424) of FIG. 4. The method illustrated may be implemented as instructions executable by the electronic device (or the processor of the electronic device). These instructions may be stored on a computer-readable recording medium.

[0119] In one embodiment, the electronic device can determine a combination of independent variables (e.g., resource data) that maximizes the explanatory power of a dependent variable (e.g., a bottleneck) by using at least one of a statistical forward selection method, a backward elimination method, a forward stepwise selection method, a backward stepwise selection method, and a stepwise selection procedure. Figure 8 illustrates a process of selecting a combination of resource data using a forward selection method.

[0120] According to one embodiment, in operation 810, the electronic device may set each resource data as an independent variable and set the occurred bottleneck phenomenon as a dependent variable. For example, when an input delay occurs, the electronic device may acquire each resource data recorded at the time of the input delay from among the data recorded in the bottleneck data set, and set the acquired resource data as independent variables. According to one embodiment, the electronic device may select resource data that have passed the verification process (e.g., linearity test, homoscedasticity test, normality test, independence test) of a data verification model (e.g., the data verification model of FIG. 5) among the acquired resource data, and input the resource data as independent variables into the regression analysis model. For example, as described with reference to FIG. 6, among the resource data recorded at the time of the input delay, CPU frequency, GPU frequency, number of task schedulers, number of background processes, and memory usage may pass the verification process by the data verification model.

[0121] According to one embodiment, in operation 815, the electronic device may calculate the explanatory power of each independent variable for a dependent variable. For example, the resource data acquired in operation 810, such as CPU frequency, GPU frequency, number of task schedulers, number of background processes, and memory usage, may be input as independent variables, and the explanatory power for a bottleneck phenomenon may be calculated.

[0122] According to one embodiment, the electronic device may use at least one of the coefficient of determination (or R-squared), the adjusted coefficient of determination (adjusted R-squared), the Akaike information criterion (AIC), or the Bayesian information criterion (BIC) as a value representing explanatory power.

[0123] For example, the electronic device may calculate statistical data, such as those in Table 2, for resource data that passed the validation of the data validation model to obtain explanatory power, such as CPU frequency, GPU frequency, number of task schedulers, number of background processes, and / or memory usage.

[0124] item(a) CPU frequency(b) GPU frequency(c) Job scheduler(d) background(e) Memory(1)coef-0.0012-0.04000.740645.397754.6740(2)std err0.2970.2070.24813.3618.589(3)t-2.912-2.8932.9903.3986.366(4)p0.0050.0050.0050.0020.000(5)AIC552.1552.3543.4542.7523.7

[0125] AIC, an indicator of explanatory power, indicates that a lower value indicates a higher explanatory power. In Table 2 above, memory usage has the lowest AIC value of 523.7, so it can be determined that it has the highest explanatory power for the bottleneck phenomenon of memory usage among the five resource data.

[0126] According to one embodiment, in operation 820, the electronic device may store the independent variable with the highest explanatory power as a result of the calculation in operation 815 in the model_list, and store the remaining independent variables in the candidate_list. For example, as shown in the calculation result in Table 2 above, since memory usage among the five resource data has the highest explanatory power, memory usage may be stored in the model_list, and the remaining independent variables, such as CPU frequency, GPU frequency, number of task schedulers, and number of background processes, may be stored in the candidate_list.

[0127] According to one embodiment, in operation 825, the electronic device can check whether the length of candidate_list (or the number of stored independent variables) is greater than 0. If the length of candidate_list is 0, the electronic device can determine the independent variables currently stored in the model_list as resources affecting the bottleneck in operation 870. If the length of candidate_list is greater than 0, the electronic device can designate the index i as 0 and the max_explanatory (or maximum explanatory power) as 0 in operation 830.

[0128] According to one embodiment, in operation 835, the electronic device may calculate the explanatory power of a combination including the ith independent variable of the candidate_list and the independent variables of the model_list, and designate it as the current_explanatory (or current explanatory power). For example, if memory usage is currently stored in the model_list, when i = 0, the explanatory power may be calculated using only the memory usage as the independent variable, and when i = 1, the explanatory power may be calculated using the number of background processes, which is the first in the candidate_list, and the memory usage as the independent variables.

[0129] According to one embodiment, in operation 840, the electronic device can determine whether the current_explanatory calculated in operation 835 is greater than max_explanatory. Here, max_explanatory can be defined as the maximum value among the explanatory powers calculated when combined with any one resource data of candidate_list while at least one resource data is stored in model_list. For example, in operation 830, if max_explanatory is set to 0 and operation 845 is performed for the first time, operation 845 can be performed because the current_explanatory is greater than max_explanatory.

[0130] According to one embodiment, in operation 845, the electronic device may designate max_explanatory as current_explanatory and designate explanatory_variable as the ith independent variable in the candidate_list. Here, the ith independent variable may be determined in the order of the explanatory power calculated in operation 815 among the independent variables stored in the candidate_list.

[0131] As a result of checking operation 840, if current_explanatory is less than or equal to max_explanatory, operation 845 is not performed, and max_explanatory can maintain its previous value.

[0132] According to one embodiment, in operation 850, the electronic device may increase the index i by 1. In operation 855, the electronic device may check whether i is equal to the length of candidate_list, and if not, may return to operation 835 and repeat operations 835 to 850 until i is equal to the length of candidate_list. By repeating operations 835 to 850 until i is equal to the length of candidate_list, a combination having the maximum explanatory power (max_explanatory) among combinations of at least one independent variable stored in model_list and each independent variable stored in candidate_list may be identified. For example, when combining the memory usage stored in model_list and the number of background processes stored in candidate_list (i=1), the AIC can be calculated as 522.8, when combining the memory usage and the number of task schedulers in candidate_list (i=2), the AIC can be calculated as 525.0, when combining the memory usage and the GPU frequency in candidate_list (i=3), the AIC can be calculated as 525.7, and when combining the memory usage and the CPU frequency in candidate_list (i=4), the AIC can be calculated as 525.7. As a result of the above calculation, the case where the memory usage and the number of background processes are combined has the lowest AIC and is calculated to have the highest explanatory power, so when the combination of the memory usage and the number of background processes is input as an independent variable in max_explanatory, the calculated AIC of 522.8 can be input.

[0133] According to one embodiment, as a result of the verification in operation 855, if i is equal to the length of the candidate_list, i.e., if the explanatory power is calculated by combining at least one independent variable stored in the model_list with all resource data in the candidate_list, then in operation 860, the electronic device can check whether max_explanatory is less than or equal to best_explanatory. Here, best_explanatory can be defined as the highest explanatory power among the combinations of resource data calculated so far. That is, through operation 860, it is possible to check a combination that obtains the maximum explanatory power when only the independent variables in the model_list are used, and when any one resource in the candidate_list is used in combination in addition to the independent variables in the model_list.

[0134] According to one embodiment, if max_explanatory is greater than best_explanatory, in operation 865, the electronic device may designate best_explanatory as the current max_explanatory, remove the explanatory_variable from the candidate_list, and add the explanatory_variable to the model_list. For example, when the explanatory power is calculated by combining each resource data of the candidate_list with the memory usage stored in the model_list and the explanatory power is highest when the memory usage and the number of background processes are used as independent variables, the number of background processes may be removed from the candidate_list and added to the model_list. The electronic device may repeat operations 830 to 860 while storing the memory usage and the number of background processes in the model_list.

[0135] According to one embodiment, if the result of the verification in operation 860 is that max_explanatory is less than best_explanatory, then in operation 870, the electronic device may select independent variables included in the model_list. For example, if the memory usage and the number of background processes are stored in the model_list, and the maximum value (max_explanatory) (or the minimum value of AIC) of the explanatory power calculated by combining the memory usage, the number of background processes, and the respective resource data of the candidate_list is the explanatory power calculated from the combination of the memory usage, the number of background processes, and the number of job schedulers of the candidate_list (e.g., AIC = 523.4), and this value is lower than the explanatory power (best_explanatory) (e.g., AIC = 522.8) calculated by inputting only the memory usage and the number of background processes previously stored in the model_list as independent variables, then the memory usage and the number of background processes currently stored in the model_list may be determined as a combination of independent variables for which the maximum explanatory power is obtained.

[0136] According to one embodiment, the combination of resource data selected in operation 870 can be determined as at least one resource that affects the bottleneck.

[0137] In Figure 8, the process of finding a combination of independent variables that maximizes explanatory power through the forward selection method is described, but it is not limited to this, and various statistical techniques such as the entry method, the elimination method, the backward elimination method, and the stepwise testing procedure can be utilized.

[0138] FIG. 9 illustrates a graphical user interface that provides information on the cause of a bottleneck according to one embodiment.

[0139] According to one embodiment, an electronic device (e.g., electronic device (300) of FIG. 3) may provide a graphical user interface that instructs resources and resource acquisition operations when a bottleneck occurs and a resource causing the bottleneck is identified and a resource acquisition operation is performed.

[0140] Referring to FIG. 9, when an input delay due to a bottleneck is detected, the electronic device may display a graphical user interface (910) indicating the occurrence of the input delay in a pop-up form on a display (e.g., the display (300) of FIG. 3). When a user selects a detailed confirmation button (915), the electronic device may provide a graphical user interface (920) indicating which resource caused the bottleneck and whether measures have been taken to secure the corresponding resource.

[0141] Referring to FIG. 9, if the cause of the input delay is determined to be the CPU frequency and GPU frequency as a result of statistical analysis and a boosting operation (e.g., increasing the CPU frequency, increasing the GPU frequency) is performed, an item (922) instructing the performance of boosting the CPU frequency and an item (924) instructing the performance of boosting the GPU frequency may be displayed on the graphical user interface (920). In this case, an item (926) instructing other resources (e.g., background processes) for which a resource securing operation has not been performed may also be displayed on the graphical user interface (920) like the items (922, 924).

[0142] An electronic device according to various embodiments of the present document may include a memory and a processor operatively connected to the memory.

[0143] According to one embodiment, the memory may include instructions that, when executed by the processor, cause the electronic device to detect a bottleneck occurring on the electronic device, collect resource data including information on resources being used when the bottleneck is detected, record the collected resource data in a bottleneck data set stored in the memory, and determine at least one resource causing the bottleneck based on the bottleneck data set recorded in the memory.

[0144] According to one embodiment, the instructions stored in the memory may include instructions for determining at least one resource causing the bottleneck phenomenon based on multiple regression analysis using a plurality of resource data recorded in the bottleneck data set.

[0145] According to one embodiment, the instructions stored in the memory may include instructions that cause the type and delay time of a delay caused by the bottleneck to be recorded in the bottleneck data set when the bottleneck is detected.

[0146] According to one embodiment, the instructions stored in the memory may include instructions for inputting a plurality of resource data recorded in the bottleneck data set as independent variables into the multiple regression analysis model, and inputting the type and delay time of a delay caused by the bottleneck phenomenon as dependent variables.

[0147] According to one embodiment, the instructions stored in the memory may include instructions for testing at least one of linearity, homoscedasticity, normality, or independence for each resource data recorded in the bottleneck data set, and inputting resource data that passes the test result into the multiple regression analysis model.

[0148] According to one embodiment, the instructions stored in the memory may include instructions that determine a combination having the highest explanatory power among combinations including at least one of the resource data as at least one resource causing the bottleneck.

[0149] According to one embodiment, the instructions stored in the memory may include instructions for selecting one of the resource data having the highest explanatory power, and determining a combination of resource data including one of the resource data having the highest explanatory power as at least one resource causing the bottleneck.

[0150] According to one embodiment, the instructions stored in the memory may include instructions that cause an operation to secure at least one identified resource.

[0151] According to one embodiment, the instructions stored in the memory may include instructions that cause an operation to secure each resource according to a predetermined policy when the amount of data recorded in the bottleneck data set is less than a reference value.

[0152] A method for an electronic device to determine the cause of a bottleneck according to various embodiments may include an operation of detecting a bottleneck occurring on the electronic device, an operation of collecting resource data including information on resources being used when the bottleneck is detected, an operation of recording the collected resource data in a bottleneck data set, and an operation of determining at least one resource causing the bottleneck based on the bottleneck data set.

[0153] According to one embodiment, the operation of determining at least one resource may include an operation of determining at least one resource causing the bottleneck phenomenon based on multiple regression analysis using a plurality of resource data recorded in the bottleneck data set.

[0154] According to one embodiment, the operation of recording the collected resource data may include an operation of recording the type and delay time of a delay caused by the bottleneck in the bottleneck data set when the bottleneck is detected.

[0155] According to one embodiment, the method may include an operation of inputting a plurality of resource data recorded in the bottleneck data set as independent variables into the multiple regression analysis model, and inputting a type of delay and a delay time caused by the bottleneck as dependent variables.

[0156] According to one embodiment, the method may include an operation of testing at least one of linearity, homoscedasticity, normality, or independence for each resource data recorded in the bottleneck data set, and inputting resource data that passes the test result into the multiple regression analysis model.

[0157] According to one embodiment, the method may include an operation of determining a combination having the highest explanatory power among combinations including at least one of the resource data as at least one resource causing the bottleneck.

[0158] According to one embodiment, the method may include an operation of selecting one of the resource data having the highest explanatory power, and an operation of determining a combination of resource data including one of the resource data having the highest explanatory power as at least one resource causing the bottleneck phenomenon, the combination having the highest explanatory power.

[0159] According to one embodiment, the method may further include an operation of securing at least one of the identified resources.

[0160] According to one embodiment, the method may further include an operation of securing each resource according to a predetermined policy when the amount of data recorded in the bottleneck data set is less than a reference value.

[0161] According to one embodiment, instructions for executing the method may be stored on a computer-readable recording medium.

[0162] Electronic devices according to the various embodiments disclosed in this document may take various forms. Electronic devices may include, for example, portable communication devices (e.g., smartphones), computer devices, portable multimedia devices, portable medical devices, cameras, wearable devices, or home appliances. Electronic devices according to the embodiments of this document are not limited to the aforementioned devices.

[0163] The various embodiments of this document and the terminology used therein are not intended to limit the technical features described in this document to specific embodiments, but should be understood to include various modifications, equivalents, or substitutes of the embodiments. In connection with the description of the drawings, similar reference numerals may be used for similar or related components. The singular form of a noun corresponding to an item may include one or more of the items, unless the context clearly indicates otherwise. In this document, each of the phrases "A or B", "at least one of A and B", "at least one of A or B", "A, B, or C", "at least one of A, B, and C", and "at least one of A, B, or C" can include any one of the items listed together in the corresponding phrase among those phrases, or all possible combinations thereof. Terms such as "first," "second," or "first" or "second" may be used merely to distinguish one component from another, and do not limit the components in any other respect (e.g., importance or order). When a component (e.g., a first component) is referred to as "coupled" or "connected" to another component (e.g., a second component), with or without the terms "functionally" or "communicatively," it means that the component can be connected to the other component directly (e.g., wired), wirelessly, or through a third component.

[0164] The term "module" used in various embodiments of this document may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit. A module may be an integral component, or a minimum unit or part of such a component that performs one or more functions. For example, according to one embodiment, a module may be implemented in the form of an application-specific integrated circuit (ASIC).

[0165] Various embodiments of the present document may be implemented as software (e.g., a program (140)) including one or more instructions stored in a storage medium (e.g., an internal memory (136) or an external memory (138)) readable by a machine (e.g., an electronic device (101)). For example, a processor (e.g., a processor (120)) of the machine (e.g., an electronic device (101)) may call at least one instruction among the one or more instructions stored from the storage medium and execute it. This enables the machine to operate to perform at least one function according to the at least one called instruction. The one or more instructions may include code generated by a compiler or code executable by an interpreter. The machine-readable storage medium may be provided in the form of a non-transitory storage medium. Here, 'non-transitory' simply means that the storage medium is a tangible device and does not contain signals (e.g., electromagnetic waves), and the term does not distinguish between cases where data is stored semi-permanently or temporarily on the storage medium.

[0166] According to one embodiment, the method according to various embodiments disclosed in this document may be provided as a computer program product. The computer program product may be traded between sellers and buyers as a product. The computer program product may be distributed in the form of a device-readable storage medium (e.g., compact disc read-only memory (CD-ROM)) or may be provided through an application store (e.g., Play Store). TM ) or directly between two user devices (e.g., smart phones), online distribution (e.g., downloading or uploading). In the case of online distribution, at least a portion of the computer program product may be at least temporarily stored or temporarily created in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or an intermediary server.

[0167] According to various embodiments, each component (e.g., a module or a program) of the above-described components may include one or more entities, and some of the entities may be separated and placed in other components. According to various embodiments, one or more components or operations of the aforementioned components may be omitted, or one or more other components or operations may be added. Alternatively or additionally, a plurality of components (e.g., a module or a program) may be integrated into a single component. In such a case, the integrated component may perform one or more functions of each of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to the integration. According to various embodiments, the operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, omitted, or one or more other operations may be added.

Claims

1. In electronic devices, memory; and comprising at least one processor operatively connected to said memory; The above memory is executable by at least one processor, and when executed, causes the electronic device to: Detect bottlenecks occurring in electronic devices, When the above bottleneck is detected, resource data containing information on the resources being used is collected, Record the above collected resource data into a bottleneck data set stored in the above memory, and An electronic device comprising instructions for determining at least one resource causing a bottleneck based on a bottleneck data set recorded in the memory.

2. In paragraph 1, The instructions stored in the above memory are: An electronic device comprising instructions for determining at least one resource causing the bottleneck phenomenon based on multiple regression analysis using multiple resource data recorded in the bottleneck data set.

3. In paragraph 1 or 2, The instructions stored in the above memory are: An electronic device comprising instructions for recording the type and time of delay caused by the bottleneck in the bottleneck data set when the bottleneck is detected.

4. In paragraph 2, The instructions stored in the above memory are: An electronic device including instructions for inputting multiple resource data recorded in the bottleneck data set as independent variables into the multiple regression analysis model, and inputting the type and delay time of delay caused by the bottleneck phenomenon as dependent variables.

5. In paragraph 4, The instructions stored in the above memory are: For each resource data recorded in the above bottleneck data set, linearity, homoscedasticity, An electronic device comprising instructions for testing at least one of normality and independence, and inputting resource data that passes the test result into the multiple regression analysis model.

6. In any one of paragraphs 1 to 5, The instructions stored in the above memory are: An electronic device comprising instructions for determining a combination having the highest explanatory power among combinations including at least one of the above resource data as at least one resource causing the bottleneck.

7. In paragraph 6, The instructions stored in the above memory are: Select one of the above resource data with the highest explanatory power, An electronic device comprising instructions for determining a combination of resource data including any one of the above combinations of the highest explanatory power as at least one resource causing the bottleneck.

8. In any one of paragraphs 1 to 7, The instructions stored in the above memory are: An electronic device comprising instructions for performing an operation to secure at least one of the identified resources.

9. In any one of paragraphs 1 to 8, The instructions stored in the above memory are: An electronic device including instructions for executing an operation to secure each resource according to a predetermined policy when the amount of data recorded in the above bottleneck data set is less than a reference value.

10. In a method for determining the cause of a bottleneck in an electronic device, An action to detect bottlenecks occurring in electronic devices; An action to collect resource data including information on resources in use when the above bottleneck is detected; An operation of recording the collected resource data to a bottleneck data set; and A method comprising an action of determining at least one resource causing the bottleneck, based on the bottleneck data set.

11. In paragraph 10, The action of determining at least one of the above resources is: A method comprising an operation of determining at least one resource causing the bottleneck phenomenon based on multiple regression analysis using multiple resource data recorded in the bottleneck data set.

12. In clause 10 or 11, The action of recording the above collected resource data is: A method comprising the action of recording the type and delay time of delay caused by the bottleneck in the bottleneck data set when the bottleneck is detected.

13. In paragraph 11, A method including an action of inputting multiple resource data recorded in the bottleneck data set as independent variables into the multiple regression analysis model, and inputting the type and delay time of delay caused by the bottleneck phenomenon as dependent variables.

14. In any one of paragraphs 10 to 13, A method comprising an action of determining a combination with the highest explanatory power among combinations including at least one of the above resource data as at least one resource causing the bottleneck.

15. In a non-transitory computer-readable recording medium, An action to detect bottlenecks occurring in electronic devices; An action to collect resource data including information on resources in use when the above bottleneck is detected; An operation of recording the collected resource data to a bottleneck data set; and A recording medium storing instructions for executing an operation of determining at least one resource causing the bottleneck phenomenon based on the bottleneck data set.

Citation Information

Patent Citations

  • System and method for managing resources in a partitioned computing systmem based on resource usage volatility

    KR101184843B1

  • Apparatus and method for controlling CPU utilization

    KR101657414B1

  • Apparatus and method for analyzing bottlenecks in data distributed processing system

    KR1020150050689A

  • Apparatus and method for decreasing communication data for improvement of bottleneck in distributed deep learning

    KR102268588B1

  • Hardware thread scheduling

    US10261835B2