Power Management in DPDK

The Data Plane Development Kit provides great performance, and comes with a power management library that allows you to tune your applications depending on your use case!

Learn more about Data Plane Development Kit

Subscribe to the Intel Software YouTube Channel

Hi, I’m Sujata from Intel. In this video I talk about power management in the latest 18.05 release of DPDK, and it's benefits. Let's get started.

DPDK gives great performance, but what if you want that great performance using as little power as possible? Thankfully, DPDK comes with a power management library that allows you to tune your applications depending on your use case.

There are two main scenarios in which you might want to use power management.

Where performance is your main concern, you can turn up the power to boost the performance by increasing the frequency on a specific set of cores resulting in increased performance.

Where you are more sensitive to power usage, you can turn down the power on some of the cores in the system when there are no packets being processed by turning down the frequency.

An example of the first scenario is where worker cores are dependent on distributor cores and those worker cores are bottlenecked because they are not being fed work fast enough.

In this case, you can use the Power API in the DPDK Power Library to set all the worker cores to a non-turbo frequency, and then apply per-core Turbo Boost to the distributor cores.

In this example, you are only using slightly more power, but you are focusing that power where it counts.

We’ve seen significant increases in throughput in some applications by enabling Turbo Boost only on a single core.

Now to the second scenario - saving power. Many data centers don’t see consistently high traffic throughout the day. There may be predictable times during the day where the power in many of the cores could be turned down to save power. There is also a mechanism in the DPDK Power Library to set the frequency of specific cores down to the processor’s minimum, thereby saving power.

Additionally, there are mechanisms that will detect when a scale up is needed, such as when a burst of traffic arrives, it automatically increases the core frequency to handle the load.

These mechanisms are applicable to time-of-day and workload scenarios. There are also variants of these, where the mechanisms can be instrumented inside or outside of the application code which is in-band or out-of-band. The in-band method is implemented in the application code.

For example, the application monitors the incoming packets and scale down the core frequency when the traffic is low. The out-of-band mechanism relies on the fact that all traffic goes through DPDK interfaces to the DPDK enabled application.

This mechanism does not need to modify the applications and looks at CPU counters to see how much traffic the DPDK poll loop is handing. Depending on the traffic being handled by DPDK. CPU frequency can be scaled up and down independent of the application, saving power when high frequencies are not needed on the cores.

The basic API in the DPDK Power Library consists of functions to scale up and down the frequency of a given core, as well as enabling and disabling Turbo Boost on a core-by-core basis.

There are also sample applications that are a great start for instrumenting power saving (or performance boosting) functionality in your own applications. So have a look at the Power Management documentation on dpdk.org to get started.

New features were added in the 18.05 release to Power Management such as a Traffic Aware algorithm that scaled up and down depending on incoming traffic, as well as an out-of-band method of monitoring core occupancy using CPU counters.

There was also a new JSON interface added for power policies, allowing containers and VMs to tell the Power Manager application to monitor cores according to the rules specified in power polices.

Further research and development to use power more efficently is happening in the DPDK community. Sign up for the mailing list at DPDK.org to stay up to date.

Thanks for watching, make sure to follow the links and don’t forget to like and subscribe.

412: Already received a request with this reqId.

Add Comment

Activity

Hide Details

Jerry Makare moved this card from Approved (Post) to Go Live Scheduled (Distro)

Jan 14 at 4:21 PM

Jerry Makare set this card to be due today at 12:00 PM

Jan 14 at 4:21 PM

Jerry Makare moved this card from Review (Post) to Approved (Post)

Jan 4 at 11:22 PM

Jerry Makare transferred this card from ISTV 2018 Production Pipeline

Dec 27, 2018 at 1:12 PM

Jerry Makare removed Distribution Deliverables from this card

Dec 27, 2018 at 12:27 PM

Jerry Makare removed Final Render Deliverables from this card

Dec 27, 2018 at 12:27 PM

Jerry Makare removed Review Milestone Tasks from this card

Dec 27, 2018 at 12:27 PM

Jerry Makare removed Editorial Milestone Tasks from this card

Dec 27, 2018 at 12:27 PM

Jerry Makare removed Scripting Milestone Tasks from this card

Dec 27, 2018 at 12:27 PM

Jerry Makare removed Ideation Milestone Tasks from this card

Dec 27, 2018 at 12:27 PM

Jerry Makare added Chris M. Davis to this card

Nov 26, 2018 at 4:44 PM

Chris M. Davis left this card

Nov 19, 2018 at 10:43 AM

Chris M. Davis joined this card

Nov 16, 2018 at 2:32 PM

Chris M. Davis left this card

Nov 16, 2018 at 2:20 PM

Stephanie Essin Nov 15, 2018 at 11:48 AM

Studio Script:
Elevator Pitch:

Hi, I’m Sujata from Intel. In this video I talk about power management in the latest 18.05 release of DPDK, and it's benefits. Let's get started.

Body:

DPDK gives great performance, but what if you want that great performance using as little power as possible? Thankfully, DPDK comes with a power management library that allows you to tune your applications depending on your use case.

There are two main scenarios in which you might want to use power management.

Where performance is your main concern, you can turn up the power to boost the performance by increasing the frequency on a specific set of cores resulting in increased performance.

Where you are more sensitive to power usage, you can turn down the power on some of the cores in the system when there are no packets being processed by turning down the frequency.

An example of the first scenario is where worker cores are dependent on distributor cores and those worker cores are bottlenecked because they are not being fed work fast enough.

In this case, you can use the Power API in the DPDK Power Library to set all the worker cores to a non-turbo frequency, and then apply per-core Turbo Boost to the distributor cores.

In this example, you are only using slightly more power, but you are focusing that power where it counts.

We’ve seen significant increases in throughput in some applications by enabling Turbo Boost only on a single core.

Now to the second scenario - saving power. Many data centers don’t see consistently high traffic throughout the day. There may be predictable times during the day where the power in many of the cores could be turned down to save power. There is also a mechanism in the DPDK Power Library to set the frequency of specific cores down to the processor’s minimum, thereby saving power.

Additionally, there are mechanisms that will detect when a scale up is needed, such as when a burst of traffic arrives, it automatically increases the core frequency to handle the load.

These mechanisms are applicable to time-of-day and workload scenarios. There are also variants of these, where the mechanisms can be instrumented inside or outside of the application code which is in-band or out-of-band. The in-band method is implemented in the application code.

For example, the application monitors the incoming packets and scale down the core frequency when the traffic is low. The out-of-band mechanism relies on the fact that all traffic goes through DPDK interfaces to the DPDK enabled application.

This mechanism does not need to modify the applications and looks at CPU counters to see how much traffic the DPDK poll loop is handing. Depending on the traffic being handled by DPDK. CPU frequency can be scaled up and down independent of the application, saving power when high frequencies are not needed on the cores.

The basic API in the DPDK Power Library consists of functions to scale up and down the frequency of a given core, as well as enabling and disabling Turbo Boost on a core-by-core basis.

There are also sample applications that are a great start for instrumenting power saving (or performance boosting) functionality in your own applications. So have a look at the Power Management documentation on dpdk.org to get started.

New features were added in the 18.05 release to Power Management such as a Traffic Aware algorithm that scaled up and down depending on incoming traffic, as well as an out-of-band method of monitoring core occupancy using CPU counters.

There was also a new JSON interface added for power policies, allowing containers and VMs to tell the Power Manager application to monitor cores according to the rules specified in power polices.

Further research and development to use power more efficently is happening in the DPDK community. Sign up for the mailing list at DPDK.org to stay up to date.

Thanks for watching, make sure to follow the links and don’t forget to like and subscribe.