Adding timer_mode=1 to the config file for Windows HVMs with multiple
cpu solves the problem, tested on Windows XP and Server 2003 32 bit.
I verified that the changes made in 16366 are present in Xen 3.2.1,
perhaps you are missing the timer setting or are using a older
version?
http://xenbits.xensource.com/xen-unstable.hg/rev/837f83225153
Andy
On Fri, Sep 19, 2008 at 5:52 PM, Andrew Lyon <andrew.lyon@xxxxxxxxx> wrote:
> http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=895
>
> On Fri, Sep 19, 2008 at 5:18 PM, Andrew Lyon <andrew.lyon@xxxxxxxxx> wrote:
>> I have noticed the same thing, does it cause other problems?
>>
>> Here are logs from different versions of windows pinging the default
>> gateway and localhost, note that when the time is irregular the
>> response happens instantly or too quickly to be correct timing, i.e.
>> multiple response lines are printed at once or very close together,
>> much quicker than the stated time, only when the time is sensible does
>> each line appear with regular timing:
>>
>> XP Pro 32 Bit 2 cpus:
>>
>> C:\Documents and Settings\Administrator>ping 10.0.4.1 -t
>>
>> Pinging 10.0.4.1 with 32 bytes of data:
>>
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=6140ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>>
>> and localhost:
>>
>> C:\Documents and Settings\Administrator>ping -t localhost
>>
>> Pinging localhost [127.0.0.1] with 32 bytes of data:
>>
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6186ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-6187ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
>>
>> If you set the affinity of the ping.exe process to a single CPU
>> sometimes the problem goes away, I think the time is not sync over the
>> cpus and so the ping timings over/under flow and give strange values?
>> or the time is taken from one cpu and by chance when I set the
>> affinity to the cpu that has the master timer and the ping works
>> properly?
>>
>> Windows 2003 32 bit Standard Edition 4 cpus:
>>
>> C:\Documents and Settings\Administrator>ping -t 10.0.4.1
>>
>> Pinging 10.0.4.1 with 32 bytes of data:
>>
>> Reply from 10.0.4.1: bytes=32 time=2434ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-501ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-604ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=2434ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-501ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=2434ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-501ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=2434ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-501ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-501ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-604ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=2434ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time=-501ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>>
>> C:\Documents and Settings\Administrator>ping -t localhost
>>
>> Pinging xen-win2003x86 [127.0.0.1] with 32 bytes of data:
>>
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-2436ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=501ms TTL=128
>>
>> Each time I run the ping I get a different response time:
>>
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>> Reply from 127.0.0.1: bytes=32 time=-605ms TTL=128
>>
>>
>>
>> Windows 2008 Enterprise Edition 32 bit with 8 CPUs seems to not have
>> the problem:
>>
>> C:\Users\Administrator>ping -t 10.0.4.1
>>
>> Pinging 10.0.4.1 with 32 bytes of data:
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>> Reply from 10.0.4.1: bytes=32 time<1ms TTL=64
>>
>> C:\Users\Administrator>ping -t localhost
>>
>> Pinging WIN-PA2NTBT8TNB [::1] from ::1 with 32 bytes of data:
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>> Reply from ::1: time<1ms
>>
>>
>> Andy
>>
>> On Fri, Sep 19, 2008 at 4:15 PM, Nemeth, Tamas <nice@xxxxxxxxxxxxxxx> wrote:
>>> Hi,
>>>
>>> I've tried to run w2k3 server with multiple CPUs, but i had to realize
>>> that a HVM virtualized w2k3 has some timing (clock) issues. Timing
>>> becomes somehow imprecise. I tried it on 64bit hypervisor and 32bit
>>> dom0, xen version 3.2.1. I tried to ping a host from a multiple VCPU
>>> windows and the packets coming back seemed to arrive earlier then they
>>> left the NIC, or something like this. Can you confirm this symtom?
>>> (However it's possible, this is a problem of networking, not timing.)
>>> This problem doesn't exist on single VCPU Windows HVM domUs.
>>>
>>> Cheers
>>>
>>> Tamas
>>>
>>>
>>> 2008. 09. 19, péntek keltezéssel 14.46-kor Andrew Lyon ezt írta:
>>>> On Fri, Sep 19, 2008 at 2:39 PM, Andrew Lyon <andrew.lyon@xxxxxxxxx> wrote:
>>>> > Hi,
>>>> >
>>>> > Am I correct in thinking that when Xen is running on a multi-core /
>>>> > smp system and several cpus are assigned to a VM they are "presented"
>>>> > as multiple single core cpus rather than 1 or more multi-core cpus?
>>>> >
>>>> > Microsoft CPU limits are for physical sockets, not cores.
>>>> >
>>>> > Windows XP and Vista are limited to two physical cpus, running under
>>>> > Xen the maximum cpus I have seen in task manager and system properties
>>>> > is 2, although device manager shows all of the assigned cpus (up to
>>>> > 8).
>>>> >
>>>> > Windows 2003 and 2008 standard edition are limited to 4 cpus, which is
>>>> > the limit I find under Xen, again device manager shows all assigned
>>>> > cpus (up to 8).
>>>> >
>>>> > Is there any way to make windows see the cpus as multi-core so that
>>>> > all 8 cores can be used ?
>>>> >
>>>> > Andy
>>>> >
>>>>
>>>> I've also noticed that if I run "xm list" repeatedly as the VM is
>>>> starting up I can actually see the cpus being initialized, the value
>>>> matches the limit i find in windows:
>>>>
>>>> A Windows 2003 R2 Standard Edition 32 Bit VM:
>>>>
>>>> #grep vcpu Win2003x86.cfg
>>>> vcpus=8
>>>>
>>>> xm list (several times during boot process)
>>>>
>>>> Win2003x86 24 2048 1
>>>> Win2003x86 24 2048 2
>>>> Win2003x86 24 2048 3
>>>> Win2003x86 24 2048 4
>>>>
>>>> But if i booted this version of windows on the raw hardware all 8 cpus
>>>> would be utilized.
>>>>
>>>> Andy
>>>>
>>>> _______________________________________________
>>>> Xen-users mailing list
>>>> Xen-users@xxxxxxxxxxxxxxxxxxx
>>>> http://lists.xensource.com/xen-users
>>>
>>>
>>> _______________________________________________
>>> Xen-users mailing list
>>> Xen-users@xxxxxxxxxxxxxxxxxxx
>>> http://lists.xensource.com/xen-users
>>>
>>
>
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users
|