[PATCH] procinterrupts: check xen-dyn-event more flexible

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
> 



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux