Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Jan 2003 11:52:53 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Bosko Milekic <bmilekic@unixdaemons.com>
Cc:        "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:  <200301311952.h0VJqrMB076135@apollo.backplane.com>
References:  <20030131125804.E1357-100000@femme> <200301311824.h0VIOtmF095380@apollo.backplane.com> <3E3AC33E.9060204@tcoip.com.br> <200301311908.h0VJ8cNZ007396@apollo.backplane.com> <20030131141700.A7526@unixdaemons.com>

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

:  Why do you think that hlt-ing the CPU(s) when idle would actually
:  improve performance in this case?  My only suspicion is that perhaps
:  this reduces scheduling on the auxiliary 'logical' (fake) CPUs,
:  thereby indirectly reducing cache ping-ponging and abuse.  I would
:  imagine that both units sharing the same execution engine in the
:  HTT-enabled model would be effectively 'hlt'-ed when one of the two
:  threads executes an 'hlt' until the next timer tick.
:
:  I guess we'll wait for the two other data sets from Trish: one with
:  HTT off, and cpu_idle_hlt=0, and the other with HTT off, and
:  cpu_idle_hlt=1, before figuring this out.
:
:-- 
:Bosko Milekic * bmilekic@unixdaemons.com * bmilekic@FreeBSD.org

     I am almost certain that it is related to pipeline stalls created
     by the fairly long (in instructions) idle loop and the locked bus
     cycles used by the mutex code.  It could also possibly be related to
     L1 cache contention.

     I think that if we can fit the idle loop for the 'logical' processor
     into a single instruction cache line and a single data cache line,
     accessing a single memory location without any locked bus cycles, that
     it would solve the problem.  Unfortunately I have no boxes I can do
     testing on so this is just a guess.

     Another solution would be to have a global mask of 'idle' cpus and send
     an IPI to them when a new KSE is scheduled on a non-idle cpu that would
     simply serve to wakeup the HLT.  IPIs are nasty, but there are large 
     (power consumption) advantages to standardizing on the HLT methodology.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

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?200301311952.h0VJqrMB076135>