Skip to content
GitLab
    • Why GitLab
    • Pricing
    • Contact Sales
    • Explore
  • Why GitLab
  • Pricing
  • Contact Sales
  • Explore
  • Sign in
  • Get free trial
  • vsock
  • vsock
  • Issues
  • #1

Improve fairness in virtio transports

This BZ 2009935 highlighted a fairness issue in the Linux kernel when virtio-vsock and vhost-vsock are used.

The driver/device is only unfair between directly managed sockets (sockets that communicate with the same VM). There is no interference with sockets of other VMs and therefore managed by other drivers/devices.

Currently in both transports there is a single worker sending packets to the other peer and a single list where sockets enqueue packets to send.

If a socket queues a lot of small packets, it may delay other sockets a lot. The credit mechanism does not prevent this problem.

One solution might be to have a list of ready packets for each socket and a single list of ready sockets that the worker scrolls through, sending a maximum number of packets before moving on to the next ready socket. Unfortunately an application could create a lot of sockets to get around this mechanism, so it's worth taking a closer look at how TCP handles this problem. Maybe using skbuff also in vsock and reusing the same code.

Edited Mar 07, 2022 by Stefano Garzarella
Assignee
Assign to
Time tracking