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

Re: [Xen-devel] FreeBSD/Xen ugliness



Thanks!

                -Kip


On Sun, 9 Jan 2005, Keir Fraser wrote:

>
> Kip,
>
> You need to block rather than yield -- if noone else is runnable and
> you call yield, Xen will simply continue to run your idle loop rather
> than powering down the CPU. If you call block then Xen will *not* run
> you until there is some event upcall to be delivered -- this is the
> behaviour that you actually want.
>
> You want your idle loop to look something like this:
>
>  while ( !<should leave idle loop> ) {
>    disable_intr();
>    if ( <should leave idle loop> ) {
>      enable_intr();
>      break;
>    }
>    if ( HYPERVISOR_set_timer_op(<next timeout>) == 0 )
>      HYPERVISOR_block();
>    else
>      enable_intr();
>  }
>
> The use of HYPERVISOR_set_time_op() is confusing on first
> sight. Recall that you stop getting periodic timer upcalls when your
> domain is not running. If you block then you will receive no periodic
> upcalls until after the next time you receive some other asynchronous
> upcall (which serves to unblock you).
>
> This is bad if the next piece of work your OS needs to execute is
> being scheduled off of the timer upcall! What we do in Linux is peek
> at the timer subsystem's alarm list, looking for the earliest
> requested timeout. We then set a one-shot alarm in Xen that will
> wake/unblock us at that point if we were not unblocked already.
>
>  -- Keir
>
> > I've seen the same timing issues. We do call yield where appropriate:
> >
> > static void
> > cpu_idle_default(void)
> > {
> > #if 0
> >         /*
> >          * we must absolutely guarentee that hlt is the
> >          * absolute next instruction after sti or we
> >          * introduce a timing window.
> >          */
> >         __asm __volatile("sti; hlt");
> > #endif
> >         enable_intr();
> >         HYPERVISOR_yield();
> > }
> >
> >
> > So I'm not sure what the problem is. After the 5.3 work and coredump is
> > done I might look into it. There may have been some fixes to the clock
> > code in the meantime.
> >
> >
> >                             -Kip
> >
> >
> > On Sat, 8 Jan 2005, Derrik Pates wrote:
> >
> > > Kip:
> > >
> > > Well, I have good news; thanks to Darren Tucker pointing out that the
> > > boot.netif.* parameters _have_ to be added, I was able to successfully
> > > boot your FreeBSD/Xen kernel. It seems to work okay so far. It fairly
> > > regularly (every few minutes or so) spits out a line like:
> > >
> > > Expensive timeout(9) function: 0xc00b0bd0(0) 0.010000854 s
> > >
> > > at me, but it seems to otherwise behave as FreeBSD should. The only
> > > thing I've noticed so far is that, looking at the output of 'xm list',
> > > its domain's virtual-time clock seems to grow at a constant rate. I'm
> > > guessing this means it doesn't call up to the hypervisor and say "Please
> > > schedule someone else, I'm idle right now" when it has nothing to do. It
> > > doesn't seem to affect the performance of other domains though, but I
> > > thought it worth pointing out. Unfortunately, I don't know enough about
> > > FreeBSD's scheduler to make the necessary changes to make this work as
> > > it should. I'll have to see about getting a proper full CVS pull of the
> > > sys/ tree for 5.2.1 on my FreeBSD install in VMware, and see if I can
> > > make a FreeBSD kernel build work; however, I'd like to see the 5.3
> > > kernel when you get around to it.
> > >
> > > --
> > > Derrik Pates
> > > dpates@xxxxxxxxxx
> > >
> >
> >
> > -------------------------------------------------------
> > The SF.Net email is sponsored by: Beat the post-holiday blues
> > Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
> > It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxxxxxxxxxx
> > https://lists.sourceforge.net/lists/listinfo/xen-devel
>
>
>
> -------------------------------------------------------
> The SF.Net email is sponsored by: Beat the post-holiday blues
> Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
> It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/xen-devel
>


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel


 


Rackspace

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