virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
  • [parent not found: <1605223150-10888-3-git-send-email-michael.christie@oracle.com>]
  • [parent not found: <1605223150-10888-4-git-send-email-michael.christie@oracle.com>]
  • [parent not found: <1605223150-10888-5-git-send-email-michael.christie@oracle.com>]
  • [parent not found: <1605223150-10888-7-git-send-email-michael.christie@oracle.com>]
  • [parent not found: <1605223150-10888-8-git-send-email-michael.christie@oracle.com>]
  • [parent not found: <1605223150-10888-9-git-send-email-michael.christie@oracle.com>]
  • [parent not found: <1605223150-10888-10-git-send-email-michael.christie@oracle.com>]
  • [parent not found: <1605223150-10888-11-git-send-email-michael.christie@oracle.com>]
  • * Re: [PATCH 00/10] vhost/qemu: thread per IO SCSI vq
           [not found] <1605223150-10888-1-git-send-email-michael.christie@oracle.com>
                       ` (8 preceding siblings ...)
           [not found] ` <1605223150-10888-11-git-send-email-michael.christie@oracle.com>
    @ 2020-11-17 16:40 ` Stefan Hajnoczi
      2020-11-18  5:17   ` Jason Wang
           [not found]   ` <b3343762-bb11-b750-46ec-43b5556f2b8e@oracle.com>
      9 siblings, 2 replies; 27+ messages in thread
    From: Stefan Hajnoczi @ 2020-11-17 16:40 UTC (permalink / raw)
      To: Mike Christie
      Cc: fam, linux-scsi, mst, qemu-devel, virtualization, target-devel,
    	pbonzini
    
    
    [-- Attachment #1.1: Type: text/plain, Size: 2458 bytes --]
    
    On Thu, Nov 12, 2020 at 05:18:59PM -0600, Mike Christie wrote:
    > The following kernel patches were made over Michael's vhost branch:
    > 
    > https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git/log/?h=vhost
    > 
    > and the vhost-scsi bug fix patchset:
    > 
    > https://lore.kernel.org/linux-scsi/20201112170008.GB1555653@stefanha-x1.localdomain/T/#t
    > 
    > And the qemu patch was made over the qemu master branch.
    > 
    > vhost-scsi currently supports multiple queues with the num_queues
    > setting, but we end up with a setup where the guest's scsi/block
    > layer can do a queue per vCPU and the layers below vhost can do
    > a queue per CPU. vhost-scsi will then do a num_queue virtqueues,
    > but all IO gets set on and completed on a single vhost-scsi thread.
    > After 2 - 4 vqs this becomes a bottleneck.
    > 
    > This patchset allows us to create a worker thread per IO vq, so we
    > can better utilize multiple CPUs with the multiple queues. It
    > implments Jason's suggestion to create the initial worker like
    > normal, then create the extra workers for IO vqs with the
    > VHOST_SET_VRING_ENABLE ioctl command added in this patchset.
    
    How does userspace find out the tids and set their CPU affinity?
    
    What is the meaning of the new VHOST_SET_VRING_ENABLE ioctl? It doesn't
    really "enable" or "disable" the vq, requests are processed regardless.
    
    The purpose of the ioctl isn't clear to me because the kernel could
    automatically create 1 thread per vq without a new ioctl. On the other
    hand, if userspace is supposed to control worker threads then a
    different interface would be more powerful:
    
      struct vhost_vq_worker_info {
          /*
           * The pid of an existing vhost worker that this vq will be
           * assigned to. When pid is 0 the virtqueue is assigned to the
           * default vhost worker. When pid is -1 a new worker thread is
           * created for this virtqueue. When pid is -2 the virtqueue's
           * worker thread is unchanged.
           *
           * If a vhost worker no longer has any virtqueues assigned to it
           * then it will terminate.
           *
           * The pid of the vhost worker is stored to this field when the
           * ioctl completes successfully. Use pid -2 to query the current
           * vhost worker pid.
           */
          __kernel_pid_t pid;  /* in/out */
    
          /* The virtqueue index*/
          unsigned int vq_idx; /* in */
      };
    
      ioctl(vhost_fd, VHOST_SET_VQ_WORKER, &info);
    
    Stefan
    
    [-- Attachment #1.2: signature.asc --]
    [-- Type: application/pgp-signature, Size: 488 bytes --]
    
    [-- Attachment #2: Type: text/plain, Size: 183 bytes --]
    
    _______________________________________________
    Virtualization mailing list
    Virtualization@lists.linux-foundation.org
    https://lists.linuxfoundation.org/mailman/listinfo/virtualization
    
    ^ permalink raw reply	[flat|nested] 27+ messages in thread

  • end of thread, other threads:[~2020-12-02 10:35 UTC | newest]
    
    Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <1605223150-10888-1-git-send-email-michael.christie@oracle.com>
         [not found] ` <1605223150-10888-2-git-send-email-michael.christie@oracle.com>
    2020-11-17 11:53   ` [PATCH 1/1] qemu vhost scsi: add VHOST_SET_VRING_ENABLE support Stefan Hajnoczi
    2020-12-02  9:59   ` Michael S. Tsirkin
         [not found] ` <1605223150-10888-3-git-send-email-michael.christie@oracle.com>
    2020-11-17 13:04   ` [PATCH 01/10] vhost: remove work arg from vhost_work_flush Stefan Hajnoczi
         [not found] ` <1605223150-10888-4-git-send-email-michael.christie@oracle.com>
    2020-11-17 13:07   ` [PATCH 02/10] vhost scsi: remove extra flushes Stefan Hajnoczi
         [not found] ` <1605223150-10888-5-git-send-email-michael.christie@oracle.com>
    2020-11-17 13:07   ` [PATCH 03/10] vhost poll: fix coding style Stefan Hajnoczi
         [not found] ` <1605223150-10888-7-git-send-email-michael.christie@oracle.com>
    2020-11-17 15:32   ` [PATCH 05/10] vhost: poll support support multiple workers Stefan Hajnoczi
         [not found] ` <1605223150-10888-8-git-send-email-michael.christie@oracle.com>
    2020-11-17 16:04   ` [PATCH 06/10] vhost scsi: make SCSI cmd completion per vq Stefan Hajnoczi
         [not found] ` <1605223150-10888-9-git-send-email-michael.christie@oracle.com>
    2020-11-17 16:05   ` [PATCH 07/10] vhost, vhost-scsi: flush IO vqs then send TMF rsp Stefan Hajnoczi
         [not found] ` <1605223150-10888-10-git-send-email-michael.christie@oracle.com>
    2020-11-17 16:08   ` [PATCH 08/10] vhost: move msg_handler to new ops struct Stefan Hajnoczi
         [not found] ` <1605223150-10888-11-git-send-email-michael.christie@oracle.com>
    2020-11-17 16:14   ` [PATCH 09/10] vhost: add VHOST_SET_VRING_ENABLE support Stefan Hajnoczi
    2020-11-17 16:40 ` [PATCH 00/10] vhost/qemu: thread per IO SCSI vq Stefan Hajnoczi
    2020-11-18  5:17   ` Jason Wang
         [not found]     ` <8318de9f-c585-39f8-d931-1ff5e0341d75@oracle.com>
    2020-11-18  7:54       ` Jason Wang
         [not found]         ` <d6ffcf17-ab12-4830-cc3c-0f0402fb8a0f@oracle.com>
    2020-11-19  4:35           ` Jason Wang
         [not found]   ` <b3343762-bb11-b750-46ec-43b5556f2b8e@oracle.com>
    2020-11-18  9:54     ` Michael S. Tsirkin
    2020-11-19 14:00       ` Stefan Hajnoczi
    2020-11-18 11:31     ` Stefan Hajnoczi
    2020-11-19 14:46       ` Michael S. Tsirkin
         [not found]         ` <ceebdc90-3ffc-1563-ff85-12a848bcba18@oracle.com>
    2020-11-19 16:24           ` Stefan Hajnoczi
         [not found]             ` <ffd88f0c-981e-a102-4b08-f29d6b9a0f71@oracle.com>
    2020-11-19 17:08               ` Stefan Hajnoczi
    2020-11-20  8:45                 ` Stefan Hajnoczi
    2020-11-20 12:31                   ` Michael S. Tsirkin
    2020-12-01 12:59                     ` Stefan Hajnoczi
    2020-12-01 13:45                       ` Stefano Garzarella
    2020-12-01 17:43                         ` Stefan Hajnoczi
    2020-12-02 10:35                           ` Stefano Garzarella
    2020-11-23 15:17                   ` Stefano Garzarella
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).