SlideShare a Scribd company logo
1 of 20
Download to read offline
Presented by
Date
HKG15-107 ACPI Power
Management on ARM64 Servers
Linaro Enterprise Group
Ashwin Chaugule
2/9/2015
Overview
● CPU Performance management
○ CPPC (Collaborative Processor
Performance Control)
○ PCC (Platform Communication Channel)
○ State of patchwork
○ Next steps
● CPU idle management overview
● Device power management overview
um. Hello there!
Power Management overview
● Overall goal is to run the system as efficiently as possible considering power and performance
● Active power management
● Minimize power when the system is active and running
● Idle power management
● Go to deepest possible idle state with most power savings while considering workloads
desired response time
● Limits management
● Deliver max possible performance within the system constraints
● Servers are plugged in and not backed by batteries
○ Cost of power is significant in TCO
● Server workloads typically have a high dynamic range of CPU utilization
● Burst of activity depending on time zones, holiday sales etc.
● Not always running at peak CPU utilization
● Need to be very efficient across the whole range
CPU Performance Management
● CPPC = Collaborative Processor Performance Control
● New method to manage CPU performance
● Defined since ACPI v5.0+
● Preferred method for ARM64 servers vs PSS
● Richer interface supersedes ~12 ACPI objects and notifications
● Performance requests are made on an abstract unit less and continuous scale
● Firmware on the remote processor is free to interpret values however it wants
○ Can choose to map unit as CPU freq. similar to “p-states”
○ Could be a combination of freq + other architecture specific performance knobs
● Handling in firmware prevents risk of preempting freq transitions in the kernel
● Also allows for much wider portability
● OS should not assume any specific meaning to the performance scale
● Per CPU table (CPC) describes each CPUs performance capabilities and controls
● Contents of table can be registers (h/w, memory mapped or PCC) or static integers
Alternate method
● PSS = Performance Supported States
○ Discretized table of CPU frequencies
○ Assumes all CPUs have identical P states
● Requires X86 like mechanisms to write to a register to change CPU frequency
● Processor Throttling Controls
○ PTC, TSS, TPC
○ Throttling states available to the CPU as a percentage of max
● Needs ARM specific spec updates
CPPC high level flow
● Platform enumerates CPU performance
range to the OS
● Highest Performance:
○ Highest performance capability of a
CPU
● Nominal Performance:
○ Max sustained perf level
● Lowest Nonlinear performance:
○ Lowest perf level at which non-linear
power savings achievable. Lower than
this level could be suboptimal
● Lowest Performance:
○ Lowest perf capability
CPPC high level flow
● OS requests desired performance
● Maximum Performance:
○ Upper bound on desired performance
● Desired Performance:
○ Ideal desired perf level
● Performance Reduction Tolerance:
○ Deviation below Desired Performance
that the platform is allowed to run. If
OS requests Desired perf over a
specific Time Window, then this is the
average performance to be delivered
over the Time Window. Time Window
is specific in another register.
● Minimum Performance:
○ Lower bound on desired performance
Other CPPC feedback regs
● Platform may be aware of power budgets and thermal constraints
● It can limit delivered performance by reading instantaneous values of specific sensors or
counters
● Provides notification back to OS when limits change
● Reference Performance Counter:
● Counts at fixed rate when processor is active
● Delivered Performance Counter:
● Counts at rate of current performance level taking Desired into account
● Guaranteed Performance:
● Sustained Performance level deliverable by Platform given current constraints
● Raises a notification when this level changes
● Performance Limited Register:
○ In the event of some constraint (e.g. thermal excursion), this reg has 2 bits defined.
indicates platform unexpectedly delivers less than Desired or less than min.
Per CPU CPPC descriptor
● Each entry of descriptor is either an integer
or a register
● Register could be described as a hardware
register, System I/O or PCC register
● PCC registers have following format:
PCC: Platform Communication Channel
● ACPI v5.0+ defines a mailbox-like mechanism for OS to communicate with a
remote processor and back. e.g. BMC
● ACPI table for PCC (PCCT) defines a list of PCC subspaces/channels
● Each subspace entry defines:
○ Shared communication region address
○ Command and status fields for this region
○ Doorbell semantics for channel
● PCC commands are client specific
○ Clients defined in the current ACPI v5.1 spec include
■ CPPC
■ MPST (Memory node power state table)
■ RAS
● Doorbell protocol defines exclusivity of access to PCC channel between OS and
remote processor
● Supports async mode of notification from remote via IRQ
PCC: High level flow
● PCC Reads:
○ Client acquires a PCC channel lock (client specific)
○ Rings doorbell with READ cmd
■ Client waits for command completion
○ Client reads data updated by remote processor in comm space
○ Client releases PCC channel lock
● PCC Writes:
○ Client acquires a PCC channel lock (client specific)
○ Client writes data to comm space
○ Rings doorbell with WRITE cmd
■ Client waits for command completion
○ Client releases PCC channel lock
● If command completion fails, Client must retry or assume failure
Linux support for CPPC + PCC
● PCC
○ Integrated as mailbox controller
○ Initial patchwork in upstream kernels today (3.19-rcX)
● CPPC
○ CPPC parsing methods abstracted into separate files
○ CPUFreq driver that plugs into existing governors (e.g. ondemand)
■ ondemand ignores CPU freq. which could lead to suboptimal choice of
next freq
■ Patchwork (v4) with CPUfreq integration under review
○ Investigating PID style governor
■ Early patchwork adapted governor from intel_pstate
■ Experiments on ARM64 led to extensive modifications in the way CPU
busy is calculated
● Frequency weighted CPU busyness including idle time
● Move busyness math to workqueue
■ Intel pstate PID suboptimally raises next freq request if workload
doesn’t cause timer to defer > 30ms
■ Need more experimentation on silicon
CPPC + PCC
PCC driver
CPPC lib
CPPC CPUFreq driver
CPPC driver with
inbuilt governor
CPUFreq governors
Hardware
registers, System
I/O
CPPC tables
PCCT
table
PCC firmware interface
CPU Performance
handlers
LINUX
Remote
Processor
CPU idle management overview
● As of current spec (v5.1)
● C states defined for each
processor
○ C0 - On
○ C1 - Cn -> ascending
order or idleness
● C state object for each
processor
● Each object defines
attributes for that idle state
● _CSD object for each
processor defines C state
cross dependency
CPU idle management overview
● _CST and _CSD don’t scale well
to heterogenous architectures
● Assume same number of power
states at each processor
● Cant express Device power state
dependencies
● Cant express power resource
dependencies
● No notion of effect on caches at
each level of hierarchy
● WIP to address shortcomings in
the spec
● Plan to use existing governors +
PSCI methods
Device PM overview
● Devices may define Dx states
○ D0 - ON
○ D3 - OFF
○ D1/D2 - possible intermediate states
○ D3hot - Off (like D3) but may remain enumerable and context preserved.
● Platform specific details handled inside PSx control methods
○ Called as needed by OSPM as the device transitions through Dx states
● Power Resources handled in PR objects
○ Each PR supports: ON, OFF and STA (status) methods
○ Devices have PRx lists which reference power resources as needed in Dx
states
● 2 options to do device pm:
○ Manage power resources inside PSx. Called on entry to Dx state
○ Declare PR separately with its own ON, OFF
■ Define device dependencies and let OSPM manage ON/OFF
● Should not have to rely on clk/reg framework in Linux
Device PM state transitions
● Device state transitions
1.Device wakeup (due to user request or
interrupt)
a)If device depends on a power
resource, must turn on all required
power resources prior to enabling
the device.
2.Keep alive if there are ongoing requests
3.Device inactive (no device requests for some
time)
● Power Resources track all dependent devices
(multiple devices may share the same power
resource)
● Power Resource state transitions
A.All dependent devices are inactive (D3)
B.A dependent device is attempting wakeup
Device PM example
HKG15-107: ACPI Power Management on ARM64 Servers (v2)

