-
公开(公告)号:US10649889B2
公开(公告)日:2020-05-12
申请号:US15996109
申请日:2018-06-01
Applicant: Apple Inc.
Inventor: Lionel D. Desai , Russell A. Blaine , Benjamin C. Trumbull
Abstract: According to one embodiment, it is determined whether data stored in a compressor pool exceeds a first predetermined threshold, the compressor pool being a fixed-size memory pool maintained in a kernel of an operating system. The compressor pool stores a plurality of compressed memory pages, each memory page storing compressed data pages that can be paged out to or paged in from a persistent storage device. The compressed memory pages are associated with a plurality of processes. A memory consumption reduction action is performed to reduce memory usage, including terminating at least one of the processes to reclaim a memory space occupied by the process, in response to determining that the data stored in the compressor pool exceeds the first predetermined threshold.
-
公开(公告)号:US10437639B2
公开(公告)日:2019-10-08
申请号:US15786466
申请日:2017-10-17
Applicant: Apple Inc.
Inventor: Russell A. Blaine , Daniel A. Chimene , Shantonu Sen , John Dorsey , Bryan Hinch , Cyril De La Cropte De Chanterac , Oliver Cozette
Abstract: In one embodiment, an application programming interface (API) is defined that enables a thread scheduler to communicate thread information to the CPU performance controller when dispatching a thread to a processor or processor core. When dispatching a thread, the scheduler may communicate thread information including thread state information, a general “importance” of the thread as defined by a priority level and/or quality of service (QoS) classification, a measurement of the scheduler dispatch latency for the thread, or architectural information regarding the instructions within the thread, such as whether the thread is contains 64-bit or 32-bit instructions. The performance controller can use the information provided by the scheduler to make performance control decisions for the processor cores within the system.
-
公开(公告)号:US10417054B2
公开(公告)日:2019-09-17
申请号:US15870763
申请日:2018-01-12
Applicant: Apple Inc.
Inventor: Jeremy C. Andrus , John G. Dorsey , James M. Magee , Daniel A. Chimene , Cyril de la Cropte de Chanterac , Bryan R. Hinch , Aditya Venkataraman , Andrei Dorofeev , Nigel R. Gamble , Russell A. Blaine , Constantin Pistol
IPC: G06F9/50 , G06F9/48 , G06F9/26 , G06F9/38 , G06F9/54 , G06F1/20 , G06F1/324 , G06F1/3234 , G06F1/329 , G06F1/3296 , G06F9/30 , G06F1/3206
Abstract: Systems and methods are disclosed for scheduling threads on a processor that has at least two different core types, such as an asymmetric multiprocessing system. Each core type can run at a plurality of selectable voltage and frequency scaling (DVFS) states. Threads from a plurality of processes can be grouped into thread groups. Execution metrics are accumulated for threads of a thread group and fed into a plurality of tunable controllers for the thread group. A closed loop performance control (CLPC) system determines a control effort for the thread group and maps the control effort to a recommended core type and DVFS state. A closed loop thermal and power management system can limit the control effort determined by the CLPC for a thread group, and limit the power, core type, and DVFS states for the system. Deferred interrupts can be used to increase performance.
-
公开(公告)号:US10310891B2
公开(公告)日:2019-06-04
申请号:US14871837
申请日:2015-09-30
Applicant: Apple Inc.
Inventor: Daniel A. Chimene , Daniel A. Steffen , James M Magee , Russell A. Blaine , Shantonu Sen
Abstract: Disclosed herein are systems, methods, and computer-readable media directed to scheduling threads in a multi-processing environment that can resolve a priority inversion. Each thread has a scheduling state and a context. A scheduling state can include attributes such as a processing priority, classification (background, fixed priority, real-time), a quantum, scheduler decay, and a list of threads that may be waiting on the thread to make progress. A thread context can include registers, stack, other variables, and one or more mutex flags. A first thread can hold a resource with a mutex, the first thread having a low priority. A second thread having a scheduling state with a high priority can be waiting on the resource and may be blocked behind the mutex held by the first process. A scheduler can execute the context of the lower priority thread using the scheduler state of the second, higher priority thread. More than one thread can be waiting on the resource held by the first thread. A “pusher list” of threads that are waiting on the first thread can be associated with the first thread. The scheduler can use the pusher list to identify threads that need the first thread to make progress until the first thread releases the resource and mutex. Then, the scheduler can use the pusher list to identify threads that are now runnable and make immediate use of the resource.
-
35.
公开(公告)号:US20180349182A1
公开(公告)日:2018-12-06
申请号:US15870766
申请日:2018-01-12
Applicant: Apple Inc.
Inventor: Jeremy C. Andrus , John G. Dorsey , James M. Magee , Daniel A. Chimene , Cyril de la Cropte de Chanterac , Bryan R. Hinch , Aditya Venkataraman , Andrei Dorofeev , Nigel R. Gamble , Russell A. Blaine , Constantin Pistol
Abstract: Systems and methods are disclosed for scheduling threads on a processor that has at least two different core types, such as an asymmetric multiprocessing system. Each core type can run at a plurality of selectable voltage and frequency scaling (DVFS) states. Threads from a plurality of processes can be grouped into thread groups. Execution metrics are accumulated for threads of a thread group and fed into a plurality of tunable controllers for the thread group. A closed loop performance control (CLPC) system determines a control effort for the thread group and maps the control effort to a recommended core type and DVFS state. A closed loop thermal and power management system can limit the control effort determined by the CLPC for a thread group, and limit the power, core type, and DVFS states for the system. Deferred interrupts can be used to increase performance.
-
公开(公告)号:US20180349181A1
公开(公告)日:2018-12-06
申请号:US15836411
申请日:2017-12-08
Applicant: Apple Inc.
Inventor: Daniel A. Steffen , Jainam A. Shah , James M. Magee , Jeremy C. Andrus , Russell A. Blaine
CPC classification number: G06F9/4881 , G06F9/52 , G06F9/54
Abstract: Techniques are disclosed relating to inter-process communication. In some embodiments, a kernel receives a notification of a communication to be sent from a first thread of a first application to a second thread of a second application. The kernel provides a reply port to the first thread for receiving a reply to the communication from the second thread. The kernel facilitates sending the communication from the first thread to the second thread. The kernel increases an execution priority of the second thread in response to the kernel determining that the reply port and a destination port associated with the second thread are identified in the communication. In some embodiments, the kernel creates the reply port in response to receiving the notification and, in response to detecting the reply has been communicated to the reply port, decreases the execution priority of the second thread and removes the reply port.
-
37.
公开(公告)号:US20180349177A1
公开(公告)日:2018-12-06
申请号:US15870770
申请日:2018-01-12
Applicant: Apple Inc.
Inventor: Constantin Pistol , Daniel A. Chimene , Jeremy C. Andrus , Russell A. Blaine , Kushal Dalmia
Abstract: Systems and methods are disclosed for scheduling threads on a processor that has at least two different core types, such as an asymmetric multiprocessing system. Each core type can run at a plurality of selectable voltage and frequency scaling (DVFS) states. Threads from a plurality of processes can be grouped into thread groups. Execution metrics are accumulated for threads of a thread group and fed into a plurality of tunable controllers for the thread group. A closed loop performance control (CLPC) system determines a control effort for the thread group and maps the control effort to a recommended core type and DVFS state. A closed loop thermal and power management system can limit the control effort determined by the CLPC for a thread group, and limit the power, core type, and DVFS states for the system. Deferred interrupts can be used to increase performance.
-
38.
公开(公告)号:US20180349175A1
公开(公告)日:2018-12-06
申请号:US15870760
申请日:2018-01-12
Applicant: Apple Inc.
Inventor: Jeremy C. Andrus , John G. Dorsey , James M. Magee , Daniel A. Chimene , Cyril de la Cropte de Chanterac , Bryan R. Hinch , Aditya Venkataraman , Andrei Dorofeev , Nigel R. Gamble , Russell A. Blaine , Constantin Pistol , James S. Ismail
Abstract: Systems and methods are disclosed for scheduling threads on a processor that has at least two different core types, such as an asymmetric multiprocessing system. Each core type can run at a plurality of selectable voltage and frequency scaling (DVFS) states. Threads from a plurality of processes can be grouped into thread groups. Execution metrics are accumulated for threads of a thread group and fed into a plurality of tunable controllers for the thread group. A closed loop performance control (CLPC) system determines a control effort for the thread group and maps the control effort to a recommended core type and DVFS state. A closed loop thermal and power management system can limit the control effort determined by the CLPC for a thread group, and limit the power, core type, and DVFS states for the system. Deferred interrupts can be used to increase performance.
-
公开(公告)号:US20180088985A1
公开(公告)日:2018-03-29
申请号:US15786466
申请日:2017-10-17
Applicant: Apple Inc.
Inventor: Russell A. Blaine , Daniel A. Chimene , Shantonu Sen , John Dorsey , Bryan Hinch , Cyril De La Cropte De Chanterac , Oliver Cozette
CPC classification number: G06F9/4881 , G06F9/4893 , G06F9/52 , Y02D10/24
Abstract: In one embodiment, an application programming interface (API) is defined that enables a thread scheduler to communicate thread information to the CPU performance controller when dispatching a thread to a processor or processor core. When dispatching a thread, the scheduler may communicate thread information including thread state information, a general “importance” of the thread as defined by a priority level and/or quality of service (QoS) classification, a measurement of the scheduler dispatch latency for the thread, or architectural information regarding the instructions within the thread, such as whether the thread is contains 64-bit or 32-bit instructions. The performance controller can use the information provided by the scheduler to make performance control decisions for the processor cores within the system.
-
公开(公告)号:US09830187B1
公开(公告)日:2017-11-28
申请号:US14732266
申请日:2015-06-05
Applicant: Apple Inc.
Inventor: Russell A. Blaine , Daniel A. Chimene , Shantonu Sen , John Dorsey , Bryan Hinch , Cyril De La Cropte De Chanterac , Olivier Cozelle
CPC classification number: G06F9/4881 , G06F9/4893 , G06F9/52
Abstract: In one embodiment, an application programming interface (API) is defined that enables a thread scheduler to communicate thread information to the CPU performance controller when dispatching a thread to a processor or processor core. When dispatching a thread, the scheduler may communicate thread information including thread state information, a general “importance” of the thread as defined by a priority level and/or quality of service (QoS) classification, a measurement of the scheduler dispatch latency for the thread, or architectural information regarding the instructions within the thread, such as whether the thread is contains 64-bit or 32-bit instructions. The performance controller can use the information provided by the scheduler to make performance control decisions for the processor cores within the system.
-
-
-
-
-
-
-
-
-