diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2011-04-01 13:29:06 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2011-04-01 16:05:30 +0100 |
commit | 02971adc3b0f07f3820d0c5e973fabf16d16deb3 (patch) | |
tree | 58817368552e55051fa7be994cd80d7d8f4fdd2b | |
parent | 1bf970cb0e7fc0f9d8c10b567c6c7b4a66e43c17 (diff) | |
download | libguestfs-02971adc3b0f07f3820d0c5e973fabf16d16deb3.tar.gz libguestfs-02971adc3b0f07f3820d0c5e973fabf16d16deb3.tar.xz libguestfs-02971adc3b0f07f3820d0c5e973fabf16d16deb3.zip |
protocol: Sleep for 1ms before reading log messages.
As explained in the comment:
/* QEMU's console emulates a 16550A serial port. The real 16550A
* device has a small FIFO buffer (16 bytes) which means here we see
* lots of small reads of 1-16 bytes in length, usually single
* bytes. Sleeping here for a very brief period groups reads
* together (so we usually get a few lines of output at once) and
* improves overall throughput, as well as making the event
* interface a bit more sane for callers. With a virtio-serial
* based console (not yet implemented) we may be able to remove
* this. XXX
*/
-rw-r--r-- | src/proto.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/proto.c b/src/proto.c index 39f30ae4..7cd1d313 100644 --- a/src/proto.c +++ b/src/proto.c @@ -251,8 +251,15 @@ read_log_message_or_eof (guestfs_h *g, int fd, int error_if_eof) /* QEMU's console emulates a 16550A serial port. The real 16550A * device has a small FIFO buffer (16 bytes) which means here we see * lots of small reads of 1-16 bytes in length, usually single - * bytes. + * bytes. Sleeping here for a very brief period groups reads + * together (so we usually get a few lines of output at once) and + * improves overall throughput, as well as making the event + * interface a bit more sane for callers. With a virtio-serial + * based console (not yet implemented) we may be able to remove + * this. XXX */ + usleep (1000); + n = read (fd, buf, sizeof buf); if (n == 0) { /* Hopefully this indicates the qemu child process has died. */ |