More Related Content

What's hot

Linux Kernel Image
Linux Kernel ImageLinux Kernel Image
Linux Kernel Image
艾鍗科技
 

What's hot (20)

LCA13: Power State Coordination Interface
LCA13: Power State Coordination InterfaceLCA13: Power State Coordination Interface
LCA13: Power State Coordination Interface
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
Process Scheduler and Balancer in Linux Kernel
Process Scheduler and Balancer in Linux KernelProcess Scheduler and Balancer in Linux Kernel
Process Scheduler and Balancer in Linux Kernel
 
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareHKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
 
The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421
 
Launch the First Process in Linux System
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux System
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
 
Linux Preempt-RT Internals
Linux Preempt-RT InternalsLinux Preempt-RT Internals
Linux Preempt-RT Internals
 
Project ACRN hypervisor introduction
Project ACRN hypervisor introduction Project ACRN hypervisor introduction
Project ACRN hypervisor introduction
 
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM SystemsXPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
XPDDS18: CPUFreq in Xen on ARM - Oleksandr Tyshchenko, EPAM Systems
 
5 p9 pnor and open bmc overview - final
5 p9 pnor and open bmc overview - final5 p9 pnor and open bmc overview - final
5 p9 pnor and open bmc overview - final
 
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Linux Kernel Image
Linux Kernel ImageLinux Kernel Image
Linux Kernel Image
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
malloc & vmalloc in Linux
malloc & vmalloc in Linuxmalloc & vmalloc in Linux
malloc & vmalloc in Linux
 
