On Tue, Oct 01, 2019 at 10:25:00AM +0300, Denis Plotnikov wrote:
> Some linux kernels has a performance flaw in virtio block device access.
> On some frequent disk access patterns, e.g. 1M read, the kernel produces
> more block requests than needed. This happens because of virtio seg_max
> parameter set to 126 (virtqueue_size - 2) which limits the maximum block
> request to 516096 (126 * 4096_PAGE_SIZE).
> 
> Setting seg_max > 126 fixes the issue, however, not all linux kernels
> allow that. The old ones have a restriction virtqueue_size >= seg_max.
> This restriction is hardcoded and the kernel crashes in case of violation.
> The restriction is relaxed in the recent kernels. Windows kernels don't
> have such a restriction.
> 
> To increse seg_max and not to break the restriction, one can increase the
> virtqueue size to 256 and seg_max to 254. To do that, seabios support of
> 256 virtqueue size is needed.

--verbose please.  Do you talk about guest kernels?  Or host kernels?
Why does changing seabios fix the kernel bug?  Is this just a
performance issue (first paragraph sounds like it is, and that would not
be that much of a problem IMO given that virtio-blk isn't tweaked for
performance anyway)?  Or something more serious?

cheers,
  Gerd
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to