SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler 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)

Mais conteúdo relacionado

Mais procurados

Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Install
boyw165
 

Mais procurados (20)

Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKB
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
 
Linux Kernel Booting Process (2) - For NLKB
Linux Kernel Booting Process (2) - For NLKBLinux Kernel Booting Process (2) - For NLKB
Linux Kernel Booting Process (2) - For NLKB
 
Note - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and InstallNote - (EDK2) Acpi Tables Compile and Install
Note - (EDK2) Acpi Tables Compile and Install
 
Memory model
Memory modelMemory model
Memory model
 
Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
 
Qemu Pcie
Qemu PcieQemu Pcie
Qemu Pcie
 
Page cache in Linux kernel
Page cache in Linux kernelPage cache in Linux kernel
Page cache in Linux kernel
 
Virtualization Support in ARMv8+
Virtualization Support in ARMv8+Virtualization Support in ARMv8+
Virtualization Support in ARMv8+
 
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
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
 
Continguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux KernelContinguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux Kernel
 
Bootloaders (U-Boot)
Bootloaders (U-Boot) Bootloaders (U-Boot)
Bootloaders (U-Boot)
 
LCA14: LCA14-306: CPUidle & CPUfreq integration with scheduler
LCA14: LCA14-306: CPUidle & CPUfreq integration with schedulerLCA14: LCA14-306: CPUidle & CPUfreq integration with scheduler
LCA14: LCA14-306: CPUidle & CPUfreq integration with scheduler
 
Linux BPF Superpowers
Linux BPF SuperpowersLinux BPF Superpowers
Linux BPF Superpowers
 
YOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems Performance
 

Destaque

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
 

Destaque (14)

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
 
LCU14-410: How to build an Energy Model for your SoC
LCU14-410: How to build an Energy Model for your SoCLCU14-410: How to build an Energy Model for your SoC
LCU14-410: How to build an Energy Model for your SoC
 
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
 

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

Semelhante a 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
 

Mais de 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
 

Mais de 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
 

Último

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Último (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 

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