Page cache in Linux kernel
Page cache in Linux kernelPage cache in Linux kernel
Page cache in Linux kernel
 

Viewers also liked

Lca14 14-501- glibc-eglibc
Lca14 14-501- glibc-eglibcLca14 14-501- glibc-eglibc
Lca14 14-501- glibc-eglibc
Linaro
 
LCA14: LCA14-415: ACPI Power Management
LCA14: LCA14-415: ACPI Power ManagementLCA14: LCA14-415: ACPI Power Management
LCA14: LCA14-415: ACPI Power Management
Linaro
 
LCU14 114- Upstreaming 201
LCU14 114- Upstreaming 201LCU14 114- Upstreaming 201
LCU14 114- Upstreaming 201
Linaro
 

Viewers also liked (13)

HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting Review
 
LCU14 201- Binary Analysis Tools
LCU14 201- Binary Analysis ToolsLCU14 201- Binary Analysis Tools
LCU14 201- Binary Analysis Tools
 
LCU14 209- LLVM Linux
LCU14 209- LLVM LinuxLCU14 209- LLVM Linux
LCU14 209- LLVM Linux
 
Lca14 14-501- glibc-eglibc
Lca14 14-501- glibc-eglibcLca14 14-501- glibc-eglibc
Lca14 14-501- glibc-eglibc
 
LCA14: LCA14-415: ACPI Power Management
LCA14: LCA14-415: ACPI Power ManagementLCA14: LCA14-415: ACPI Power Management
LCA14: LCA14-415: ACPI Power Management
 
LCU14 114- Upstreaming 201
LCU14 114- Upstreaming 201LCU14 114- Upstreaming 201
LCU14 114- Upstreaming 201
 
BKK16-506 PMWG Farm
BKK16-506 PMWG FarmBKK16-506 PMWG Farm
BKK16-506 PMWG Farm
 
HKG15-902: Upstreaming 201
HKG15-902: Upstreaming 201HKG15-902: Upstreaming 201
HKG15-902: Upstreaming 201
 
LAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg developmentLAS16-TR06: Remoteproc & rpmsg development
LAS16-TR06: Remoteproc & rpmsg development
 
BKK16-404A PCI Development Meeting
BKK16-404A PCI Development MeetingBKK16-404A PCI Development Meeting
BKK16-404A PCI Development Meeting
 
