On 18 April 2017 at 17:19, Jiahuan Zhang <[email protected]> wrote: > Dear QEMU developers, > I am measuring the processor time for guest-host communication via socket. > The guest app is to write a 5M image to a serial device. > The serial deivce is redirected to the socket in the command line. > The host app is to receive the data via socket until the peer closes the > connection. > Please find in the attachment the Processor time graph generated by Windows > Performance Monitor. > > The graph shows the processor time is almost 100% while communicating. > Surprising me! My expectation is 1%. > > I wonder if this is the right performance for QEMU socket communciation? Or > this high processor time is caused by the serial device? If so, any > optimization I can do?
The serial device on the vexpress-a9 model is a PL011, which is a fairly simple UART which all data must be written to byte-at-a-time. This is never going to be fast, because we have to execute a lot of guest code to send the data through this byte-at-a-time bottleneck, and since you're running a purely emulated QEMU, executing guest code means doing a lot of CPU operations. You will likely get better throughput if you use the 'virt' board where you can use the virtio-serial device which can send data more efficiently. thanks -- PMM
