Messages in this thread | | | Subject | Re: [PATCH 2/2] x86/idle: use dynamic halt poll | From | Yang Zhang <> | Date | Tue, 27 Jun 2017 19:22:57 +0800 |
| |
On 2017/6/23 11:58, Yang Zhang wrote: > On 2017/6/22 19:51, Paolo Bonzini wrote: >> >> >> On 22/06/2017 13:22, root wrote: >>> ============================================================== >>> >>> +poll_grow: (X86 only) >>> + >>> +This parameter is multiplied in the grow_poll_ns() to increase the >>> poll time. >>> +By default, the values is 2. >>> + >>> +============================================================== >>> +poll_shrink: (X86 only) >>> + >>> +This parameter is divided in the shrink_poll_ns() to reduce the poll >>> time. >>> +By default, the values is 2. >> >> Even before starting the debate on whether this is a good idea or a bad >> idea, KVM reduces the polling value to the minimum (10 us) by default > > I noticed it. It looks like the logic inside KVM is more reasonable. I > will do more testing to compare the two. > >> when polling fails. Also, it shouldn't be bound to >> CONFIG_HYPERVISOR_GUEST, since there's nothing specific to virtual >> machines here. > > Yes. The original idea to use CONFIG_HYPERVISOR_GUEST because this > mechanism will only helpful inside VM. But as Thomas mentioned on other > thread it is wrong to use it since most distribution kernel will set it > to yes and still affect the bare metal. I will integrate it with > paravirtualizaion part as you suggested in below. > >> >> Regarding the good/bad idea part, KVM's polling is made much more >> acceptable by single_task_running(). At least you need to integrate it >> with paravirtualization. If the VM is scheduled out, you shrink the >> polling period. There is already vcpu_is_preempted for this, it is used >> by mutexes. > > I have considered single_task_running() before. But since there is no > such paravirtual interface currently and i am not sure whether it is a > information leak from host if introducing such interface, so i didn't do > it. Do you mean vcpu_is_preempted can do the same thing? I check the > code and seems it only tells whether the VCPU is scheduled out or not > which cannot satisfy the needs.
Hi Paolo
Can you help to answer my confusion? I have double checked the code, but still not get your point. Do you think it is necessary to introduce an paravirtual interface to expose single_task_running() to guest?
-- Yang Alibaba Cloud Computing
| |