BKK16-111 Tunables: The Future of Platform Optimization Selection in glibc
BKK16-111 Tunables: The Future of Platform Optimization Selection in glibcBKK16-111 Tunables: The Future of Platform Optimization Selection in glibc
BKK16-111 Tunables: The Future of Platform Optimization Selection in glibc
 
Lcu14 306 - OP-TEE Future Enhancements
Lcu14 306 - OP-TEE Future EnhancementsLcu14 306 - OP-TEE Future Enhancements
Lcu14 306 - OP-TEE Future Enhancements
 
BKK16-305B ILP32 Performance on AArch64
BKK16-305B ILP32 Performance on AArch64BKK16-305B ILP32 Performance on AArch64
BKK16-305B ILP32 Performance on AArch64
 

Similar to HKG15-107: ACPI Power Management on ARM64 Servers (v2)

Similar to HKG15-107: ACPI Power Management on ARM64 Servers (v2) (20)

Computer Architecture and Organization
Computer Architecture and OrganizationComputer Architecture and Organization
Computer Architecture and Organization
 
SoC Idling for unconf COSCUP 2016
SoC Idling for unconf COSCUP 2016SoC Idling for unconf COSCUP 2016
SoC Idling for unconf COSCUP 2016
 
BKK16-410 SoC Idling & CPU Cluster PM
BKK16-410 SoC Idling & CPU Cluster PMBKK16-410 SoC Idling & CPU Cluster PM
BKK16-410 SoC Idling & CPU Cluster PM
 
Computer Organization & Architecture (COA) Unit 2
Computer Organization & Architecture (COA) Unit 2Computer Organization & Architecture (COA) Unit 2
Computer Organization & Architecture (COA) Unit 2
 
Measuring a 25 and 40Gb/s Data Plane
Measuring a 25 and 40Gb/s Data PlaneMeasuring a 25 and 40Gb/s Data Plane
Measuring a 25 and 40Gb/s Data Plane
 
Pcp
PcpPcp
Pcp
 
Digital-Unit-III.ppt
Digital-Unit-III.pptDigital-Unit-III.ppt
Digital-Unit-III.ppt
 
Optimizing Linux Servers
Optimizing Linux ServersOptimizing Linux Servers
Optimizing Linux Servers
 
Low power
Low powerLow power
Low power
 
[EWiLi2016] Enabling power-awareness for the Xen Hypervisor
[EWiLi2016] Enabling power-awareness for the Xen Hypervisor[EWiLi2016] Enabling power-awareness for the Xen Hypervisor
[EWiLi2016] Enabling power-awareness for the Xen Hypervisor
 
TMS320C5x
TMS320C5xTMS320C5x
TMS320C5x
 
chapter 1 -Basic Structure of Computers.pptx
chapter 1 -Basic Structure of Computers.pptxchapter 1 -Basic Structure of Computers.pptx
chapter 1 -Basic Structure of Computers.pptx
 
Nvidia tegra K1 Presentation
Nvidia tegra K1 PresentationNvidia tegra K1 Presentation
Nvidia tegra K1 Presentation
 
Arm architecture
Arm architectureArm architecture
Arm architecture
 
module01.ppt
module01.pptmodule01.ppt
module01.ppt
 
PLC Introduction Details
PLC Introduction DetailsPLC Introduction Details
PLC Introduction Details
 
An Overview of LPC2101/02/03
An Overview of LPC2101/02/03An Overview of LPC2101/02/03
An Overview of LPC2101/02/03
 
CAO.pptx
CAO.pptxCAO.pptx
CAO.pptx
 
CPU Architecture
CPU ArchitectureCPU Architecture
CPU Architecture
 
ch2.pptx
ch2.pptxch2.pptx
ch2.pptx
 

More from Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
Linaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
Linaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
Linaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
Linaro
 

More from Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Recently uploaded

Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 

Recently uploaded (20)

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 

