[v4,2/3] examples/vm_power_manager: Allowing power managing of idle cores

Message ID 20200714160200.1727417-2-rory.sexton@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v4,1/3] examples/vm_power_manager: Make branch ratio threshold per core |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Sexton, Rory July 14, 2020, 4:01 p.m. UTC
  This change is required to allow the branch ratio algorithm to
power manage cores with no workload running on them. This is
useful both when idle cores don't use C-states and for a number of
hyperthreading scenarios.

Signed-off-by: Rory Sexton <rory.sexton@intel.com>
Reviewed-by: David Hunt <david.hunt@intel.com>

---
v4: no changes
---
 examples/vm_power_manager/oob_monitor_x86.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
  

Comments

Pattan, Reshma July 15, 2020, 3:09 p.m. UTC | #1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Rory Sexton
> Sent: Tuesday, July 14, 2020 5:02 PM
> To: dev@dpdk.org; Hunt, David <david.hunt@intel.com>
> Subject: [dpdk-dev] [v4 2/3] examples/vm_power_manager: Allowing power
> managing of idle cores
> 
> This change is required to allow the branch ratio algorithm to power manage
> cores with no workload running on them. This is useful both when idle cores
> don't use C-states and for a number of hyperthreading scenarios.
> 
> Signed-off-by: Rory Sexton <rory.sexton@intel.com>
> Reviewed-by: David Hunt <david.hunt@intel.com>
> 
> ---
> v4: no changes
> ---

Acked-by: Reshma pattan <reshma.pattan@intel.com>
  

Patch

diff --git a/examples/vm_power_manager/oob_monitor_x86.c b/examples/vm_power_manager/oob_monitor_x86.c
index 3c514475f..a5b1c168c 100644
--- a/examples/vm_power_manager/oob_monitor_x86.c
+++ b/examples/vm_power_manager/oob_monitor_x86.c
@@ -96,12 +96,12 @@  apply_policy(int core)
 	g_branch_misses = miss_diff;
 
 	if (hits_diff < (INTERVAL*100)) {
-		/* Likely no workload running on this core. Skip. */
-		return -1.0;
+		/* Likely no workload running on this core. */
+		ratio = 0.0;
+	} else {
+		ratio = (float)miss_diff * (float)100 / (float)hits_diff;
 	}
 
-	ratio = (float)miss_diff * (float)100 / (float)hits_diff;
-
 	/*
 	 * Store the last few directions that the ratio indicates
 	 * we should take. If there's on 'up', then we scale up