From 86bf46daa9debae603458c3c37baf5f64cf83f64 Mon Sep 17 00:00:00 2001 From: SuperSix173 Date: Sat, 17 Apr 2021 17:14:17 +0800 Subject: [PATCH] upgrade to v1.8.0 --- ...t-Add-hot-pull-method-for-irqbalance.patch | 115 ------ ...rt-Add-log-for-hotplug-appropriately.patch | 43 --- ...-fetch-node-info-for-non-PCI-devices.patch | 39 -- ...r-again-during-sleep-so-wait-until-t.patch | 28 -- ...te_mapping-activate-only-online-CPUs.patch | 56 --- ...ble-to-ban-cpus-using-cpulist-syntax.patch | 53 --- ...d-irq-hotplug-feature-for-irqbalance.patch | 352 ------------------ ...ctly-for-isolated-and-nohz_full-cpus.patch | 57 --- feature-add-the-switch-of-printing-log.patch | 4 +- irqbalance-1.7.0.tar.gz | Bin 54209 -> 0 bytes irqbalance-1.8.0.tar.gz | Bin 0 -> 55238 bytes irqbalance.spec | 44 ++- 12 files changed, 23 insertions(+), 768 deletions(-) delete mode 100644 backport-Add-hot-pull-method-for-irqbalance.patch delete mode 100644 backport-Add-log-for-hotplug-appropriately.patch delete mode 100644 backport-Also-fetch-node-info-for-non-PCI-devices.patch delete mode 100644 backport-Hotplug-may-occur-again-during-sleep-so-wait-until-t.patch delete mode 100644 backport-activate_mapping-activate-only-online-CPUs.patch delete mode 100644 backport-add-env-variable-to-ban-cpus-using-cpulist-syntax.patch delete mode 100644 backport-add-irq-hotplug-feature-for-irqbalance.patch delete mode 100644 backport-log-correctly-for-isolated-and-nohz_full-cpus.patch delete mode 100644 irqbalance-1.7.0.tar.gz create mode 100644 irqbalance-1.8.0.tar.gz diff --git a/backport-Add-hot-pull-method-for-irqbalance.patch b/backport-Add-hot-pull-method-for-irqbalance.patch deleted file mode 100644 index 2db673f..0000000 --- a/backport-Add-hot-pull-method-for-irqbalance.patch +++ /dev/null @@ -1,115 +0,0 @@ -From ef9bf64affbca0b030f9128d93f302296d166dac Mon Sep 17 00:00:00 2001 -From: hejingxian 00273181 -Date: Mon, 4 Jan 2021 12:34:02 +0800 -Subject: [PATCH] Add hot pull method for irqbalance - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/ef9bf64affbca0b030f9128d93f302296d166dac ---- - classify.c | 37 +++++++++++++++++++++++++++++++++++++ - irqbalance.h | 1 + - procinterrupts.c | 4 +++- - types.h | 1 + - 4 files changed, 42 insertions(+), 1 deletion(-) - -diff --git a/classify.c b/classify.c -index 4b6ffa8..beb2919 100644 ---- a/classify.c -+++ b/classify.c -@@ -852,3 +852,39 @@ void sort_irq_list(GList **list) - { - *list = g_list_sort(*list, sort_irqs); - } -+ -+static void remove_no_existing_irq(struct irq_info *info, void *data __attribute__((unused))) -+{ -+ GList *entry = NULL; -+ -+ if (info->existing) { -+ /* clear existing flag for next detection */ -+ info->existing = 0; -+ return; -+ } -+ -+ entry = g_list_find_custom(interrupts_db, info, compare_ints); -+ if (entry) -+ interrupts_db = g_list_delete_link(interrupts_db, entry); -+ -+ entry = g_list_find_custom(rebalance_irq_list, info, compare_ints); -+ if (entry) -+ rebalance_irq_list = g_list_delete_link(rebalance_irq_list, entry); -+ -+ if(info->assigned_obj) { -+ entry = g_list_find_custom(info->assigned_obj->interrupts, info, compare_ints); -+ if (entry) { -+ info->assigned_obj->interrupts = g_list_delete_link(info->assigned_obj->interrupts, entry); -+ } -+ } -+ log(TO_CONSOLE, LOG_INFO, "IRQ %d is removed from interrupts_db.\n", info->irq); -+ free_irq(info, NULL); -+} -+ -+void clear_no_existing_irqs(void) -+{ -+ for_each_irq(NULL, remove_no_existing_irq, NULL); -+ if (banned_irqs) { -+ for_each_irq(banned_irqs, remove_no_existing_irq, NULL); -+ } -+} -+ -diff --git a/irqbalance.h b/irqbalance.h -index d8e80a9..e7f6b94 100644 ---- a/irqbalance.h -+++ b/irqbalance.h -@@ -42,6 +42,7 @@ extern void set_interrupt_count(int number, uint64_t count); - extern void set_msi_interrupt_numa(int number); - extern void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq); - extern int proc_irq_hotplug(char *line, int irq, struct irq_info **pinfo); -+extern void clear_no_existing_irqs(void); - - extern GList *rebalance_irq_list; - extern void force_rebalance_irq(struct irq_info *info, void *data __attribute__((unused))); -diff --git a/procinterrupts.c b/procinterrupts.c -index 0671be0..854282f 100644 ---- a/procinterrupts.c -+++ b/procinterrupts.c -@@ -248,7 +248,6 @@ GList* collect_full_irq_list() - return tmp_list; - } - -- - void parse_proc_interrupts(void) - { - FILE *file; -@@ -310,6 +309,7 @@ void parse_proc_interrupts(void) - break; - } - } -+ info->existing = 1; - free(savedline); - - count = 0; -@@ -354,6 +354,8 @@ void parse_proc_interrupts(void) - */ - msi_found_in_sysfs = 1; - } -+ if (!need_rescan) -+ clear_no_existing_irqs(); - fclose(file); - free(line); - } -diff --git a/types.h b/types.h -index a01d649..9693cf4 100644 ---- a/types.h -+++ b/types.h -@@ -70,6 +70,7 @@ struct irq_info { - uint64_t last_irq_count; - uint64_t load; - int moved; -+ int existing; - struct topo_obj *assigned_obj; - char *name; - }; --- -2.23.0 - diff --git a/backport-Add-log-for-hotplug-appropriately.patch b/backport-Add-log-for-hotplug-appropriately.patch deleted file mode 100644 index d11c4eb..0000000 --- a/backport-Add-log-for-hotplug-appropriately.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 6ae114f8719a6a49cef73a32d820a77e900ddf08 Mon Sep 17 00:00:00 2001 -From: hejingxian 00273181 -Date: Thu, 17 Dec 2020 17:47:45 +0800 -Subject: [PATCH] Add log for hotplug appropriately - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/6ae114f8719a6a49cef73a32d820a77e900ddf08 ---- - classify.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/classify.c b/classify.c -index 0d556e9..4b6ffa8 100644 ---- a/classify.c -+++ b/classify.c -@@ -644,12 +644,13 @@ static void build_one_dev_entry(const char *dirname, GList *tmp_irqs, int build_ - irqnum = strtol(entry->d_name, NULL, 10); - /* If build_irq is valid, only add irq when it's number equals to build_irq */ - if (irqnum && ((build_irq < 0) || (irqnum == build_irq))) { -- printf("add irq:%d %d for %s\n", irqnum, build_irq, path); - hint.irq = irqnum; - hint.type = IRQ_TYPE_MSIX; - add_new_irq(devpath, &hint, tmp_irqs); -- if (build_irq >= 0) -+ if (build_irq >= 0) { -+ log(TO_CONSOLE, LOG_INFO, "Hotplug dev irq: %d finished.\n", irqnum); - break; -+ } - } - } while (entry != NULL); - closedir(msidir); -@@ -674,6 +675,8 @@ static void build_one_dev_entry(const char *dirname, GList *tmp_irqs, int build_ - hint.irq = irqnum; - hint.type = IRQ_TYPE_LEGACY; - add_new_irq(devpath, &hint, tmp_irqs); -+ if (build_irq >= 0) -+ log(TO_CONSOLE, LOG_INFO, "Hotplug dev irq: %d finished.\n", irqnum); - } - } - --- -2.23.0 - diff --git a/backport-Also-fetch-node-info-for-non-PCI-devices.patch b/backport-Also-fetch-node-info-for-non-PCI-devices.patch deleted file mode 100644 index b2c960f..0000000 --- a/backport-Also-fetch-node-info-for-non-PCI-devices.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 31dea01f3a47aa6374560638486879e5129f9c94 Mon Sep 17 00:00:00 2001 -From: Kairui Song -Date: Thu, 28 Jan 2021 15:24:32 +0800 -Subject: [PATCH] Also fetch node info for non-PCI devices - -non-PCI devices could also be bind to a certain node. So if failed to -fetch the info from sysfs, try to get it from /proc/irq//node. - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/31dea01f3a47aa6374560638486879e5129f9c94 ---- - classify.c | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/classify.c b/classify.c -index beb2919..105ecd6 100644 ---- a/classify.c -+++ b/classify.c -@@ -361,9 +361,14 @@ static struct irq_info *add_one_irq_to_db(const char *devpath, struct irq_info * - - get_numa_node: - numa_node = NUMA_NO_NODE; -- if (devpath != NULL && numa_avail) { -- sprintf(path, "%s/numa_node", devpath); -- process_one_line(path, get_int, &numa_node); -+ if (numa_avail) { -+ if (devpath != NULL) { -+ sprintf(path, "%s/numa_node", devpath); -+ process_one_line(path, get_int, &numa_node); -+ } else { -+ sprintf(path, "/proc/irq/%i/node", irq); -+ process_one_line(path, get_int, &numa_node); -+ } - } - - if (pol->numa_node_set == 1) --- -2.23.0 - diff --git a/backport-Hotplug-may-occur-again-during-sleep-so-wait-until-t.patch b/backport-Hotplug-may-occur-again-during-sleep-so-wait-until-t.patch deleted file mode 100644 index 5eced5a..0000000 --- a/backport-Hotplug-may-occur-again-during-sleep-so-wait-until-t.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 518d81cdd8c54c820d16afb73658753b46032676 Mon Sep 17 00:00:00 2001 -From: SuperSix173 -Date: Tue, 6 Apr 2021 10:26:17 +0800 -Subject: [PATCH] Hotplug may occur again during sleep, so wait until there is - no hotplug - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/518d81cdd8c54c820d16afb73658753b46032676 ---- - irqbalance.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/irqbalance.c b/irqbalance.c -index 458bb07..3f94847 100644 ---- a/irqbalance.c -+++ b/irqbalance.c -@@ -285,7 +285,7 @@ gboolean scan(gpointer data __attribute__((unused))) - - - /* cope with cpu hotplug -- detected during /proc/interrupts parsing */ -- if (need_rescan || need_rebuild) { -+ while (need_rescan || need_rebuild) { - int try_times = 0; - - need_rescan = 0; --- -2.23.0 - diff --git a/backport-activate_mapping-activate-only-online-CPUs.patch b/backport-activate_mapping-activate-only-online-CPUs.patch deleted file mode 100644 index 0a50f7e..0000000 --- a/backport-activate_mapping-activate-only-online-CPUs.patch +++ /dev/null @@ -1,56 +0,0 @@ -From c8757c6d870c4788da4980abaf21cb7369702ee9 Mon Sep 17 00:00:00 2001 -From: Paride Legovini -Date: Tue, 25 Aug 2020 23:18:27 +0200 -Subject: [PATCH] activate_mapping: activate only online CPUs - -When echoing a mask to /proc/irq/N/smp_affinity make sure to activate -only CPUs which are online. Activating a CPU which is not online results -in a EOVERFLOW. - -Originally fixed in Debian by Helge Deller . - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/c8757c6d870c4788da4980abaf21cb7369702ee9 ---- - activate.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/activate.c b/activate.c -index 065f880..62cfd08 100644 ---- a/activate.c -+++ b/activate.c -@@ -49,6 +49,7 @@ static void activate_mapping(struct irq_info *info, void *data __attribute__((un - char buf[PATH_MAX]; - FILE *file; - int ret = 0; -+ cpumask_t applied_mask; - - /* - * only activate mappings for irqs that have moved -@@ -59,10 +60,13 @@ static void activate_mapping(struct irq_info *info, void *data __attribute__((un - if (!info->assigned_obj) - return; - -+ /* activate only online cpus, otherwise writing to procfs returns EOVERFLOW */ -+ cpus_and(applied_mask, cpu_online_map, info->assigned_obj->mask); -+ - /* - * Don't activate anything for which we have an invalid mask - */ -- if (check_affinity(info, info->assigned_obj->mask)) -+ if (check_affinity(info, applied_mask)) - return; - - sprintf(buf, "/proc/irq/%i/smp_affinity", info->irq); -@@ -70,7 +74,7 @@ static void activate_mapping(struct irq_info *info, void *data __attribute__((un - if (!file) - return; - -- cpumask_scnprintf(buf, PATH_MAX, info->assigned_obj->mask); -+ cpumask_scnprintf(buf, PATH_MAX, applied_mask); - ret = fprintf(file, "%s", buf); - if (ret < 0) { - log(TO_ALL, LOG_WARNING, "cannot change irq %i's affinity, add it to banned list", info->irq); --- -2.23.0 - diff --git a/backport-add-env-variable-to-ban-cpus-using-cpulist-syntax.patch b/backport-add-env-variable-to-ban-cpus-using-cpulist-syntax.patch deleted file mode 100644 index 477298c..0000000 --- a/backport-add-env-variable-to-ban-cpus-using-cpulist-syntax.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 677b686e223c74e64f5b230bdb4079555a5a62a9 Mon Sep 17 00:00:00 2001 -From: ChanderG -Date: Tue, 25 Aug 2020 15:46:56 +0530 -Subject: [PATCH] add env variable to ban cpus using cpulist syntax - -allows banning of cpus using the taskset cpulist syntax in addition to the -bitmap syntax supported via the existing environment variable -IRQBALANCE_BANNED_CPUS - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/677b686e223c74e64f5b230bdb4079555a5a62a9 ---- - cputree.c | 6 ++++++ - irqbalance.1 | 6 ++++++ - 2 files changed, 12 insertions(+) - -diff --git a/cputree.c b/cputree.c -index 0433657..00cf47f 100644 ---- a/cputree.c -+++ b/cputree.c -@@ -127,6 +127,12 @@ static void setup_banned_cpus(void) - goto out; - } - -+ env = getenv("IRQBALANCE_BANNED_CPULIST"); -+ if (env && strlen(env)) { -+ cpulist_parse(env, strlen(env), banned_cpus); -+ goto out; -+ } -+ - path = "/sys/devices/system/cpu/isolated"; - process_one_line(path, get_mask_from_cpulist, &isolated_cpus); - -diff --git a/irqbalance.1 b/irqbalance.1 -index 3005f6b..33ffd26 100644 ---- a/irqbalance.1 -+++ b/irqbalance.1 -@@ -158,6 +158,12 @@ Provides a mask of CPUs which irqbalance should ignore and never assign interrup - If not specified, irqbalance use mask of isolated and adaptive-ticks CPUs on the - system as the default value. - -+.TP -+.B IRQBALANCE_BANNED_CPULIST -+Provides a cpulist which irqbalance should ignore and never assign interrupts to. -+If not specified, irqbalance use mask of isolated and adaptive-ticks CPUs on the -+system as the default value. -+ - .SH "SIGNALS" - .TP - .B SIGHUP --- -2.23.0 - diff --git a/backport-add-irq-hotplug-feature-for-irqbalance.patch b/backport-add-irq-hotplug-feature-for-irqbalance.patch deleted file mode 100644 index d96b536..0000000 --- a/backport-add-irq-hotplug-feature-for-irqbalance.patch +++ /dev/null @@ -1,352 +0,0 @@ -From 0ba4a60a2a732150e5016389e32b2e81906a72c2 Mon Sep 17 00:00:00 2001 -From: hejingxian 00273181 -Date: Fri, 4 Dec 2020 10:52:57 +0800 -Subject: [PATCH] add irq hotplug feature for irqbalance - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/0ba4a60a2a732150e5016389e32b2e81906a72c2 ---- - classify.c | 70 +++++++++++++++++++++++-------- - irqbalance.c | 2 +- - irqbalance.h | 4 +- - procinterrupts.c | 104 ++++++++++++++++++++++++++++------------------- - 4 files changed, 120 insertions(+), 60 deletions(-) - -diff --git a/classify.c b/classify.c -index 9f588bc..0d556e9 100644 ---- a/classify.c -+++ b/classify.c -@@ -619,7 +619,7 @@ static void add_new_irq(char *path, struct irq_info *hint, GList *proc_interrupt - /* - * Figures out which interrupt(s) relate to the device we"re looking at in dirname - */ --static void build_one_dev_entry(const char *dirname, GList *tmp_irqs) -+static void build_one_dev_entry(const char *dirname, GList *tmp_irqs, int build_irq) - { - struct dirent *entry; - DIR *msidir; -@@ -642,10 +642,14 @@ static void build_one_dev_entry(const char *dirname, GList *tmp_irqs) - if (!entry) - break; - irqnum = strtol(entry->d_name, NULL, 10); -- if (irqnum) { -+ /* If build_irq is valid, only add irq when it's number equals to build_irq */ -+ if (irqnum && ((build_irq < 0) || (irqnum == build_irq))) { -+ printf("add irq:%d %d for %s\n", irqnum, build_irq, path); - hint.irq = irqnum; - hint.type = IRQ_TYPE_MSIX; - add_new_irq(devpath, &hint, tmp_irqs); -+ if (build_irq >= 0) -+ break; - } - } while (entry != NULL); - closedir(msidir); -@@ -665,9 +669,12 @@ static void build_one_dev_entry(const char *dirname, GList *tmp_irqs) - #else - if (irqnum) { - #endif -- hint.irq = irqnum; -- hint.type = IRQ_TYPE_LEGACY; -- add_new_irq(devpath, &hint, tmp_irqs); -+ /* If build_irq is valid, only add irq when it's number equals to build_irq */ -+ if ((build_irq < 0) || (irqnum == build_irq)) { -+ hint.irq = irqnum; -+ hint.type = IRQ_TYPE_LEGACY; -+ add_new_irq(devpath, &hint, tmp_irqs); -+ } - } - - done: -@@ -712,31 +719,60 @@ static void free_tmp_irqs(gpointer data) - free(info); - } - --void rebuild_irq_db(void) -+static struct irq_info * build_dev_irqs(GList *tmp_irqs, int build_irq) - { - DIR *devdir; - struct dirent *entry; -- GList *tmp_irqs = NULL; -- -- free_irq_db(); -- -- tmp_irqs = collect_full_irq_list(); -+ struct irq_info *new_irq = NULL; - - devdir = opendir(SYSPCI_DIR); -- - if (devdir) { - do { - entry = readdir(devdir); -- - if (!entry) - break; -- -- build_one_dev_entry(entry->d_name, tmp_irqs); -- -+ /* when hotplug irqs, we add one irq at one time */ -+ build_one_dev_entry(entry->d_name, tmp_irqs, build_irq); -+ if (build_irq >= 0) { -+ new_irq = get_irq_info(build_irq); -+ if (new_irq) -+ break; -+ } - } while (entry != NULL); -- - closedir(devdir); - } -+ return new_irq; -+} -+ -+int proc_irq_hotplug(char *savedline, int irq, struct irq_info **pinfo) -+{ -+ struct irq_info tmp_info = {0}; -+ -+ /* firstly, init irq info by read device info */ -+ *pinfo = build_dev_irqs(interrupts_db, irq); -+ if (*pinfo == NULL) { -+ /* secondly, init irq info by parse savedline */ -+ init_irq_class_and_type(savedline, &tmp_info, irq); -+ add_new_irq(NULL, &tmp_info, interrupts_db); -+ *pinfo = get_irq_info(irq); -+ } -+ if (*pinfo == NULL) { -+ return -1; -+ } -+ -+ force_rebalance_irq(*pinfo, NULL); -+ return 0; -+} -+ -+void rebuild_irq_db(void) -+{ -+ GList *tmp_irqs = NULL; -+ -+ free_irq_db(); -+ -+ tmp_irqs = collect_full_irq_list(); -+ -+ build_dev_irqs(tmp_irqs, -1); - - for_each_irq(tmp_irqs, add_missing_irq, interrupts_db); - -diff --git a/irqbalance.c b/irqbalance.c -index eaa0ce1..9baa955 100644 ---- a/irqbalance.c -+++ b/irqbalance.c -@@ -249,7 +249,7 @@ static void dump_object_tree(void) - for_each_object(numa_nodes, dump_numa_node_info, NULL); - } - --static void force_rebalance_irq(struct irq_info *info, void *data __attribute__((unused))) -+void force_rebalance_irq(struct irq_info *info, void *data __attribute__((unused))) - { - if (info->level == BALANCE_NONE) - return; -diff --git a/irqbalance.h b/irqbalance.h -index acf0ed5..d8e80a9 100644 ---- a/irqbalance.h -+++ b/irqbalance.h -@@ -40,8 +40,11 @@ extern GList* collect_full_irq_list(); - extern void parse_proc_stat(void); - extern void set_interrupt_count(int number, uint64_t count); - extern void set_msi_interrupt_numa(int number); -+extern void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq); -+extern int proc_irq_hotplug(char *line, int irq, struct irq_info **pinfo); - - extern GList *rebalance_irq_list; -+extern void force_rebalance_irq(struct irq_info *info, void *data __attribute__((unused))); - - void update_migration_status(void); - void dump_workloads(void); -@@ -52,7 +55,6 @@ void dump_tree(void); - void activate_mappings(void); - void clear_cpu_tree(void); - void free_cpu_topo(gpointer data); -- - /*===================NEW BALANCER FUNCTIONS============================*/ - - /* -diff --git a/procinterrupts.c b/procinterrupts.c -index 858b66b..0671be0 100644 ---- a/procinterrupts.c -+++ b/procinterrupts.c -@@ -145,16 +145,59 @@ static void guess_arm_irq_hints(char *name, struct irq_info *info) - } - #endif - -+void init_irq_class_and_type(char *savedline, struct irq_info *info, int irq) -+{ -+ char *irq_name = NULL; -+ char *irq_mod = NULL; -+ char *savedptr = NULL; -+ char *last_token = NULL; -+ char *p = NULL; -+ int is_xen_dyn = 0; -+#ifdef AARCH64 -+ char *tmp = NULL; -+#endif -+ -+ irq_name = strtok_r(savedline, " ", &savedptr); -+ if (strstr(irq_name, "xen-dyn") != NULL) -+ is_xen_dyn = 1; -+ last_token = strtok_r(NULL, " ", &savedptr); -+ while ((p = strtok_r(NULL, " ", &savedptr))) { -+ irq_name = last_token; -+ if (strstr(irq_name, "xen-dyn") != NULL) -+ is_xen_dyn = 1; -+ last_token = p; -+ } -+ -+#ifdef AARCH64 -+ irq_name = last_token; -+ tmp = strchr(irq_name, '\n'); -+ if (tmp) -+ *tmp = 0; -+#endif -+ irq_mod = last_token; -+ info->irq = irq; -+ -+ if (strstr(irq_name, "-event") != NULL && is_xen_dyn == 1) { -+ info->type = IRQ_TYPE_VIRT_EVENT; -+ info->class = IRQ_VIRT_EVENT; -+ } else { -+#ifdef AARCH64 -+ guess_arm_irq_hints(irq_name, info); -+#else -+ info->type = IRQ_TYPE_LEGACY; -+ info->class = IRQ_OTHER; -+#endif -+ } -+ info->numa_node = get_numa_node(0); -+ info->name = strdup(irq_mod); -+} -+ - GList* collect_full_irq_list() - { - GList *tmp_list = NULL; - FILE *file; - char *line = NULL; - size_t size = 0; -- char *irq_name, *irq_mod, *savedptr, *last_token, *p; --#ifdef AARCH64 -- char *tmp; --#endif - - file = fopen("/proc/interrupts", "r"); - if (!file) -@@ -169,7 +212,6 @@ GList* collect_full_irq_list() - - while (!feof(file)) { - int number; -- int is_xen_dyn = 0; - struct irq_info *info; - char *c; - char *savedline = NULL; -@@ -191,44 +233,12 @@ GList* collect_full_irq_list() - savedline = strdup(line); - if (!savedline) - break; -- irq_name = strtok_r(savedline, " ", &savedptr); -- if (strstr(irq_name, "xen-dyn") != NULL) -- is_xen_dyn = 1; -- last_token = strtok_r(NULL, " ", &savedptr); -- while ((p = strtok_r(NULL, " ", &savedptr))) { -- irq_name = last_token; -- if (strstr(irq_name, "xen-dyn") != NULL) -- is_xen_dyn = 1; -- last_token = p; -- } -- --#ifdef AARCH64 -- /* Of course the formatting for /proc/interrupts is different on different arches */ -- irq_name = last_token; -- tmp = strchr(irq_name, '\n'); -- if (tmp) -- *tmp = 0; --#endif -- irq_mod = last_token; -- - *c = 0; - number = strtoul(line, NULL, 10); - - info = calloc(1, sizeof(struct irq_info)); - if (info) { -- info->irq = number; -- if (strstr(irq_name, "-event") != NULL && is_xen_dyn == 1) { -- info->type = IRQ_TYPE_VIRT_EVENT; -- info->class = IRQ_VIRT_EVENT; -- } else { --#ifdef AARCH64 -- guess_arm_irq_hints(irq_name, info); --#else -- info->type = IRQ_TYPE_LEGACY; -- info->class = IRQ_OTHER; --#endif -- } -- info->name = strdup(irq_mod); -+ init_irq_class_and_type(savedline, info, number); - tmp_list = g_list_append(tmp_list, info); - } - free(savedline); -@@ -238,11 +248,13 @@ GList* collect_full_irq_list() - return tmp_list; - } - -+ - void parse_proc_interrupts(void) - { - FILE *file; - char *line = NULL; - size_t size = 0; -+ int ret; - - file = fopen("/proc/interrupts", "r"); - if (!file) -@@ -261,6 +273,7 @@ void parse_proc_interrupts(void) - uint64_t count; - char *c, *c2; - struct irq_info *info; -+ char *savedline = NULL; - - if (getline(&line, &size, file)<=0) - break; -@@ -280,15 +293,24 @@ void parse_proc_interrupts(void) - if (!c) - continue; - -+ savedline = strdup(line); -+ if (!savedline) -+ break; - *c = 0; - c++; - number = strtoul(line, NULL, 10); - - info = get_irq_info(number); - if (!info) { -- need_rescan = 1; -- break; -+ ret = proc_irq_hotplug(savedline, number, &info); -+ if (ret < 0) { -+ /* hotplug fail, need to rescan */ -+ need_rescan = 1; -+ free(savedline); -+ break; -+ } - } -+ free(savedline); - - count = 0; - cpunr = 0; -@@ -316,7 +338,7 @@ void parse_proc_interrupts(void) - break; - } - -- info->last_irq_count = info->irq_count; -+ info->last_irq_count = info->irq_count; - info->irq_count = count; - - /* is interrupt MSI based? */ --- -2.23.0 - diff --git a/backport-log-correctly-for-isolated-and-nohz_full-cpus.patch b/backport-log-correctly-for-isolated-and-nohz_full-cpus.patch deleted file mode 100644 index 4dc95b9..0000000 --- a/backport-log-correctly-for-isolated-and-nohz_full-cpus.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 6fe032945b69d8f382fa3e8de8e4fdce84063199 Mon Sep 17 00:00:00 2001 -From: Yunfeng Ye -Date: Fri, 20 Nov 2020 00:15:58 +0800 -Subject: [PATCH] log correctly for isolated and nohz_full cpus - -When the banded CPU is configured, and the "isolcpus" or "nohz_full" -is configured, the log for isolated and nohz CPUs are not correct. - -So only log relevant infomation when isolcpus and nohz_full has been -handled, also put the cpus_clear() closer. - -Conflict:NA -Reference:https://github.com/Irqbalance/irqbalance/commit/6fe032945b69d8f382fa3e8de8e4fdce84063199 ---- - cputree.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/cputree.c b/cputree.c -index 80a6d9d..eed20db 100644 ---- a/cputree.c -+++ b/cputree.c -@@ -112,9 +112,6 @@ static void setup_banned_cpus(void) - cpumask_t isolated_cpus; - char *env = NULL; - -- cpus_clear(isolated_cpus); -- cpus_clear(nohz_full); -- - /* A manually specified cpumask overrides auto-detection. */ - if (cpu_ban_string != NULL && banned_cpumask_from_ui != NULL) { - cpulist_parse(banned_cpumask_from_ui, -@@ -133,6 +130,9 @@ static void setup_banned_cpus(void) - goto out; - } - -+ cpus_clear(isolated_cpus); -+ cpus_clear(nohz_full); -+ - path = "/sys/devices/system/cpu/isolated"; - process_one_line(path, get_mask_from_cpulist, &isolated_cpus); - -@@ -141,11 +141,11 @@ static void setup_banned_cpus(void) - - cpus_or(banned_cpus, nohz_full, isolated_cpus); - --out: - cpumask_scnprintf(buffer, 4096, isolated_cpus); - log(TO_CONSOLE, LOG_INFO, "Isolated CPUs: %s\n", buffer); - cpumask_scnprintf(buffer, 4096, nohz_full); - log(TO_CONSOLE, LOG_INFO, "Adaptive-ticks CPUs: %s\n", buffer); -+out: - cpumask_scnprintf(buffer, 4096, banned_cpus); - log(TO_CONSOLE, LOG_INFO, "Banned CPUs: %s\n", buffer); - } --- -2.23.0 - diff --git a/feature-add-the-switch-of-printing-log.patch b/feature-add-the-switch-of-printing-log.patch index 4adc264..00e7305 100644 --- a/feature-add-the-switch-of-printing-log.patch +++ b/feature-add-the-switch-of-printing-log.patch @@ -17,8 +17,8 @@ index 010e672..48d3d0d 100644 indent[i] = log_indent[0]; indent[i] = '\0'; -- log(TO_CONSOLE, LOG_INFO, "%sInterrupt %i node_num is %d (%s/%lu:%lu) \n", indent, -+ log(TO_ALL, LOG_INFO, "%sInterrupt %i node_num is %d (%s/%lu:%lu) \n", indent, +- log(TO_CONSOLE, LOG_INFO, "%sInterrupt %i node_num is %d (%s/%" PRIu64 ":%" PRIu64 ") \n", indent, ++ log(TO_ALL, LOG_INFO, "%sInterrupt %i node_num is %d (%s/%" PRIu64 ":%" PRIu64 ") \n", indent, info->irq, irq_numa_node(info)->number, classes[info->class], info->load, (info->irq_count - info->last_irq_count)); free(indent); } diff --git a/irqbalance-1.7.0.tar.gz b/irqbalance-1.7.0.tar.gz deleted file mode 100644 index b1bc34c6dd75a547310f87ef71340f5b6d967399..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54209 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 diff --git a/irqbalance-1.8.0.tar.gz b/irqbalance-1.8.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..a72b1c3685d2e98c2363cb20bfd2943072bcf466 GIT binary patch literal 55238 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�#!o*`xyI3}PIJHUVh?&o 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 n+wxer`XvpWDx$^ZEY+)ps^}0GI;+FFzmM literal 0 HcmV?d00001 diff --git a/irqbalance.spec b/irqbalance.spec index 4a6638e..64833bc 100644 --- a/irqbalance.spec +++ b/irqbalance.spec @@ -1,38 +1,28 @@ -Summary: A dynamic adaptive IRQ balancing daemon -Name: irqbalance -Version: 1.7.0 -Release: 5 -Epoch: 3 -License: GPLv2 -Source0: https://github.com/Irqbalance/irqbalance/archive/v%{version}.tar.gz#/irqbalance-%{version}.tar.gz +Summary: A dynamic adaptive IRQ balancing daemon +Name: irqbalance +Version: 1.8.0 +Release: 1 +Epoch: 3 +License: GPLv2 +Source0: https://github.com/Irqbalance/irqbalance/archive/v%{version}.tar.gz#/irqbalance-%{version}.tar.gz Source1: irqbalance.service Source2: irqbalance.sysconfig Source3: irqbalance.rules Source4: irq_balancer -Url: https://github.com/irqbalance/irqbalance +Url: https://github.com/irqbalance/irqbalance -BuildRequires: autoconf automake libtool libcap-ng systemd -BuildRequires: glib2-devel pkgconf libcap-ng-devel ncurses-devel +BuildRequires: autoconf automake libtool libcap-ng systemd +BuildRequires: glib2-devel pkgconf libcap-ng-devel ncurses-devel Requires: ncurses-libs %ifnarch %{arm} -BuildRequires: numactl-devel -Requires: numactl-libs +BuildRequires: numactl-devel +Requires: numactl-libs %endif %define _hardened_build 1 - -Patch6000: backport-add-env-variable-to-ban-cpus-using-cpulist-syntax.patch -Patch6001: backport-activate_mapping-activate-only-online-CPUs.patch -Patch6002: backport-log-correctly-for-isolated-and-nohz_full-cpus.patch -Patch6003: backport-add-irq-hotplug-feature-for-irqbalance.patch -Patch6004: backport-Add-log-for-hotplug-appropriately.patch -Patch6005: backport-Add-hot-pull-method-for-irqbalance.patch -Patch6006: backport-Also-fetch-node-info-for-non-PCI-devices.patch -Patch6007: backport-Hotplug-may-occur-again-during-sleep-so-wait-until-t.patch - Patch9000: feature-aarch64-add-the-regular-to-get-the-correct-i.patch Patch9001: feature-add-new-user-irq-policy-config-rule.patch Patch9002: feature-add-the-switch-of-printing-log.patch @@ -83,7 +73,8 @@ cd - install -D -p -m 0755 %{name} %{buildroot}%{_sbindir}/%{name} install -D -p -m 0644 %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name} -install -D -p -m 0755 %{SOURCE3} %{buildroot}%{_sbindir}/irq_balancer +install -D -p -m 0755 %{SOURCE3} %{buildroot}%{_sysconfdir}/sysconfig/%{name}.rules +install -D -p -m 0755 %{SOURCE4} %{buildroot}%{_sbindir}/irq_balancer install -D -p -m 0755 ui/irqbalance_client.h %{buildroot}/%{_includedir}/irqbalance_client.h install -D -p -m 0755 ui/libirqbalance_client.so %{buildroot}/%{_libdir}/libirqbalance_client.so @@ -99,6 +90,7 @@ make check %{_sbindir}/%{name} %{_unitdir}/%{name}.service %config(noreplace) %{_sysconfdir}/sysconfig/%{name} +%{_sysconfdir}/sysconfig/%{name}.rules %{_sbindir}/irq_balancer %files devel @@ -126,6 +118,12 @@ fi /sbin/chkconfig --del %{name} >/dev/null 2>&1 || : %changelog +* Sat Apr 17 2021 Liu Chao - 3:1.8.0-1 +- Type:enhanced +- ID:NA +- SUG:restart +- DESC:upgrade to v1.8.0 + * Fri Apr 9 2021 Liu Chao - 3:1.7.0-5 - Type:enhanced - ID:NA