Thanks, Neil I created a pull request. https://github.com/Irqbalance/irqbalance/pull/81 Xiao Liang On 10/18/18 7:34 PM, Neil Horman wrote: > On Thu, Oct 18, 2018 at 11:39:01AM +0800, Xiao Liang wrote: >> In current /proc/interrupts, the 'xen-dyn-event' was split to 'xen-dyn -event'. >> It causes interrupts not balanced inside xen guest. >> >> Below result is without this patch: >> 70: 29 0 0 0 xen-dyn -event vif0-q0-tx >> 71: 120 0 0 0 xen-dyn -event vif0-q0-rx >> 72: 586350 0 0 0 xen-dyn -event vif0-q1-tx >> 73: 44 0 0 0 xen-dyn -event vif0-q1-rx >> 74: 19 0 0 0 xen-dyn -event vif0-q2-tx >> 75: 179 0 0 0 xen-dyn -event vif0-q2-rx >> 76: 67 0 0 0 xen-dyn -event vif0-q3-tx >> 77: 299637 0 0 0 xen-dyn -event vif0-q3-rx >> >> Below result is with this patch: >> [root at dhcp-3-194 ~]# grep vif0 /proc/interrupts >> 70: 30 0 0 0 xen-dyn -event vif0-q0-tx >> 71: 305 0 11 0 xen-dyn -event vif0-q0-rx >> 72: 586354 0 27 0 xen-dyn -event vif0-q1-tx >> 73: 49 7 5 0 xen-dyn -event vif0-q1-rx >> 74: 27 0 0 509373 xen-dyn -event vif0-q2-tx >> 75: 420 0 5 0 xen-dyn -event vif0-q2-rx >> 76: 179 0 38 0 xen-dyn -event vif0-q3-tx >> 77: 299803 281433 0 0 xen-dyn -event vif0-q3-rx >> >> Signed-off-by: Xiao Liang <xiliang at redhat.com> > This looks reasonable, but we don't actually use this email list anymore, can > you please open a pull request here: > > https://github.com/Irqbalance/irqbalance > > Thanks > Neil > >> --- >> procinterrupts.c | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/procinterrupts.c b/procinterrupts.c >> index 7283998..2c8118a 100644 >> --- a/procinterrupts.c >> +++ b/procinterrupts.c >> @@ -168,6 +168,7 @@ GList* collect_full_irq_list() >> >> while (!feof(file)) { >> int number; >> + int is_xen_dyn = 0; >> struct irq_info *info; >> char *c; >> char *savedline = NULL; >> @@ -188,9 +189,13 @@ GList* collect_full_irq_list() >> >> savedline = strdup(line); >> 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; >> } >> >> @@ -210,7 +215,7 @@ GList* collect_full_irq_list() >> info = calloc(sizeof(struct irq_info), 1); >> if (info) { >> info->irq = number; >> - if (strstr(irq_name, "xen-dyn-event") != NULL) { >> + if (strstr(irq_name, "-event") != NULL && is_xen_dyn == 1) { >> info->type = IRQ_TYPE_VIRT_EVENT; >> info->class = IRQ_VIRT_EVENT; >> } else { >> -- >> 2.17.2 >> >> >> _______________________________________________ >> irqbalance mailing list >> irqbalance at lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/irqbalance >>