From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wayne Gong Subject: WinPv driver get bad write performance Date: Tue, 07 Apr 2009 11:48:05 +0800 Message-ID: <49DACCF5.3070604@oracle.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1026592455==" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen >> \"xen-devel@lists.xensource.com\"" List-Id: xen-devel@lists.xenproject.org --===============1026592455== Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi

My windows pv driver's read performance is acceptable but write performance is bad and worse then QEMU mode.
I use DebugView to get some debug information from drivers. I found something strange but interesting. I use IoMeter to test a 2GB disk which formatted as NTFS file system. Set VCPU = 1, Memory = 600MB. All test are done on the same test machine. Here are some log brief, I just print one command work process for an example, the other commands in log files show the same result.

Windows Server 2008 X64, 32K, 100% sequence Read
-Log No.-    - Time-         - Log-
00003944    1.28332651    XenVBD:    Srb FFFFFA8000E82F90, startLBA 1912736, blockCount 64, offset 0  
00003945    1.28334212    XenVBD:    Device FFFFFA8000A67008, Notify event channel 5  
00003946    1.28373182    XenPCI:     send software interrupt to event channel 5  
00003947    1.28375566    XenVBD:    ISR StartLBA:1912736, blockCount:64
[Response time = 1.28373182 - 1.28334212 = 0.0003897 ]

Windows Server 2008 X64, 32K, 100% sequence Write
-Log No.-    - Time-         - Log-
00002718    5.05471611    XenVBD:    Srb FFFFFA8000E82F90, startLBA 1892896, blockCount 64, offset 0  
00002719    5.05474854    XenVBD:    Device FFFFFA8000A67008, Notify event channel 5  
00002720    5.05863619    XenPCI:     send software interrupt to event channel 5  
00002721    5.05865955    XenVBD:    ISR StartLBA:1892896, blockCount:64
[Response time = 5.05863619 - 5.05474854 = 0.00388765 ]

For each log segment,
line 1 means xenvbd driver get an SCSI command from system upper driver (such as file system),
line 2 means xenvbd driver finish SCSI command analyzing, fill it to a ring buffer and notify the event channel to tell backend driver that a command is ok and need backend to deal with.
line 3 means xenpci driver get an event channel notify from backend and send a software interrupt to tell xenvbd driver that a command is finished.
line 4 means xenvbd driver get a interrupt from xenpci driver. ISR is called to complete a SCSI command.

What I found is X64 32K Write command takes a long time to get response from backend. Response time from set notify to event channel to get event notify from event channel is longer then Read command (about 10 times). I know a hard disk drive will take more time to deal with a Write command then Read command, but I don't think it will be 10 times. So any one can tell me why backend driver need so much time to deal with a 32K Write command from a X64 windows PV HVM? Can I set some parameter to get some log from backend or something else?

I use xen 3.1 series.

Any feedback is appreciate.

thanks
wayne
--===============1026592455== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --===============1026592455==--