qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 0/2] Increase amount of data for monitor to read


From: Andrey Shinkevich
Subject: Re: [PATCH v2 0/2] Increase amount of data for monitor to read
Date: Mon, 23 Nov 2020 20:13:56 +0300
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.9.0

On 23.11.2020 18:44, Andrey Shinkevich wrote:
The subject was discussed here:
https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg00206.html

This series is a solution for the issue with QMP monitor buffered input.
A JSON little parser is introduced to separate QMP commands read from the
input buffer so that incoming requests do not overwhelm the monitor queue.
A side effect raised in the test #247 was managed in the first patch.
It may be considered as a workaround. Any sane fix suggested will be
appreciated.

Note:
This series goes after the Vladimir's one:
'[PATCH v3 00/25] backup performance: block_status + async"'
To make the test #129 passed, the following patch should be applied first:
'[PATCH v3 01/25] iotests: 129 don't check backup "busy"'.

v2:
   02: The static JSONthrottle object was made a member of the Chardev 
structure.
       The fd_chr_read functions were merged.
       The monitor thread synchronization was added to protect the input queue
       from overflow.

Andrey Shinkevich (2):
   iotests: add another bash sleep command to 247
   monitor: increase amount of data for monitor to read

  chardev/char-fd.c          | 35 +++++++++++++++++++++++++++++++++--
  chardev/char-socket.c      | 42 +++++++++++++++++++++++++++++++++++++++---
  chardev/char.c             | 41 +++++++++++++++++++++++++++++++++++++++++
  include/chardev/char.h     | 15 +++++++++++++++
  monitor/monitor.c          |  2 +-
  tests/qemu-iotests/247     |  2 ++
  tests/qemu-iotests/247.out |  1 +
  7 files changed, 132 insertions(+), 6 deletions(-)


...and with the extended number of QMP commands

time (echo "{ 'execute': 'qmp_capabilities' }"; for i in {1..10000}; do echo "{ 'execute': 'query-block-jobs' } {"execute":"query-status"} { 'execute': 'query-block-jobs' } {"execute":"query-status"} { 'execute': 'query-block-jobs' } {"execute":"query-status"} { 'execute': 'query-block-jobs' } {"execute":"query-status"}"; done; echo "{ 'execute': 'quit' }" ) | ./build/qemu-system-x86_64 -qmp stdio > /dev/null

on master:
real    0m10.112s
user    0m10.168s
sys     0m4.793s

after the patch applied:
real    0m4.140s
user    0m4.079s
sys     0m0.785s

Andrey



reply via email to

[Prev in Thread] Current Thread [Next in Thread]