HKG15-107: ACPI Power Management on ARM64 Servers (v2)

  • 1. Presented by Date HKG15-107 ACPI Power Management on ARM64 Servers Linaro Enterprise Group Ashwin Chaugule 2/9/2015
  • 2. Overview ● CPU Performance management ○ CPPC (Collaborative Processor Performance Control) ○ PCC (Platform Communication Channel) ○ State of patchwork ○ Next steps ● CPU idle management overview ● Device power management overview
  • 4. Power Management overview ● Overall goal is to run the system as efficiently as possible considering power and performance ● Active power management ● Minimize power when the system is active and running ● Idle power management ● Go to deepest possible idle state with most power savings while considering workloads desired response time ● Limits management ● Deliver max possible performance within the system constraints ● Servers are plugged in and not backed by batteries ○ Cost of power is significant in TCO ● Server workloads typically have a high dynamic range of CPU utilization ● Burst of activity depending on time zones, holiday sales etc. ● Not always running at peak CPU utilization ● Need to be very efficient across the whole range
  • 5. CPU Performance Management ● CPPC = Collaborative Processor Performance Control ● New method to manage CPU performance ● Defined since ACPI v5.0+ ● Preferred method for ARM64 servers vs PSS ● Richer interface supersedes ~12 ACPI objects and notifications ● Performance requests are made on an abstract unit less and continuous scale ● Firmware on the remote processor is free to interpret values however it wants ○ Can choose to map unit as CPU freq. similar to “p-states” ○ Could be a combination of freq + other architecture specific performance knobs ● Handling in firmware prevents risk of preempting freq transitions in the kernel ● Also allows for much wider portability ● OS should not assume any specific meaning to the performance scale ● Per CPU table (CPC) describes each CPUs performance capabilities and controls ● Contents of table can be registers (h/w, memory mapped or PCC) or static integers
  • 6. Alternate method ● PSS = Performance Supported States ○ Discretized table of CPU frequencies ○ Assumes all CPUs have identical P states ● Requires X86 like mechanisms to write to a register to change CPU frequency ● Processor Throttling Controls ○ PTC, TSS, TPC ○ Throttling states available to the CPU as a percentage of max ● Needs ARM specific spec updates
  • 7. CPPC high level flow ● Platform enumerates CPU performance range to the OS ● Highest Performance: ○ Highest performance capability of a CPU ● Nominal Performance: ○ Max sustained perf level ● Lowest Nonlinear performance: ○ Lowest perf level at which non-linear power savings achievable. Lower than this level could be suboptimal ● Lowest Performance: ○ Lowest perf capability
  • 8. CPPC high level flow ● OS requests desired performance ● Maximum Performance: ○ Upper bound on desired performance ● Desired Performance: ○ Ideal desired perf level ● Performance Reduction Tolerance: ○ Deviation below Desired Performance that the platform is allowed to run. If OS requests Desired perf over a specific Time Window, then this is the average performance to be delivered over the Time Window. Time Window is specific in another register. ● Minimum Performance: ○ Lower bound on desired performance
  • 9. Other CPPC feedback regs ● Platform may be aware of power budgets and thermal constraints ● It can limit delivered performance by reading instantaneous values of specific sensors or counters ● Provides notification back to OS when limits change ● Reference Performance Counter: ● Counts at fixed rate when processor is active ● Delivered Performance Counter: ● Counts at rate of current performance level taking Desired into account ● Guaranteed Performance: ● Sustained Performance level deliverable by Platform given current constraints ● Raises a notification when this level changes ● Performance Limited Register: ○ In the event of some constraint (e.g. thermal excursion), this reg has 2 bits defined. indicates platform unexpectedly delivers less than Desired or less than min.
  • 10. Per CPU CPPC descriptor ● Each entry of descriptor is either an integer or a register ● Register could be described as a hardware register, System I/O or PCC register ● PCC registers have following format:
  • 11. PCC: Platform Communication Channel ● ACPI v5.0+ defines a mailbox-like mechanism for OS to communicate with a remote processor and back. e.g. BMC ● ACPI table for PCC (PCCT) defines a list of PCC subspaces/channels ● Each subspace entry defines: ○ Shared communication region address ○ Command and status fields for this region ○ Doorbell semantics for channel ● PCC commands are client specific ○ Clients defined in the current ACPI v5.1 spec include ■ CPPC ■ MPST (Memory node power state table) ■ RAS ● Doorbell protocol defines exclusivity of access to PCC channel between OS and remote processor ● Supports async mode of notification from remote via IRQ
  • 12. PCC: High level flow ● PCC Reads: ○ Client acquires a PCC channel lock (client specific) ○ Rings doorbell with READ cmd ■ Client waits for command completion ○ Client reads data updated by remote processor in comm space ○ Client releases PCC channel lock ● PCC Writes: ○ Client acquires a PCC channel lock (client specific) ○ Client writes data to comm space ○ Rings doorbell with WRITE cmd ■ Client waits for command completion ○ Client releases PCC channel lock ● If command completion fails, Client must retry or assume failure
  • 13. Linux support for CPPC + PCC ● PCC ○ Integrated as mailbox controller ○ Initial patchwork in upstream kernels today (3.19-rcX) ● CPPC ○ CPPC parsing methods abstracted into separate files ○ CPUFreq driver that plugs into existing governors (e.g. ondemand) ■ ondemand ignores CPU freq. which could lead to suboptimal choice of next freq ■ Patchwork (v4) with CPUfreq integration under review ○ Investigating PID style governor ■ Early patchwork adapted governor from intel_pstate ■ Experiments on ARM64 led to extensive modifications in the way CPU busy is calculated ● Frequency weighted CPU busyness including idle time ● Move busyness math to workqueue ■ Intel pstate PID suboptimally raises next freq request if workload doesn’t cause timer to defer > 30ms ■ Need more experimentation on silicon
  • 14. CPPC + PCC PCC driver CPPC lib CPPC CPUFreq driver CPPC driver with inbuilt governor CPUFreq governors Hardware registers, System I/O CPPC tables PCCT table PCC firmware interface CPU Performance handlers LINUX Remote Processor
  • 15. CPU idle management overview ● As of current spec (v5.1) ● C states defined for each processor ○ C0 - On ○ C1 - Cn -> ascending order or idleness ● C state object for each processor ● Each object defines attributes for that idle state ● _CSD object for each processor defines C state cross dependency
  • 16. CPU idle management overview ● _CST and _CSD don’t scale well to heterogenous architectures ● Assume same number of power states at each processor ● Cant express Device power state dependencies ● Cant express power resource dependencies ● No notion of effect on caches at each level of hierarchy ● WIP to address shortcomings in the spec ● Plan to use existing governors + PSCI methods
  • 17. Device PM overview ● Devices may define Dx states ○ D0 - ON ○ D3 - OFF ○ D1/D2 - possible intermediate states ○ D3hot - Off (like D3) but may remain enumerable and context preserved. ● Platform specific details handled inside PSx control methods ○ Called as needed by OSPM as the device transitions through Dx states ● Power Resources handled in PR objects ○ Each PR supports: ON, OFF and STA (status) methods ○ Devices have PRx lists which reference power resources as needed in Dx states ● 2 options to do device pm: ○ Manage power resources inside PSx. Called on entry to Dx state ○ Declare PR separately with its own ON, OFF ■ Define device dependencies and let OSPM manage ON/OFF ● Should not have to rely on clk/reg framework in Linux
  • 18. Device PM state transitions ● Device state transitions 1.Device wakeup (due to user request or interrupt) a)If device depends on a power resource, must turn on all required power resources prior to enabling the device. 2.Keep alive if there are ongoing requests 3.Device inactive (no device requests for some time) ● Power Resources track all dependent devices (multiple devices may share the same power resource) ● Power Resource state transitions A.All dependent devices are inactive (D3) B.A dependent device is attempting wakeup