Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Feb 2003 16:41:40 -0500
From:      Bosko Milekic <bmilekic@unixdaemons.com>
To:        Terry Lambert <tlambert2@mindspring.com>
Cc:        Matthew Dillon <dillon@apollo.backplane.com>, "Daniel C. Sobral" <dcs@tcoip.com.br>, Trish Lynch <trish@bsdunix.net>, freebsd-current@FreeBSD.ORG
Subject:   Re: Hyperthreading and machdep.cpu_idle_hlt
Message-ID:  <20030201164140.B13358@unixdaemons.com>
In-Reply-To: <3E3C3C0D.15722918@mindspring.com>; from tlambert2@mindspring.com on Sat, Feb 01, 2003 at 01:28:45PM -0800
References:  <20030131125804.E1357-100000@femme> <200301311824.h0VIOtmF095380@apollo.backplane.com> <3E3AC33E.9060204@tcoip.com.br> <200301311908.h0VJ8cNZ007396@apollo.backplane.com> <20030131141700.A7526@unixdaemons.com> <200301311952.h0VJqrMB076135@apollo.backplane.com> <20030201100412.B11945@unixdaemons.com> <3E3C327F.FD9E26F7@mindspring.com> <20030201160547.A13169@unixdaemons.com> <3E3C3C0D.15722918@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Sat, Feb 01, 2003 at 01:28:45PM -0800, Terry Lambert wrote:
> Bosko Milekic wrote:
> > > >   Or, as I explained in my previous post, only HLT the [virtual] CPU if
> > > >   the other [virtual] CPU that is sharing the same execution & cache
> > > >   units is not HLT'd itself.  If the other one is HLT'd, then not do the
> > > >   HLT.
> > >
> > > Actually, why is that?  Why would you not want to HLT all the
> > > units that are not being used?
> > 
> >   Because, the comment explains, a halted CPU will not pick up a new
> >   thread off the run queue until the next timer tick.  So if all your
> >   logical units are idled then you can afford to just loop checking
> >   whether something is runnable without interfering with the performance
> >   of other threads running on a different logical cpu sharing your
> >   execution unit (because the other logical units are idle anyway).
> >   That way, you don't have to necessarily wait for the next timer tick
> >   to check whether something is runnable, especially if it's made
> >   runnable before.  The disadvantage is that you don't really economize
> >   on power consumption.
> 
> There's an assumption in there of a shared scheduler queue, and a
> lack of CPU affinity (or negaffinity, for multiple threads in a
> single process), isn't there?

  Well, euh, yeah, the runqueue was global the last time I checked
  (Jeff R.'s new stuff aside).  Maybe I'm just out of it, I don't know.

[... other probably meaningful stuff that makes the assumption that we
do have per-CPU queues protected by their own locks ...]

-- 
Bosko Milekic * bmilekic@unixdaemons.com * bmilekic@FreeBSD.org


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030201164140.B13358>