[irqbalance/f16] Resolves: bz781578

Neil Horman nhorman at fedoraproject.org
Mon Jan 16 20:35:48 UTC 2012


commit dbff7c8caf90b5770740e69364f286ab21ef275c
Author: Neil Horman <nhorman at tuxdriver.com>
Date:   Mon Jan 16 15:33:57 2012 -0500

    Resolves: bz781578

 irqbalance-bz781578-powerthresh-hysteresis.patch |   43 ++++++++++++++++++++++
 irqbalance.spec                                  |    8 ++++-
 2 files changed, 50 insertions(+), 1 deletions(-)
---
diff --git a/irqbalance-bz781578-powerthresh-hysteresis.patch b/irqbalance-bz781578-powerthresh-hysteresis.patch
new file mode 100644
index 0000000..b9adedc
--- /dev/null
+++ b/irqbalance-bz781578-powerthresh-hysteresis.patch
@@ -0,0 +1,43 @@
+commit 5ed963e5cb88b32ecf220e2b155a3d88cddb838a
+Author: Neil Horman <nhorman at tuxdriver.com>
+Date:   Tue Jan 3 12:54:15 2012 -0500
+
+    powerthresh: add hysteresis to powersave mode
+    
+    We found that in some cases people were getting log spam from cpus constantly
+    leaving powersave mode.  This ensures that at least one cpu is in powersave mode
+    before we re-enable powersave on all cpus.
+    
+    Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
+
+diff --git a/irqlist.c b/irqlist.c
+index c29ee84..36d4e0a 100644
+--- a/irqlist.c
++++ b/irqlist.c
+@@ -45,6 +45,7 @@ struct load_balance_info {
+ 	unsigned int num_within;
+ 	unsigned int num_over;
+ 	unsigned int num_under;
++	unsigned int num_powersave;
+ 	struct topo_obj *powersave;
+ };
+ 
+@@ -106,6 +107,9 @@ static void migrate_overloaded_irqs(struct topo_obj *obj, void *data)
+ 	struct load_balance_info *info = data;
+ 	int deviation;
+ 
++	if (obj->powersave_mode)
++		info->num_powersave++;
++
+ 	/*
+  	 * Don't rebalance irqs on objects whos load is below the average
+  	 */
+@@ -178,7 +182,7 @@ void update_migration_status(void)
+ 			info.powersave->powersave_mode = 1;
+ 			if (g_list_length(info.powersave->interrupts) > 0)
+ 				for_each_irq(info.powersave->interrupts, force_irq_migration, NULL);
+-		} else if (info.num_over) {
++		} else if ((info.num_over) && (info.num_powersave)) {
+ 			syslog(LOG_INFO, "Load average increasing, re-enabling all cpus for irq balancing\n");
+ 			for_each_object(cpus, clear_powersave_mode, NULL);
+ 		}
diff --git a/irqbalance.spec b/irqbalance.spec
index bb8c687..dc38fe7 100644
--- a/irqbalance.spec
+++ b/irqbalance.spec
@@ -1,6 +1,6 @@
 Name:           irqbalance
 Version:        1.0.3
-Release:        1%{?dist}
+Release:        2%{?dist}
 Epoch:          2
 Summary:        IRQ balancing daemon
 
@@ -20,12 +20,15 @@ Requires(preun):systemd-units
 
 ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64
 
+Patch0: irqbalance-bz781578-powerthresh-hysteresis.patch
+
 %description
 irqbalance is a daemon that evenly distributes IRQ load across
 multiple CPUs for enhanced performance.
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
 %{configure}
@@ -74,6 +77,9 @@ fi
 /sbin/chkconfig --del irqbalance >/dev/null 2>&1 || :
 
 %changelog
+* Mon Jan 16 2012 Neil Horman <nhorman at redhat.com> - 2:1.0.3-2
+- Fixed log spew on powerthresh re-enablement (bz 781578)
+
 * Fri Dec 02 2011 Neil Horman <nhorman at redhat.com> - 2:1.0.3-1
 - Update to latest upstream (bz 759547)
 


More information about the scm-commits mailing list