Re: [Patch v2] Storvsc: Select channel based on available percentage of ring buffer to write

From: Stephen Hemminger
Date: Fri Apr 20 2018 - 11:50:54 EST


On Thu, 19 Apr 2018 14:54:24 -0700
Long Li <longli@xxxxxxxxxxxxxxxxx> wrote:

> From: Long Li <longli@xxxxxxxxxxxxx>
>
> This is a best effort for estimating on how busy the ring buffer is for
> that channel, based on available buffer to write in percentage. It is still
> possible that at the time of actual ring buffer write, the space may not be
> available due to other processes may be writing at the time.
>
> Selecting a channel based on how full it is can reduce the possibility that
> a ring buffer write will fail, and avoid the situation a channel is over
> busy.
>
> Now it's possible that storvsc can use a smaller ring buffer size
> (e.g. 40k bytes) to take advantage of cache locality.
>
> Changes.
> v2: Pre-allocate struct cpumask on the heap.
> Struct cpumask is a big structure (1k bytes) when CONFIG_NR_CPUS=8192 (default
> value when CONFIG_MAXSMP=y). Don't use kernel stack for it by pre-allocating
> them using kmalloc when channels are first initialized.
>
> Signed-off-by: Long Li <longli@xxxxxxxxxxxxx>

Reviewed-by: Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>