80 lines
2.6 KiB
Diff
80 lines
2.6 KiB
Diff
From f04d6488c12e215e2302b44c77bf66fce4950aef Mon Sep 17 00:00:00 2001
|
|
From: liuchao <liuchao173@huawei.com>
|
|
Date: Thu, 5 Dec 2019 15:28:14 +0800
|
|
Subject: [PATCH] fix sleep interval when sleep_interval is changed by
|
|
socket
|
|
|
|
currently, in scan, irqbalance compare sleep_interval's address to decide if sleep_interval is changed, accutually this judgement is always false now.
|
|
|
|
Signed-off-by: liuchao <liuchao173@huawei.com>
|
|
---
|
|
hint_verify.c | 10 ++++++----
|
|
irqbalance.c | 5 +++--
|
|
2 files changed, 9 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/hint_verify.c b/hint_verify.c
|
|
index b3175ae..0718078 100644
|
|
--- a/hint_verify.c
|
|
+++ b/hint_verify.c
|
|
@@ -15,6 +15,7 @@
|
|
extern int keep_going;
|
|
extern GMainLoop *main_loop;
|
|
extern gboolean scan();
|
|
+extern int last_interval;
|
|
|
|
int real_sleep_interval;
|
|
int sleep_interval_count;
|
|
diff --git a/hint_verify.c b/hint_verify.c
|
|
index b3175ae..4258557 100644
|
|
--- a/hint_verify.c
|
|
+++ b/hint_verify.c
|
|
@@ -84,7 +84,7 @@ void update_affinity_hint(struct irq_info *info, void *data __attribute__((unuse
|
|
* 1. scan opration for irq balancing;
|
|
* 2. poll irq affinity hint changes for quickly applying them.
|
|
*/
|
|
-gboolean poll_hint_affinity_and_scan(gpointer data)
|
|
+gboolean poll_hint_affinity_and_scan(gpointer data __attribute__((unused)))
|
|
{
|
|
gboolean need_verify_flag = FALSE;
|
|
gboolean need_scan_flag = FALSE;
|
|
@@ -118,9 +118,10 @@ gboolean poll_hint_affinity_and_scan(gpointer data)
|
|
}
|
|
}
|
|
|
|
- if (data != &real_sleep_interval) {
|
|
- data = &real_sleep_interval;
|
|
- g_timeout_add_seconds(real_sleep_interval, poll_hint_affinity_and_scan, data);
|
|
+ update_interval_and_count();
|
|
+ if (last_interval != real_sleep_interval) {
|
|
+ last_interval = real_sleep_interval;
|
|
+ g_timeout_add_seconds(real_sleep_interval, poll_hint_affinity_and_scan, NULL);
|
|
return FALSE;
|
|
}
|
|
|
|
diff --git a/irqbalance.c b/irqbalance.c
|
|
index 3fc00db..05eaa29 100644
|
|
--- a/irqbalance.c
|
|
+++ b/irqbalance.c
|
|
@@ -67,6 +67,7 @@ long HZ;
|
|
int sleep_interval = SLEEP_INTERVAL;
|
|
int hint_enabled = 0;
|
|
int poll_hint_interval = SLEEP_INTERVAL / 5;
|
|
+int last_interval;
|
|
GMainLoop *main_loop;
|
|
|
|
char *banned_cpumask_from_ui = NULL;
|
|
@@ -641,8 +642,8 @@ int main(int argc, char** argv)
|
|
log(TO_ALL, LOG_INFO, "irqbalance start scan.\n");
|
|
update_interval_and_count();
|
|
main_loop = g_main_loop_new(NULL, FALSE);
|
|
- int *last_interval = &real_sleep_interval;
|
|
- g_timeout_add_seconds(real_sleep_interval, poll_hint_affinity_and_scan, last_interval);
|
|
+ last_interval = real_sleep_interval;
|
|
+ g_timeout_add_seconds(real_sleep_interval, poll_hint_affinity_and_scan, NULL);
|
|
g_main_loop_run(main_loop);
|
|
|
|
g_main_loop_quit(main_loop);
|
|
--
|
|
2.19.1
|
|
|