Hi, You must adjust the preemption timer according to the eclipsed time when the guest runs. And register a hrtimer triggered when a guest exit. The timer should be alarmed when the remaining time runs out, 2013/12/17 Jan Kiszka <jan.kiszka@xxxxxxxxxxx>: > On 2013-12-17 13:59, Arthur Chunqi Li wrote: >> On Tue, Dec 17, 2013 at 8:43 PM, Jan Kiszka <jan.kiszka@xxxxxxxxxxx> wrote: >>> On 2013-12-17 12:31, Arthur Chunqi Li wrote: >>>> Hi Jan, >>>> >>>> On Tue, Dec 17, 2013 at 7:21 PM, Jan Kiszka <jan.kiszka@xxxxxxxxxxx> wrote: >>>>> On 2013-12-17 10:32, Arthur Chunqi Li wrote: >>>>>> Hi Jan and Paolo, >>>>>> >>>>>> I've tried to use preemption timer in KVM to trap vcpu regularly, but >>>>>> there's something unexpected. I run a VM with 4 vcpus and give them >>>>>> the same preemption timer value (e.g. 1000000) with all bits set >>>>>> (activate/save bits), then reset the value in preemption time-out >>>>>> handler. >>>>>> >>>>>> Thus I expected these vcpus trap regularly in some special turns. But >>>>>> I found that when the VM is not busy, some vcpus are trapped much less >>>>>> frequently than others. In Intel SDM, I noticed that preemption timer >>>>>> is only related to TSC, and I think all the vcpus should trap in a >>>>>> similar frequency. >>>>>> >>>>>> Could u help me explain this phenomenon? >>>>> >>>>> Are you on a CPU that has non-broken preemption timer support? Anything >>>>> prior Haswell is known to tick with arbitrary frequencies. >>>> >>>> My CPU is Intel(R) Xeon(R) CPU E5620 @ 2.40GHz. >>> >>> Hmm, this one seems unaffected. Didn't find a "specification update". >>> Just like Paolo asked: Your original test case passes? >>> >>>> >>>> Besides, what do you mean by arbitrary frequencies? >>> >>> On older CPUs, the tick rate of the preemption timer does not correlate >>> with the TSC, definitely not in the way the spec defined. >>> >>> Back to your original question: Are we talking about native use of the >>> preemption timer via a patched KVM or nested use inside a KVM virtual >>> machine? >> >> It is about the native use. I think it may due to the scheduling. When >> vcpu is scheduled out of pcpu, will the preemption timer work still? > > The preemption timer ticks as long as the guest is running. Should be > specified like this as well. So your KVM patch needs to take care of > this when you want to expire it based on real-time, not based on guest > time. That's in fact similar to adjustments you implemented for the > emulation of the preemption timer. > > Jan > >> >> Oh, another problem, I use the released kernel 3.11, not the latest >> one. Does this matter? >> >> Arthur >> >>> >>> Jan >>> >>> -- >>> Siemens AG, Corporate Technology, CT RTC ITP SES-DE >>> Corporate Competence Center Embedded Linux >> >> >> > > -- > Siemens AG, Corporate Technology, CT RTC ITP SES-DE > Corporate Competence Center Embedded Linux > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks Rui Wu -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html