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

[Xen-devel] WinPv driver get bad write performance



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
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.