解決 : QEMU 突然死を追う

virtio-net ドライバで状態を保持している lastUsedIndexRead_ の型が int ではなく uint16_t であるべきだった。
virtio 内部では used->idx は uint16_t で保持されているので、idx が 16bit を超えると 0 に戻る。このタイミングで異常な受信をしているのが原因。


これにより 20 並列 30000 リクエストくらいはさばけるようになった。
残る問題は

  • QEMU 起動直後にアクセスがあると死ぬ
  • send の ring が足りていなくてボトルネックになっている