All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guo Zhi <qtxuning1999@sjtu.edu.cn>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: jasowang@redhat.com, eperezma@redhat.com,
	virtualization@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org, sgarzare@redhat.com
Subject: Re: [PATCH v2 3/4] virtio_test: use random length scatterlists to test descriptor chain
Date: Thu, 7 Jul 2022 14:24:02 +0800	[thread overview]
Message-ID: <8a0ca3af-d7dd-9a98-1b08-8d861d25d368@sjtu.edu.cn> (raw)
In-Reply-To: <20220707011015-mutt-send-email-mst@kernel.org>

On 2022/7/7 13:16, Michael S. Tsirkin wrote:
> On Thu, Jul 07, 2022 at 10:44:08AM +0800, Guo Zhi wrote:
>> Prior implementation only use one descriptor for each io event, which
>> does't test code of descriptor chain. More importantly, one descriptor
>> will not use indirect feature even indirect feature is specified. Use
>> random length scatterlists here to test descriptor chain.
>>
>> Signed-off-by: Guo Zhi <qtxuning1999@sjtu.edu.cn>
>> ---
>>   tools/virtio/virtio_test.c | 11 ++++++++---
>>   1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
>> index 1ecd64271..363695b33 100644
>> --- a/tools/virtio/virtio_test.c
>> +++ b/tools/virtio/virtio_test.c
>> @@ -20,6 +20,7 @@
>>   #include "../../drivers/vhost/test.h"
>>   
>>   #define RANDOM_BATCH -1
>> +#define MAX_SG_FRAGS 8UL
>>   #define ALIGN 4096
>>   #define RINGSIZE   256
>>   #define TEST_BUF_NUM 0x100000
>> @@ -172,7 +173,8 @@ static void wait_for_interrupt(struct vdev_info *dev)
>>   static void run_test(struct vdev_info *dev, struct vq_info *vq,
>>   		     bool delayed, int batch, int reset_n, int bufs)
>>   {
>> -	struct scatterlist sl;
>> +	struct scatterlist sg[MAX_SG_FRAGS];
>> +	int sg_size = 0;
>>   	long started = 0, completed = 0, next_reset = reset_n;
>>   	long completed_before, started_before;
>>   	int r, test = 1;
>> @@ -197,8 +199,11 @@ static void run_test(struct vdev_info *dev, struct vq_info *vq,
>>   
>>   			while (started < bufs &&
>>   			       (started - completed) < batch) {
>> -				sg_init_one(&sl, dev->buf, dev->buf_size);
>> -				r = virtqueue_add_outbuf(vq->vq, &sl, 1,
>> +				sg_size = random() % (MAX_SG_FRAGS - 1) + 1;
>> +				sg_init_table(sg, sg_size);
>> +				for (int i = 0; i < sg_size; ++i)
>> +					sg_set_buf(&sg[i], dev->buf + i, 0x1);
>> +				r = virtqueue_add_outbuf(vq->vq, sg, sg_size,
>>   							 dev->buf + started,
>>   							 GFP_ATOMIC);
>>   				if (unlikely(r != 0)) {
> random on data path is pretty expensive.
> I would suggest get an array size from user (and maybe a seed?) and
> pregenerate some numbers, then reuse.
SGTM, I will prepare a random number array before add outbuf begin.
>
>> -- 
>> 2.17.1



  reply	other threads:[~2022-07-07  6:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-07  2:44 [PATCH v2 0/4] virtio/virtio_test Guo Zhi
2022-07-07  2:44 ` [PATCH v2 1/4] virtio_test: kick vhost for a batch of descriptors Guo Zhi
2022-07-07  2:44 ` [PATCH v2 2/4] virtio_test: move magic number in code as defined constant Guo Zhi
2022-07-07  5:09   ` Michael S. Tsirkin
2022-07-07  5:09     ` Michael S. Tsirkin
2022-07-07  6:17     ` Guo Zhi
2022-07-07  7:36       ` Michael S. Tsirkin
2022-07-07  7:36         ` Michael S. Tsirkin
2022-07-07 12:15         ` Guo Zhi
2022-07-07 12:19         ` Guo Zhi
2022-07-07  2:44 ` [PATCH v2 3/4] virtio_test: use random length scatterlists to test descriptor chain Guo Zhi
2022-07-07  5:16   ` Michael S. Tsirkin
2022-07-07  5:16     ` Michael S. Tsirkin
2022-07-07  6:24     ` Guo Zhi [this message]
2022-07-07  2:44 ` [PATCH v2 4/4] virtio_test: enable indirection feature Guo Zhi
2022-07-07  4:59   ` Michael S. Tsirkin
2022-07-07  4:59     ` Michael S. Tsirkin
2022-07-07  5:56     ` Guo Zhi
2022-07-07  5:59       ` Michael S. Tsirkin
2022-07-07  5:59         ` Michael S. Tsirkin
2022-07-07  6:05         ` Guo Zhi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8a0ca3af-d7dd-9a98-1b08-8d861d25d368@sjtu.edu.cn \
    --to=qtxuning1999@sjtu.edu.cn \
    --cc=eperezma@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=sgarzare@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.