WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] RE: Rather slow time of Pin in Windows with GPL PV driver

Hi James:
 
      I did some more test, add some log to what the interrupts distribution.
      In XenNet_RxBufferCheck I log the CPU number by adding line
      KdPrint((__DRIVER_NAME "    pcpu = %lu\n", pcpu));  please refer to below code.
 
      Result below show that when KeSetTargetProcessorDpc is commentten, the interrupts
distribute over all VCPUs, could this explain something?
 
      Beside, I did some perf test using netperf, no performanc difference observed.
 
===============Result================================
      1) KeSetTargetProcessorDpc(&xi->rx_dpc, 0) is commentted.
       XnetNet       pcpu = 1
       XnetNet       pcpu = 3
       XnetNet       pcpu = 2
       XnetNet       pcpu = 3
       XnetNet       pcpu = 7
       XnetNet       pcpu = 0
       XnetNet       pcpu = 5
       XnetNet       pcpu = 3
       XnetNet       pcpu = 0
       XnetNet       pcpu = 3
       XnetNet       pcpu = 7
       XnetNet       pcpu = 4
       XnetNet       pcpu = 5
       XnetNet       pcpu = 2
       XnetNet       pcpu = 4
       XnetNet       pcpu = 5
       XnetNet       pcpu = 6
       XnetNet       pcpu = 0
       XnetNet       pcpu = 6
     
       2) KeSetTargetProcessorDpc(&xi->rx_dpc, 0) is *NOT*commentted.
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
       XnetNet       pcpu = 0
==================================================
static VOID
XenNet_RxBufferCheck(PKDPC dpc, PVOID context, PVOID arg1, PVOID arg2)
{
  struct xennet_info *xi = context;
  RING_IDX cons, prod;
  LIST_ENTRY rx_packet_list;
  PLIST_ENTRY entry;
  PNDIS_PACKET packets[MAXIMUM_PACKETS_PER_INDICATE];
  ULONG packet_count = 0;
  struct netif_rx_response *rxrsp = NULL;
  struct netif_extra_info *ei;
  USHORT id;
  int more_to_do = FALSE;
  packet_info_t *pi = &xi->rxpi;
  //NDIS_STATUS status;
 &nb sp;shared_buffer_t *page_buf;
  PNDIS_BUFFER buffer;
  ULONG pcpu = KeGetCurrentProcessorNumber() & 0xff;

  UNREFERENCED_PARAMETER(dpc);
  UNREFERENCED_PARAMETER(arg1);
  UNREFERENCED_PARAMETER(arg2);

  //FUNCTION_ENTER();

  KdPrint((__DRIVER_NAME "    pcpu = %lu\n", pcpu));    

  if (!xi->connected)

 
> Subject: RE: Rather slow time of Pin in Windows with GPL PV driver
> Date: Wed, 9 Mar 2011 22:28:48 +1100
> From: james.harper@xxxxxxxxxxxxxxxx
> To: tinnycloud@xxxxxxxxxxx
> CC: xen-devel@xxxxxxxxxxxxxxxxxxx
>
> > I may try pin later, my host has 4 * 4 core CPU.
> >
> > Well, I just compare GPL and RHEL PV driver codes, I noticed most of
> the net
> > driver
> > initialization is the same. Only one difference, in GPL code has the
> code of
> > KeSetTargetProcessorDpc(&xi->rx_dpc, 0); //in xennet_rx.c line 953
> > but the RHEL doesn't
> >
> > So I simply comments the code, recompile and did the test again.
> > The result shows good, all ping time less than < 1ms.
> >
> > May it be the cause? Is it harmful to comments this line?
> > Many thanks.
> >
>
> At a guess I would say it should be harmful to performance, but all the
> critical code is protected by spinlocks.
>
> It could be a leftover from a previous version of GPLPV. In the current
> version, the spinlock protected code is probably a little long winded
> but is nothing compared to the passing down of packets to Windows that
> is done in the DPC but outside the spinlock.
>
> Can you do some general performance tests with this change?
>
> Is the RHEL PV driver source publicly available?
>
> James
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>