<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-12343</id>
	<title>Nabble - tech-smp</title>
	<updated>2009-03-24T15:06:17Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/tech-smp-f12343.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/tech-smp-f12343.html" />
	<subtitle type="html">Discussion of technical issues relating to multi-processor support for NetBSD.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-22690897</id>
	<title>Re: &gt;32 core support</title>
	<published>2009-03-24T15:06:17Z</published>
	<updated>2009-03-24T15:06:17Z</updated>
	<author>
		<name>Hubert Feyrer-4</name>
	</author>
	<content type="html">On Mon, 23 Mar 2009, Thor Lancelot Simon wrote:
&lt;br&gt;&amp;gt; QEMU (or, at least, 'Q' on OS X, which uses QEMU as its guts) supports
&lt;br&gt;&amp;gt; up to 128 CPUs, in 32 or 64 bit x86 emulation.
&lt;br&gt;&lt;br&gt;I've played with that some time ago, see
&lt;br&gt;&lt;a href=&quot;http://kerneltrap.org/index.php?q=mailarchive/netbsd-tech-kern/2005/12/22/292131&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://kerneltrap.org/index.php?q=mailarchive/netbsd-tech-kern/2005/12/22/292131&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; - Hubert
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3E32-core-support-tp22670926p22690897.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22671156</id>
	<title>Re: &gt;32 core support</title>
	<published>2009-03-23T16:00:01Z</published>
	<updated>2009-03-23T16:00:01Z</updated>
	<author>
		<name>Thor Lancelot Simon</name>
	</author>
	<content type="html">On Mon, Mar 23, 2009 at 10:46:00PM +0000, Andrew Doran wrote:
&lt;br&gt;&amp;gt; For anyone interested in working on &amp;gt;32 core support here is a interesting
&lt;br&gt;&amp;gt; link. It suggests that `bochs' can be patched to emulate a 48 core system.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 	&lt;a href=&quot;http://forum.osdev.org/viewtopic.php?f=1&amp;t=19192&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://forum.osdev.org/viewtopic.php?f=1&amp;t=19192&lt;/a&gt;&lt;br&gt;&lt;br&gt;QEMU (or, at least, 'Q' on OS X, which uses QEMU as its guts) supports
&lt;br&gt;up to 128 CPUs, in 32 or 64 bit x86 emulation.
&lt;br&gt;&lt;br&gt;We have some trouble with its ACPI implementation, or did last I checked
&lt;br&gt;(a long time ago) which made it difficult but not impossible to get a
&lt;br&gt;32 CPU system going, which was the most I tried.
&lt;br&gt;&lt;br&gt;Thor
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3E32-core-support-tp22670926p22671156.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22670926</id>
	<title>&gt;32 core support</title>
	<published>2009-03-23T15:46:00Z</published>
	<updated>2009-03-23T15:46:00Z</updated>
	<author>
		<name>Andrew Doran-7</name>
	</author>
	<content type="html">For anyone interested in working on &amp;gt;32 core support here is a interesting
&lt;br&gt;link. It suggests that `bochs' can be patched to emulate a 48 core system.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://forum.osdev.org/viewtopic.php?f=1&amp;t=19192&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://forum.osdev.org/viewtopic.php?f=1&amp;t=19192&lt;/a&gt;&lt;br&gt;&lt;br&gt;x86 currently supports 32 cores/threads out of the box, but it may not be
&lt;br&gt;enough for commodity servers within a couple of years. The low-level issues
&lt;br&gt;I am aware of are:
&lt;br&gt;&lt;br&gt;- There are static arrays that will not scale (MAXCPUS). Some of these could
&lt;br&gt;&amp;nbsp; be folded into cpu_data, leaving us with a single array to worry about
&lt;br&gt;&amp;nbsp; sizing dynamically.
&lt;br&gt;&lt;br&gt;- There are 32-bit masks, the majority of which are in platform-specific
&lt;br&gt;&amp;nbsp; code. The kcpuset code needs work to do stuff that the kernel uses, like
&lt;br&gt;&amp;nbsp; atomic operations, scans and so on. A few masks are in MI code and some
&lt;br&gt;&amp;nbsp; will #error if MAXCPUS &amp;gt; 32.
&lt;br&gt;&lt;br&gt;- 32-bit systems don't have enough kernel address space to support large
&lt;br&gt;&amp;nbsp; numbers of cores effectively, although i386 could be interesting as a
&lt;br&gt;&amp;nbsp; bring-up target with an emulator like bochs.
&lt;br&gt;&lt;br&gt;- The x86 apic code currently supports 255 cores max (assuming 255 cores
&lt;br&gt;&amp;nbsp; plus 1 IOAPIC). x2apic support may be required in the future. As far as I
&lt;br&gt;&amp;nbsp; understand it, future systems may have cores that can only be addressed
&lt;br&gt;&amp;nbsp; with the x2apic's 32-bit IDs.
&lt;br&gt;&lt;br&gt;- The mutex/rwlock code will not scale to large numbers of cores because it
&lt;br&gt;&amp;nbsp; does a linear scan of the CPU list. There are memory order and data
&lt;br&gt;&amp;nbsp; structure visibility issues to be overcome.
&lt;br&gt;&lt;br&gt;- There are areas where the scheduler could use incremental improvement: it
&lt;br&gt;&amp;nbsp; does not know about NUMA, does periodic scans of the CPU list, etc.
&lt;br&gt;&lt;br&gt;Clearly this does not cover stuff like scalability of device drivers,
&lt;br&gt;networking, vm system and whatnot, does not discuss virtualization /
&lt;br&gt;partitioning, it's just the low-level issues that I am aware of given the
&lt;br&gt;current set of stuff that we have in the kernel.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%3E32-core-support-tp22670926p22670926.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22192618</id>
	<title>Contact List of Neurologists and much more</title>
	<published>2009-02-24T13:26:03Z</published>
	<updated>2009-02-24T13:26:03Z</updated>
	<author>
		<name>Elbert Mccall</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Currently in Practice: &amp;nbsp;Medical Doctors in the United States 
&lt;br&gt;&lt;br&gt;788,952 in total &amp;lt;&amp;gt; 17,717 emails
&lt;br&gt;&lt;br&gt;Medical Doctor in over 34 specialties
&lt;br&gt;&lt;br&gt;Sort by over a dozen different fields
&lt;br&gt;&lt;br&gt;This week's special price = &amp;nbsp;$395
&lt;br&gt;&lt;br&gt;&lt;br&gt;{}{}{} If you order by the end of the week you can take all the items below for fr ee {}{}{}
&lt;br&gt;&lt;br&gt;+ Contact List of American Pharma Companies
&lt;br&gt;&amp;nbsp; 47,000 personal emails and names of decision makers
&lt;br&gt;&lt;br&gt;+ Listing of US Hospitals
&lt;br&gt;&amp;nbsp; 23,000 Admins in more than 7,000 hospitals {a $399 value]
&lt;br&gt;&lt;br&gt;+ Listing of US Dentists
&lt;br&gt;&amp;nbsp; More than half a million listings [worth $499 alone!]
&lt;br&gt;&lt;br&gt;+ American Chiropractors Contact List
&lt;br&gt;&amp;nbsp; Over than 100k chiropractors practicing in America
&lt;br&gt;&lt;br&gt;Email us at: &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22192618&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Molina@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&lt;br&gt;valid until &amp;nbsp;February 28
&lt;br&gt;&lt;br&gt;&lt;br&gt;this is the link which will purge you from any futures please send an email to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22192618&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;xyz@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Contact-List-of-Neurologists-and-much-more-tp22192618p22192618.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18178626</id>
	<title>Physician List</title>
	<published>2008-06-29T02:09:40Z</published>
	<updated>2008-06-29T02:09:40Z</updated>
	<author>
		<name>Eloise O Caldwell</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&lt;br&gt;Here's what we're offering for this week:
&lt;br&gt;&lt;br&gt;Certified Physicians in the USA 
&lt;br&gt;&lt;br&gt;788,465 in total * 17,638 emails
&lt;br&gt;&lt;br&gt;Coverage in many different areas of medicine such as Endocrinology, Pathology, Urology, Neurology, Plastic Surgery, Psychiatry, Cardiology and much more 
&lt;br&gt;&lt;br&gt;Over a dozen sortable fields
&lt;br&gt;&lt;br&gt;&lt;br&gt;List of American Pharma Companies
&lt;br&gt;47,000 personal emails and names of decision makers
&lt;br&gt;&lt;br&gt;Hospital Facilities in the USA
&lt;br&gt;Full data for all the major positions in more than 7k facilities
&lt;br&gt;&lt;br&gt;American Dentists
&lt;br&gt;597,000 dentists and dental services ( a $350 value!) 
&lt;br&gt;&lt;br&gt;Chiropractors in the USA
&lt;br&gt;100,000 Chiropractors in the USA (worth $250 alone)
&lt;br&gt;&lt;br&gt;&lt;br&gt;This week only you pay only: 
&lt;br&gt;$392 for all above data
&lt;br&gt;&lt;br&gt;send email to: &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18178626&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;richard.m.harris_md@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&lt;br&gt;this offer is only valid until July 05 2008
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Physician-List-tp18178626p18178626.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17793109</id>
	<title>Uma frase e uma sugestao</title>
	<published>2008-06-11T21:14:05Z</published>
	<updated>2008-06-11T21:14:05Z</updated>
	<author>
		<name>Paula Grassi</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp;,
&lt;br&gt;&lt;br&gt;Saudaçoes. Tenho certeza que conhece a frase que diz: &amp;quot;Propaganda e a alma do 
&lt;br&gt;negocio&amp;quot;. Por isso estou escrevendo para te lembrar da grande utilidade do email 
&lt;br&gt;marketing para a divulgaçao do seu negocio.
&lt;br&gt;&lt;br&gt;Os &amp;nbsp; estao a sua disposiçao, mas estao tambem a disposiçao dos seus concorrentes. 
&lt;br&gt;Por isso conquiste primeiro este mercado antes que seja conquistado por outras 
&lt;br&gt;pessoas. Que tal iniciar a sua campanha esta semana?
&lt;br&gt;&lt;br&gt;Cordialmente,
&lt;br&gt;Paula Grassi
&lt;br&gt;&lt;a href=&quot;http://www.divulgaemails.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.divulgaemails.com&lt;/a&gt;&lt;br&gt;(0xx71)3491-9005 ou (0xx71)9932-0158(24h)
&lt;br&gt;MSN e SKYPE: dvgmail
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Uma-frase-e-uma-sugestao-tp17793109p17793109.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17387444</id>
	<title>adicionar áudio Web Audio Plus</title>
	<published>2008-05-21T15:53:45Z</published>
	<updated>2008-05-21T15:53:45Z</updated>
	<author>
		<name>Audio Marketing</name>
	</author>
	<content type="html">adicionar áudio Web Audio Plus, som em flash Web Audio Plus, voz música áudio 
&lt;br&gt;marketing Web Audio Plus, mensagens de voz como colocar audio em sites, adicionar 
&lt;br&gt;áudio inserir som, Narração para sites Web Audio Plus, adicionar áudio Web Audio 
&lt;br&gt;Plus, site com som voz no site.
&lt;br&gt;&lt;br&gt;Visite: 
&lt;br&gt;&lt;a href=&quot;http://www.audiomarketing10.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.audiomarketing10.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;inserir som Web Audio Plus, mensagens de voz Web Audio Plus, software para inserir 
&lt;br&gt;inserir som, narração fala como colocar audio em sites, adicionar áudio Áudio 
&lt;br&gt;em sites, narração fala Web Audio Plus, audio no site Narração para sites. narração 
&lt;br&gt;de audio em sites som em flash
&lt;br&gt;&lt;br&gt;Visite: 
&lt;br&gt;&lt;a href=&quot;http://www.audiomarketing10.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.audiomarketing10.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;narração de audio em sites som em flash som em flash Web Audio Plus, voz música 
&lt;br&gt;áudio marketing Web Audio Plus, mensagens de voz como colocar audio em sites, 
&lt;br&gt;adicionar áudio inserir som, Narração para sites Web Audio Plus, adicionar áudio 
&lt;br&gt;Web Audio Plus, site com som voz no site. inserir som Web Audio Plus, mensagens 
&lt;br&gt;de voz Web Audio Plus, software para inserir inserir som, narração fala como 
&lt;br&gt;colocar audio em sites, adicionar áudio Áudio em sites, narração fala Web Audio 
&lt;br&gt;Plus, audio no site Narração para sites.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/adicionar-%C3%A1udio-Web-Audio-Plus-tp17387444p17387444.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14790575</id>
	<title>new xemacs segfault, can anyone reproduce this?</title>
	<published>2008-01-13T12:21:15Z</published>
	<updated>2008-01-13T12:21:15Z</updated>
	<author>
		<name>Anthony Mallet</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;Since about 2-3 monthes, my xemacs is segfaulting from times to times
&lt;br&gt;under -current SMP. Should I say this never (ever) happened before and I
&lt;br&gt;did not change xemacs version, etc. (although everything has been
&lt;br&gt;recompiled with current userland).
&lt;br&gt;&lt;br&gt;Today I finally isolated some reproducible behaviour, which disapear when
&lt;br&gt;I put all but one CPU offline (thus my posting in this list).
&lt;br&gt;I would like to know if some of you can also reproduce this problem (you
&lt;br&gt;need to 'make extract' in pkgsrc/editor/xemacs):
&lt;br&gt;&lt;br&gt;ficus[~]# uname -a
&lt;br&gt;NetBSD ficus 4.99.49 NetBSD 4.99.49 (FICUS) #96: Sun Jan 13 17:58:31 CET 2008 &amp;nbsp;troot@ficus:/usr/obj/sys/arch/i386/compile/FICUS i386
&lt;br&gt;&lt;br&gt;ficus[~]# cpuctl list
&lt;br&gt;ID &amp;nbsp; Unbound LWPs Interrupts &amp;nbsp; &amp;nbsp; Last change
&lt;br&gt;---- ------------ -------------- ----------------------------
&lt;br&gt;0 &amp;nbsp; &amp;nbsp;online &amp;nbsp; &amp;nbsp; &amp;nbsp; intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 19:50:51 2008
&lt;br&gt;3 &amp;nbsp; &amp;nbsp;online &amp;nbsp; &amp;nbsp; &amp;nbsp; intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 21:01:23 2008
&lt;br&gt;2 &amp;nbsp; &amp;nbsp;online &amp;nbsp; &amp;nbsp; &amp;nbsp; intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 21:01:24 2008
&lt;br&gt;1 &amp;nbsp; &amp;nbsp;online &amp;nbsp; &amp;nbsp; &amp;nbsp; intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 21:01:25 2008
&lt;br&gt;&lt;br&gt;And as a regular user with X display:
&lt;br&gt;ficus[~] &amp;gt; xemacs -vanilla -eval '(setq progress-feedback-use-echo-area t)' -eval '(font-lock-mode)' /usr/pkgsrc/editors/xemacs/work/xemacs-21.4.17/src/extents.c
&lt;br&gt;&lt;br&gt;xemacs should segfault 9 times out of 10, and at least exhibit wrong
&lt;br&gt;keyword decoration.
&lt;br&gt;&lt;br&gt;With 3 CPU offline the problem disapears:
&lt;br&gt;ficus[~]# cpuctl list
&lt;br&gt;ID &amp;nbsp; Unbound LWPs Interrupts &amp;nbsp; &amp;nbsp; Last change
&lt;br&gt;---- ------------ -------------- ----------------------------
&lt;br&gt;0 &amp;nbsp; &amp;nbsp;online &amp;nbsp; &amp;nbsp; &amp;nbsp; intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 19:50:51 2008
&lt;br&gt;3 &amp;nbsp; &amp;nbsp;offline &amp;nbsp; &amp;nbsp; &amp;nbsp;intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 21:11:42 2008
&lt;br&gt;2 &amp;nbsp; &amp;nbsp;offline &amp;nbsp; &amp;nbsp; &amp;nbsp;intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 21:11:43 2008
&lt;br&gt;1 &amp;nbsp; &amp;nbsp;offline &amp;nbsp; &amp;nbsp; &amp;nbsp;intr &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sun Jan 13 21:11:44 2008
&lt;br&gt;&lt;br&gt;Since xemacs is single-threaded and this used to work fine, I would not
&lt;br&gt;blame xemacs too fast. And I also tested with xemacs-21.4.21 and
&lt;br&gt;xemacs-21.5.27, same thing ...
&lt;br&gt;&lt;br&gt;Do you think this can be a problem in the current kernel?
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Cheers,
&lt;br&gt;Anthony
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/new-xemacs-segfault%2C-can-anyone-reproduce-this--tp14790575p14790575.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13445467</id>
	<title>cpu1: failed to become ready</title>
	<published>2007-10-27T11:26:21Z</published>
	<updated>2007-10-27T11:26:21Z</updated>
	<author>
		<name>Marcelo Schmidt-2</name>
	</author>
	<content type="html">Problem:
&lt;br&gt;cpu1 at mainbus0: apid 6 (application processor)
&lt;br&gt;cpu1: starting
&lt;br&gt;cpu1: failed to become ready
&lt;br&gt;&lt;br&gt;The system has 2 Xeon 2.66Mhz with HT. &amp;nbsp;Randomly one cpu or another might
&lt;br&gt;fail become ready between reboots. &amp;nbsp;Anyone had found this issue before?
&lt;br&gt;&lt;br&gt;NetBSD moon 4.0_RC3 NetBSD 4.0_RC3 (GENERIC.MP) #0: Tue Oct 16 01:41:36 PDT 2007 &amp;nbsp;builds@wb34:/home/builds/ab/netbsd-4-0-RC3/i386/200710160011Z-obj/home/builds/ab/netbsd-4-0-RC3/src/sys/arch/i386/compile/GENERIC.MP i386
&lt;br&gt;&lt;br&gt;Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
&lt;br&gt;&amp;nbsp; &amp;nbsp; 2006, 2007
&lt;br&gt;&amp;nbsp; &amp;nbsp; The NetBSD Foundation, Inc. &amp;nbsp;All rights reserved.
&lt;br&gt;Copyright (c) 1982, 1986, 1989, 1991, 1993
&lt;br&gt;&amp;nbsp; &amp;nbsp; The Regents of the University of California. &amp;nbsp;All rights reserved.
&lt;br&gt;&lt;br&gt;NetBSD 4.0_RC3 (GENERIC.MP) #0: Tue Oct 16 01:41:36 PDT 2007
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; builds@wb34:/home/builds/ab/netbsd-4-0-RC3/i386/200710160011Z-obj/home/builds/ab/netbsd-4-0-RC3/src/sys/arch/i386/compile/GENERIC.MP
&lt;br&gt;total memory = 3071 MB
&lt;br&gt;rbus: rbus_min_start set to 0xc0000000
&lt;br&gt;avail memory = 3005 MB
&lt;br&gt;timecounter: Timecounters tick every 10.000 msec
&lt;br&gt;timecounter: Timecounter &amp;quot;i8254&amp;quot; frequency 1193182 Hz quality 100
&lt;br&gt;BIOS32 rev. 0 found at 0xfd6e0
&lt;br&gt;mainbus0 (root)
&lt;br&gt;cpu0 at mainbus0: apid 0 (boot processor)
&lt;br&gt;cpu0: Intel Xeon (686-class), 2657.98 MHz, id 0xf25
&lt;br&gt;cpu0: features bfebfbff&amp;lt;FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR&amp;gt;
&lt;br&gt;cpu0: features bfebfbff&amp;lt;PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX&amp;gt;
&lt;br&gt;cpu0: features bfebfbff&amp;lt;FXSR,SSE,SSE2,SS,HTT,TM,SBF&amp;gt;
&lt;br&gt;cpu0: features2 4400&amp;lt;CID,xTPR&amp;gt;
&lt;br&gt;cpu0: &amp;quot;Intel(R) Xeon(TM) CPU 2.66GHz&amp;quot;
&lt;br&gt;cpu0: I-cache 12K uOp cache 8-way, D-cache 8 KB 64B/line 4-way
&lt;br&gt;cpu0: L2 cache 512 KB 64B/line 8-way
&lt;br&gt;cpu0: ITLB 4K/4M: 64 entries
&lt;br&gt;cpu0: DTLB 4K/4M: 64 entries
&lt;br&gt;cpu0: enabling thermal monitor 1 ... enabled.
&lt;br&gt;cpu0: calibrating local timer
&lt;br&gt;cpu0: apic clock running at 132 MHz
&lt;br&gt;cpu0: 16 page colors
&lt;br&gt;cpu1 at mainbus0: apid 6 (application processor)
&lt;br&gt;cpu1: starting
&lt;br&gt;cpu1: failed to become ready
&lt;br&gt;cpu2 at mainbus0: apid 1 (application processor)
&lt;br&gt;cpu2: starting
&lt;br&gt;cpu2: Intel Xeon (686-class), 2657.82 MHz, id 0xf25
&lt;br&gt;cpu2: features bfebfbff&amp;lt;FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR&amp;gt;
&lt;br&gt;cpu2: features bfebfbff&amp;lt;PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX&amp;gt;
&lt;br&gt;cpu2: features bfebfbff&amp;lt;FXSR,SSE,SSE2,SS,HTT,TM,SBF&amp;gt;
&lt;br&gt;cpu2: features2 4400&amp;lt;CID,xTPR&amp;gt;
&lt;br&gt;cpu2: &amp;quot;Intel(R) Xeon(TM) CPU 2.66GHz&amp;quot;
&lt;br&gt;cpu2: I-cache 12K uOp cache 8-way, D-cache 8 KB 64B/line 4-way
&lt;br&gt;cpu2: L2 cache 512 KB 64B/line 8-way
&lt;br&gt;cpu2: ITLB 4K/4M: 64 entries
&lt;br&gt;cpu2: DTLB 4K/4M: 64 entries
&lt;br&gt;cpu2: using thermal monitor 1
&lt;br&gt;cpu3 at mainbus0: apid 7 (application processor)
&lt;br&gt;cpu3: starting
&lt;br&gt;cpu3: Intel Xeon (686-class), 2657.83 MHz, id 0xf25
&lt;br&gt;cpu3: features bfebfbff&amp;lt;FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR&amp;gt;
&lt;br&gt;cpu3: features bfebfbff&amp;lt;PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX&amp;gt;
&lt;br&gt;cpu3: features bfebfbff&amp;lt;FXSR,SSE,SSE2,SS,HTT,TM,SBF&amp;gt;
&lt;br&gt;cpu3: features2 4400&amp;lt;CID,xTPR&amp;gt;
&lt;br&gt;cpu3: &amp;quot;Intel(R) Xeon(TM) CPU 2.66GHz&amp;quot;
&lt;br&gt;cpu3: I-cache 12K uOp cache 8-way, D-cache 8 KB 64B/line 4-way
&lt;br&gt;cpu3: L2 cache 512 KB 64B/line 8-way
&lt;br&gt;cpu3: ITLB 4K/4M: 64 entries
&lt;br&gt;cpu3: DTLB 4K/4M: 64 entries
&lt;br&gt;cpu3: using thermal monitor 1
&lt;br&gt;ioapic0 at mainbus0 apid 2 (I/O APIC)
&lt;br&gt;ioapic0: pa 0xfec00000, version 20, 24 pins
&lt;br&gt;ioapic1 at mainbus0 apid 3 (I/O APIC)
&lt;br&gt;ioapic1: pa 0xfec80000, version 20, 24 pins
&lt;br&gt;ioapic2 at mainbus0 apid 4 (I/O APIC)
&lt;br&gt;ioapic2: pa 0xfec80400, version 20, 24 pins
&lt;br&gt;acpi0 at mainbus0: Advanced Configuration and Power Interface
&lt;br&gt;acpi0: using Intel ACPI CA subsystem version 20060217
&lt;br&gt;acpi0: X/RSDT: OemId &amp;lt;PTLTD , &amp;nbsp;RSDT &amp;nbsp;,06040000&amp;gt;, AslId &amp;lt; LTP,00000000&amp;gt;
&lt;br&gt;acpi0: SCI interrupting at int 9
&lt;br&gt;acpi0: fixed-feature power button present
&lt;br&gt;timecounter: Timecounter &amp;quot;ACPI-Fast&amp;quot; frequency 3579545 Hz quality 1000
&lt;br&gt;ACPI-Fast 24-bit timer
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;ACPI Object Type 'Processor' (0x0c) at acpi0 not configured
&lt;br&gt;PNP0A03 [PCI/PCI-X Host Bridge] at acpi0 not configured
&lt;br&gt;PNP0C0F [PCI interrupt link device] at acpi0 not configured
&lt;br&gt;PNP0C0F [PCI interrupt link device] at acpi0 not configured
&lt;br&gt;PNP0C0F [PCI interrupt link device] at acpi0 not configured
&lt;br&gt;PNP0C0F [PCI interrupt link device] at acpi0 not configured
&lt;br&gt;PNP0C0F [PCI interrupt link device] at acpi0 not configured
&lt;br&gt;PNP0C0F [PCI interrupt link device] at acpi0 not configured
&lt;br&gt;INT0800 [Intel FWH Random Number Generator] at acpi0 not configured
&lt;br&gt;PNP0C02 [Plug and Play motherboard register resources] at acpi0 not configured
&lt;br&gt;PNP0200 [AT DMA Controller] at acpi0 not configured
&lt;br&gt;npx1 at acpi0 (PNP0C04)
&lt;br&gt;npx1: io 0xf0-0xfe irq 13
&lt;br&gt;npx1: reported by CPUID; using exception 16
&lt;br&gt;PNP0000 [AT Interrupt Controller] at acpi0 not configured
&lt;br&gt;PNP0B00 [AT Real-Time Clock] at acpi0 not configured
&lt;br&gt;pcppi1 at acpi0 (PNP0800)
&lt;br&gt;pcppi1: io 0x61
&lt;br&gt;pcppi1: children must have an explicit unit
&lt;br&gt;midi0 at pcppi1: PC speaker (CPU-intensive output)
&lt;br&gt;sysbeep0 at pcppi1
&lt;br&gt;attimer1 at acpi0 (PNP0100): AT Timer
&lt;br&gt;attimer1: io 0x40-0x43 irq 0
&lt;br&gt;PNP0A06 [Generic Container Device] at acpi0 not configured
&lt;br&gt;pckbc1 at acpi0 (PNP0303): kbd port
&lt;br&gt;pckbc1: io 0x60,0x64 irq 1
&lt;br&gt;com3 at acpi0 (PNP0501-1)
&lt;br&gt;com3: io 0x3f8-0x3ff irq 4
&lt;br&gt;com3: ns16550a, working fifo
&lt;br&gt;com3: console
&lt;br&gt;com4 at acpi0 (PNP0501-2)
&lt;br&gt;com4: io 0x2f8-0x2ff irq 3
&lt;br&gt;com4: ns16550a, working fifo
&lt;br&gt;acpibut0 at acpi0 (PNP0C0C): ACPI Power Button
&lt;br&gt;pcppi1: attached to attimer1
&lt;br&gt;pci0 at mainbus0 bus 0: configuration mode 1
&lt;br&gt;pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
&lt;br&gt;pchb0 at pci0 dev 0 function 0
&lt;br&gt;pchb0: Intel E7501 MCH Host (rev. 0x01)
&lt;br&gt;Intel E7500 MCH DRAM Controller (undefined subclass 0x00, revision 0x01) at pci0 dev 0 function 1 not configured
&lt;br&gt;ppb0 at pci0 dev 2 function 0: Intel E7500 MCH HI_B vppb 1 (rev. 0x01)
&lt;br&gt;pci1 at ppb0 bus 1
&lt;br&gt;pci1: i/o space, memory space enabled
&lt;br&gt;Intel 82870P2 P64H2 IOxAPIC (interrupt system, interface 0x20, revision 0x04) at pci1 dev 28 function 0 not configured
&lt;br&gt;ppb1 at pci1 dev 29 function 0: Intel 82870P2 P64H2 PCI-PCI Bridge (rev. 0x04)
&lt;br&gt;pci2 at ppb1 bus 2
&lt;br&gt;pci2: i/o space, memory space enabled
&lt;br&gt;Intel 82870P2 P64H2 IOxAPIC (interrupt system, interface 0x20, revision 0x04) at pci1 dev 30 function 0 not configured
&lt;br&gt;ppb2 at pci1 dev 31 function 0: Intel 82870P2 P64H2 PCI-PCI Bridge (rev. 0x04)
&lt;br&gt;pci3 at ppb2 bus 3
&lt;br&gt;pci3: i/o space, memory space enabled
&lt;br&gt;twe0 at pci3 dev 1 function 0: 3ware Escalade
&lt;br&gt;twe0: interrupting at ioapic2 pin 0 (irq 10)
&lt;br&gt;twe0: 4 ports, Firmware FE7X 1.05.00.056, BIOS BE7X 1.08.00.046
&lt;br&gt;twe0: Monitor ME7X 1.01.00.038, PCB Rev4 &amp;nbsp; &amp;nbsp;, Achip 3.20 &amp;nbsp; &amp;nbsp;, Pchip 1.30-66 
&lt;br&gt;twe0: port 0: Maxtor 6Y200P0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 194481 MB
&lt;br&gt;twe0: port 1: Maxtor 6Y200P0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 194481 MB
&lt;br&gt;twe0: port 2: Maxtor 6Y200P0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 194481 MB
&lt;br&gt;twe0: port 3: Maxtor 6Y200P0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 194481 MB
&lt;br&gt;ld0 at twe0 unit 0: TwinStor, status: Normal
&lt;br&gt;ld0: 189 GB, 24792 cyl, 255 head, 63 sec, 512 bytes/sect x 398295040 sectors
&lt;br&gt;ld1 at twe0 unit 2: TwinStor, status: Normal
&lt;br&gt;ld1: 189 GB, 24792 cyl, 255 head, 63 sec, 512 bytes/sect x 398295040 sectors
&lt;br&gt;Intel E7500 MCH HI_B vppb 2 (undefined subclass 0x00, revision 0x01) at pci0 dev 2 function 1 not configured
&lt;br&gt;uhci0 at pci0 dev 29 function 0: Intel 82801CA USB Controller (rev. 0x02)
&lt;br&gt;uhci0: interrupting at ioapic0 pin 16 (irq 10)
&lt;br&gt;usb0 at uhci0: USB revision 1.0
&lt;br&gt;uhub0 at usb0
&lt;br&gt;uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
&lt;br&gt;uhub0: 2 ports with 2 removable, self powered
&lt;br&gt;uhci1 at pci0 dev 29 function 1: Intel 82801CA USB Controller (rev. 0x02)
&lt;br&gt;uhci1: interrupting at ioapic0 pin 19 (irq 5)
&lt;br&gt;usb1 at uhci1: USB revision 1.0
&lt;br&gt;uhub1 at usb1
&lt;br&gt;uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
&lt;br&gt;uhub1: 2 ports with 2 removable, self powered
&lt;br&gt;uhci2 at pci0 dev 29 function 2: Intel 82801CA USB Controller (rev. 0x02)
&lt;br&gt;uhci2: interrupting at ioapic0 pin 18 (irq 10)
&lt;br&gt;usb2 at uhci2: USB revision 1.0
&lt;br&gt;uhub2 at usb2
&lt;br&gt;uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
&lt;br&gt;uhub2: 2 ports with 2 removable, self powered
&lt;br&gt;ppb3 at pci0 dev 30 function 0: Intel 82801BA Hub-PCI Bridge (rev. 0x42)
&lt;br&gt;pci4 at ppb3 bus 4
&lt;br&gt;pci4: i/o space, memory space enabled
&lt;br&gt;vga1 at pci4 dev 3 function 0: ATI Technologies Rage XL (rev. 0x27)
&lt;br&gt;wsdisplay0 at vga1 kbdmux 1
&lt;br&gt;wsmux1: connecting to wsdisplay0
&lt;br&gt;fxp0 at pci4 dev 4 function 0: i82550 Ethernet, rev 13
&lt;br&gt;fxp0: interrupting at ioapic0 pin 20 (irq 10)
&lt;br&gt;fxp0: Ethernet address 00:02:b3:d8:b8:9c
&lt;br&gt;inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4
&lt;br&gt;inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
&lt;br&gt;wm0 at pci4 dev 5 function 0: Intel i82540EM 1000BASE-T Ethernet, rev. 2
&lt;br&gt;wm0: interrupting at ioapic0 pin 23 (irq 11)
&lt;br&gt;wm0: 32-bit 33MHz PCI bus
&lt;br&gt;wm0: 64 word (6 address bits) MicroWire EEPROM
&lt;br&gt;wm0: Ethernet address 00:02:b3:d8:b9:1d
&lt;br&gt;makphy0 at wm0 phy 1: Marvell 88E1011 Gigabit PHY, rev. 3
&lt;br&gt;makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
&lt;br&gt;pcib0 at pci0 dev 31 function 0
&lt;br&gt;pcib0: Intel 82801CA LPC Interface (rev. 0x02)
&lt;br&gt;piixide0 at pci0 dev 31 function 1
&lt;br&gt;piixide0: Intel 82801CA IDE Controller (ICH3) (rev. 0x02)
&lt;br&gt;piixide0: bus-master DMA support present
&lt;br&gt;piixide0: primary channel configured to compatibility mode
&lt;br&gt;piixide0: primary channel interrupting at ioapic0 pin 14 (irq 14)
&lt;br&gt;atabus0 at piixide0 channel 0
&lt;br&gt;piixide0: secondary channel configured to compatibility mode
&lt;br&gt;piixide0: secondary channel interrupting at ioapic0 pin 15 (irq 15)
&lt;br&gt;atabus1 at piixide0 channel 1
&lt;br&gt;Intel 82801CA SMBus Controller (SMBus serial bus, revision 0x02) at pci0 dev 31 function 3 not configured
&lt;br&gt;isa0 at pcib0
&lt;br&gt;isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
&lt;br&gt;isapnp0: no ISA Plug 'n Play devices found
&lt;br&gt;ioapic0: enabling
&lt;br&gt;ioapic1: enabling
&lt;br&gt;ioapic2: enabling
&lt;br&gt;timecounter: Timecounter &amp;quot;clockinterrupt&amp;quot; frequency 100 Hz quality 0
&lt;br&gt;Kernelized RAIDframe activated
&lt;br&gt;boot device: ld0
&lt;br&gt;root on ld0a dumps on ld0b
&lt;br&gt;root file system type: ffs
&lt;br&gt;cpu2: CPU 1 running
&lt;br&gt;cpu3: CPU 7 running
&lt;br&gt;wsdisplay0: screen 1 added (80x25, vt100 emulation)
&lt;br&gt;wsdisplay0: screen 2 added (80x25, vt100 emulation)
&lt;br&gt;wsdisplay0: screen 3 added (80x25, vt100 emulation)
&lt;br&gt;wsdisplay0: screen 4 added (80x25, vt100 emulation)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;-m
&lt;br&gt;&lt;br&gt;==========================================================================
&lt;br&gt;pub &amp;nbsp; 2048R/D149C1B5 2006-05-08
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Key fingerprint = 4DD5 DEBA 28BF FDDA 09EC &amp;nbsp;3C6B 8504 4FB7 D149 C1B5
&lt;br&gt;uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Marcelo R. Schmidt (SavvyByte LLC) &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=13445467&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mschmidt@...&lt;/a&gt;&amp;gt;
&lt;br&gt;gpg --keyserver pgp.mit.edu --recv-keys 0xD149C1B5
&lt;br&gt;==========================================================================
&lt;br&gt;&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;attachment0&lt;/strong&gt; (489 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/13445467/0/attachment0&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/cpu1%3A-failed-to-become-ready-tp13445467p13445467.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13083677</id>
	<title>Our price $129 Autodesk Autocad 2008</title>
	<published>2007-10-07T08:59:20Z</published>
	<updated>2007-10-07T08:59:20Z</updated>
	<author>
		<name>Margo Abernathy</name>
	</author>
	<content type="html">save -save $6590.05 our price $129.95 autocad 2008
&lt;br&gt;&lt;a href=&quot;http://www.makosh.cn&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.makosh.cn&lt;/a&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Our-price-%24129-Autodesk-Autocad-2008-tp13083677p13083677.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13082567</id>
	<title>obtain a macro body part Humberto</title>
	<published>2007-10-07T06:50:55Z</published>
	<updated>2007-10-07T06:50:55Z</updated>
	<author>
		<name>Carlton Bryan</name>
	</author>
	<content type="html">largish phallus for Lilian
&lt;br&gt;&lt;a href=&quot;http://rebanell.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://rebanell.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/obtain-a-macro-body-part-Humberto-tp13082567p13082567.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13027594</id>
	<title>softintr running on boot CPU only?</title>
	<published>2007-10-03T13:17:36Z</published>
	<updated>2007-10-03T13:17:36Z</updated>
	<author>
		<name>Ming Lei-2</name>
	</author>
	<content type="html">&lt;br&gt;I am running 3.0.1 kernel on Dell SC430(two pentium cores) and run 
&lt;br&gt;vmstats saw softinterrupt only on boot CPU. Is it the way that the 3.0.1 
&lt;br&gt;kernel code supported to do? How about 4.0 and upcoming 5.0?
&lt;br&gt;&lt;br&gt;There is really not much documents on SMP/APCI implementation on x86 
&lt;br&gt;besides a few email threads. Does someone know more can share with me?
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;Ming
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/softintr-running-on-boot-CPU-only--tp13027594p13027594.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-12204267</id>
	<title>Looking for help with high volume MySQL</title>
	<published>2007-08-17T11:48:10Z</published>
	<updated>2007-08-17T11:48:10Z</updated>
	<author>
		<name>John Klos</name>
	</author>
	<content type="html">Hi, all,
&lt;br&gt;&lt;br&gt;I'm looking for help with setting up NetBSD machines in a MySQL cluster. I 
&lt;br&gt;have lots of questions, such as:
&lt;br&gt;&lt;br&gt;Is SMP efficient enough with NetBSD that a single 4, 6, or 8 processor 
&lt;br&gt;system would be as capable or perhaps more capable than, say, 2, 3, or 4 
&lt;br&gt;separate dual processor systems?
&lt;br&gt;&lt;br&gt;Why, on an amd64 system with 4 gigs of memory and MySQL ulimited as such:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ulimit -n 4096
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ulimit -d 1572864
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ulimit -n 600
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ulimit -s 32768
&lt;br&gt;&lt;br&gt;do I sometimes get out of memory errors from MySQL? The total size of 
&lt;br&gt;MySQL seems to grow to about 1 gig, but never any larger, and I've had to 
&lt;br&gt;lower memory usage in my.cnf.
&lt;br&gt;&lt;br&gt;Why is my.cnf in /usr/local/ and not in /usr/local/etc/?
&lt;br&gt;&lt;br&gt;Does anyone have recommendations for setting up an arbitrary number of 
&lt;br&gt;replication slaves easily? Experience and suggestions? What's the best way 
&lt;br&gt;to benchmark two machines against each other? AMD or Intel?
&lt;br&gt;&lt;br&gt;Any suggestions or help would be most welcome.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;John Klos
&lt;br&gt;-- 
&lt;br&gt;The good Christian should beware of mathematicians and all those who
&lt;br&gt;make empty prophecies. &amp;nbsp;The danger already exists that mathematicians
&lt;br&gt;have made a covenant with the devil to darken the spirit and confine
&lt;br&gt;man in the bonds of Hell.
&lt;br&gt;&amp;nbsp;		-- St. Augustine
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Looking-for-help-with-high-volume-MySQL-tp12204267p12204267.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8817481</id>
	<title>Re: MP safe syscall changes</title>
	<published>2007-02-05T15:29:54Z</published>
	<updated>2007-02-05T15:29:54Z</updated>
	<author>
		<name>Perry E. Metzger</name>
	</author>
	<content type="html">&lt;br&gt;Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8817481&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; I just made a bunch more syscalls MP safe on the newlock2 branch, and ran a
&lt;br&gt;&amp;gt; quick test on this machine: 4 x 700MHz P-III Xeon, 1MB L2 cache per CPU, 2GB
&lt;br&gt;&amp;gt; RAM. Cleaning out a clean source tree with make -j16 cleandir:
&lt;br&gt;&lt;br&gt;I'm happy (and surprised) that there is a speedup here. Consider that
&lt;br&gt;this is not an embarrassingly parallel task: removing lots of files is
&lt;br&gt;ultimately bottlenecked on the disk and not something where we would
&lt;br&gt;expect much parallel speedup.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; real &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;system
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; MP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-9% &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -14%
&lt;br&gt;&amp;gt; UP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-0.5% &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +3.5%
&lt;br&gt;&lt;br&gt;I would be quite interested in seeing figures for building the world
&lt;br&gt;in both the current MP and newlock2 MP cases. *That* might have some
&lt;br&gt;interesting opportunities for parallelism on a machine with 2G of
&lt;br&gt;ram. Do knock up the number of vnodes to around 2^17 or 2^18th before
&lt;br&gt;starting, though, or you might end up a bit i/o bound with that much
&lt;br&gt;parallelism.
&lt;br&gt;&lt;br&gt;Perry
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MP-safe-syscall-changes-tp8809313p8817481.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8809313</id>
	<title>MP safe syscall changes</title>
	<published>2007-02-05T08:14:18Z</published>
	<updated>2007-02-05T08:14:18Z</updated>
	<author>
		<name>Andrew Doran-7</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I just made a bunch more syscalls MP safe on the newlock2 branch, and ran a
&lt;br&gt;quick test on this machine: 4 x 700MHz P-III Xeon, 1MB L2 cache per CPU, 2GB
&lt;br&gt;RAM. Cleaning out a clean source tree with make -j16 cleandir:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; real &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;user &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;system
&lt;br&gt;&lt;br&gt;MP, newlock2 &amp;nbsp; &amp;nbsp;103.55s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 174.51s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 246.26s
&lt;br&gt;MP, HEAD &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;114.21s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 175.46s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 287.01s
&lt;br&gt;UP, newlock2 &amp;nbsp; &amp;nbsp;198.34s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 152.67s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 61.30s
&lt;br&gt;UP, HEAD &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;199.18s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 150.60s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 59.20s
&lt;br&gt;&lt;br&gt;The results aren't astounding and are not particularly accurate (system and
&lt;br&gt;user time are subject to sampling error), but the indicated difference
&lt;br&gt;relative to HEAD is:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; real &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;system
&lt;br&gt;&lt;br&gt;MP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-9% &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -14%
&lt;br&gt;UP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-0.5% &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +3.5%
&lt;br&gt;&lt;br&gt;At a guess, part of the additional two seconds system time in the UP case is
&lt;br&gt;a result of all the jumping through hoops that needs to be done to support
&lt;br&gt;both locking against interrupt handlers and LWPs. With interrupts as threads
&lt;br&gt;that cost can be eliminated..
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Andrew
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MP-safe-syscall-changes-tp8809313p8809313.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8465678</id>
	<title>Video Aulas, cursos em vídeo. Aprenda a fazer tudo com video cursos</title>
	<published>2007-01-20T06:20:31Z</published>
	<updated>2007-01-20T06:20:31Z</updated>
	<author>
		<name>Marina Costa</name>
	</author>
	<content type="html">Video Aulas para download, cursos em vídeo. Vários assuntos. Aprenda a
&lt;br&gt;fazer sushi, curso de Yoga em vído, video aula de sedução, video curso de
&lt;br&gt;massagem sensual:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.gueb.de/videocursosbrasil&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gueb.de/videocursosbrasil&lt;/a&gt;&lt;br&gt;&lt;br&gt;Video cursos de informática, ginástica, artes marciais. Tudo em cursos
&lt;br&gt;para download. Vídeos com entrega imediata. Aulas práticas e
&lt;br&gt;demonstrativas. Plataforma para e learning. Ensino a distancia.
&lt;br&gt;Treinamentos, cursos, congressos, seminarios, video &amp;nbsp;digital com
&lt;br&gt;transmissão ao vivo, aulas.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.gueb.de/videocursosbrasil&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gueb.de/videocursosbrasil&lt;/a&gt;&lt;br&gt;&lt;br&gt;Comercializa vídeos de aulas &amp;nbsp;de música, incluindo guitarra, baixo,
&lt;br&gt;bateria, flauta, gaita, pandeiro, canto, dança e harmonia. Encontre no
&lt;br&gt;nosso site cursos de Várias áreas para sua escolha e aprimoramento:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.gueb.de/videocursosbrasil&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gueb.de/videocursosbrasil&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Video-Aulas%2C-cursos-em-v%C3%ADdeo.-Aprenda-a-fazer-tudo-com-video-cursos-tp8465678p8465678.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8400117</id>
	<title>Re: lock debugging (was Re: Just for fun)</title>
	<published>2007-01-16T14:07:16Z</published>
	<updated>2007-01-16T14:07:16Z</updated>
	<author>
		<name>David Maxwell-3</name>
	</author>
	<content type="html">On Tue, Jan 16, 2007 at 07:53:51AM -0500, Perry E. Metzger wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8400117&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; &amp;gt; The branch adds one more piece of the puzzle (locking around process state).
&lt;br&gt;&amp;gt; &amp;gt; That it works comparatively well is a product of all of the locks that have
&lt;br&gt;&amp;gt; &amp;gt; been trickling into the system for the last .. well, since 4.4BSD I think.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What if we did something similar but instead taught the emulator about
&lt;br&gt;&amp;gt; locks and traced unlocked touches of global data structures?
&lt;br&gt;&lt;br&gt;Coverity Prevent also has a set of concurrency checkers that can
&lt;br&gt;identify issues with locking.
&lt;br&gt;&lt;br&gt;Those checkers haven't been turned on yet on scan.coverity.com, but we
&lt;br&gt;are working towards making the additional results available. I just
&lt;br&gt;wanted to let you know that you'll have additional information to call
&lt;br&gt;on when that happens.
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;David Maxwell
&lt;br&gt;Coverity Open Source Strategist
&lt;br&gt;&lt;a href=&quot;http://scan.coverity.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://scan.coverity.com/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Just-for-fun-tp8361623p8400117.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8394600</id>
	<title>Re: lock debugging</title>
	<published>2007-01-16T09:20:24Z</published>
	<updated>2007-01-16T09:20:24Z</updated>
	<author>
		<name>Perry E. Metzger</name>
	</author>
	<content type="html">&lt;br&gt;Pavel Cahyna &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8394600&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pavel@...&lt;/a&gt;&amp;gt; writes:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Tue, Jan 16, 2007 at 07:53:51AM -0500, Perry E. Metzger wrote:
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8394600&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; The branch adds one more piece of the puzzle (locking around
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; process state). &amp;nbsp;That it works comparatively well is a product of
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; all of the locks that have been trickling into the system for the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; last .. well, since 4.4BSD I think.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; BTW, I wonder whether we can modify an x86 emulator into a lock
&lt;br&gt;&amp;gt;&amp;gt; debugger.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes: &lt;a href=&quot;http://www.valgrind.org/info/tools.html#helgrind&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.valgrind.org/info/tools.html#helgrind&lt;/a&gt;&lt;/div&gt;&lt;br&gt;Can that be used for running a kernel?
&lt;br&gt;&lt;br&gt;Perry
&lt;br&gt;-- 
&lt;br&gt;Perry E. Metzger		&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8394600&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;perry@...&lt;/a&gt;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Just-for-fun-tp8361623p8394600.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8394502</id>
	<title>Re: lock debugging (was Re: Just for fun)</title>
	<published>2007-01-16T09:13:58Z</published>
	<updated>2007-01-16T09:13:58Z</updated>
	<author>
		<name>Pavel Cahyna-4</name>
	</author>
	<content type="html">On Tue, Jan 16, 2007 at 07:53:51AM -0500, Perry E. Metzger wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8394502&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; &amp;gt; The branch adds one more piece of the puzzle (locking around process state).
&lt;br&gt;&amp;gt; &amp;gt; That it works comparatively well is a product of all of the locks that have
&lt;br&gt;&amp;gt; &amp;gt; been trickling into the system for the last .. well, since 4.4BSD I think.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; BTW, I wonder whether we can modify an x86 emulator into a lock
&lt;br&gt;&amp;gt; debugger.
&lt;br&gt;&lt;br&gt;Yes: &lt;a href=&quot;http://www.valgrind.org/info/tools.html#helgrind&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.valgrind.org/info/tools.html#helgrind&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Just-for-fun-tp8361623p8394502.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8389655</id>
	<title>lock debugging (was Re: Just for fun)</title>
	<published>2007-01-16T04:53:51Z</published>
	<updated>2007-01-16T04:53:51Z</updated>
	<author>
		<name>Perry E. Metzger</name>
	</author>
	<content type="html">&lt;br&gt;Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8389655&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; The branch adds one more piece of the puzzle (locking around process state).
&lt;br&gt;&amp;gt; That it works comparatively well is a product of all of the locks that have
&lt;br&gt;&amp;gt; been trickling into the system for the last .. well, since 4.4BSD I think.
&lt;br&gt;&lt;br&gt;BTW, I wonder whether we can modify an x86 emulator into a lock
&lt;br&gt;debugger.
&lt;br&gt;&lt;br&gt;Some years ago I read a paper about a system called &amp;quot;taintbochs&amp;quot; that
&lt;br&gt;modified the Bochs emulator to track the flow of password and other
&lt;br&gt;sensitive data inside a kernel.
&lt;br&gt;&lt;br&gt;What if we did something similar but instead taught the emulator about
&lt;br&gt;locks and traced unlocked touches of global data structures?
&lt;br&gt;&lt;br&gt;Perry
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Just-for-fun-tp8361623p8389655.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8388172</id>
	<title>Re: Just for fun</title>
	<published>2007-01-16T02:56:54Z</published>
	<updated>2007-01-16T02:56:54Z</updated>
	<author>
		<name>Andrew Doran-7</name>
	</author>
	<content type="html">On Mon, Jan 15, 2007 at 11:44:21AM -0500, Perry E. Metzger wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8388172&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; &amp;gt; A few years back pk@ locked a few more kernel subsystems and tried running
&lt;br&gt;&amp;gt; &amp;gt; the kernel unlocked to see what would happen. I repeated the test with a
&lt;br&gt;&amp;gt; &amp;gt; kernel from the newlock2 branch and to my amazement it completes a kernel
&lt;br&gt;&amp;gt; &amp;gt; build on a 4 way system.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; build.sh isn't so good - once it hits 'make objdir' and there's a lot of
&lt;br&gt;&amp;gt; &amp;gt; intensive file system activity going it will either panic, or lock up in
&lt;br&gt;&amp;gt; &amp;gt; biowait -&amp;gt; vnlock, somewhere around 30 to 60 seconds in.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That's pretty amazing. Should we attribute this to the low probability
&lt;br&gt;&amp;gt; of contention in the real world,
&lt;/div&gt;&lt;br&gt;The kernel build doesn't spend a huge amount of time in the kernel, but it
&lt;br&gt;definitely produces contention. I think the majority of it is likely to
&lt;br&gt;result from handling traps for zero fill and pageins.
&lt;br&gt;&lt;br&gt;&amp;gt; or to the quality of the stuff on newlock2? (I suspect a bit of both,
&lt;br&gt;&amp;gt; which is, as you say, encouraging.)
&lt;br&gt;&lt;br&gt;The branch adds one more piece of the puzzle (locking around process state).
&lt;br&gt;That it works comparatively well is a product of all of the locks that have
&lt;br&gt;been trickling into the system for the last .. well, since 4.4BSD I think.
&lt;br&gt;&lt;br&gt;Andrew
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Just-for-fun-tp8361623p8388172.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8374688</id>
	<title>Re: Just for fun</title>
	<published>2007-01-15T08:44:21Z</published>
	<updated>2007-01-15T08:44:21Z</updated>
	<author>
		<name>Perry E. Metzger</name>
	</author>
	<content type="html">&lt;br&gt;Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8374688&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; A few years back pk@ locked a few more kernel subsystems and tried running
&lt;br&gt;&amp;gt; the kernel unlocked to see what would happen. I repeated the test with a
&lt;br&gt;&amp;gt; kernel from the newlock2 branch and to my amazement it completes a kernel
&lt;br&gt;&amp;gt; build on a 4 way system.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; build.sh isn't so good - once it hits 'make objdir' and there's a lot of
&lt;br&gt;&amp;gt; intensive file system activity going it will either panic, or lock up in
&lt;br&gt;&amp;gt; biowait -&amp;gt; vnlock, somewhere around 30 to 60 seconds in.
&lt;br&gt;&lt;br&gt;That's pretty amazing. Should we attribute this to the low probability
&lt;br&gt;of contention in the real world, or to the quality of the stuff on
&lt;br&gt;newlock2? (I suspect a bit of both, which is, as you say, encouraging.)
&lt;br&gt;&lt;br&gt;&amp;gt; Still, I think it's pretty encouraging that things work as well as they do.
&lt;br&gt;&amp;gt; I put dmesg and some lockstat output from a couple of runs at the URL below.
&lt;br&gt;&amp;gt; Note that the timings for the sleep locks are wrong.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 	&lt;a href=&quot;http://www.netbsd.org/~ad/biglock/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.netbsd.org/~ad/biglock/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Perry
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Just-for-fun-tp8361623p8374688.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8361623</id>
	<title>Just for fun</title>
	<published>2007-01-14T11:32:08Z</published>
	<updated>2007-01-14T11:32:08Z</updated>
	<author>
		<name>Andrew Doran-7</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;A few years back pk@ locked a few more kernel subsystems and tried running
&lt;br&gt;the kernel unlocked to see what would happen. I repeated the test with a
&lt;br&gt;kernel from the newlock2 branch and to my amazement it completes a kernel
&lt;br&gt;build on a 4 way system.
&lt;br&gt;&lt;br&gt;build.sh isn't so good - once it hits 'make objdir' and there's a lot of
&lt;br&gt;intensive file system activity going it will either panic, or lock up in
&lt;br&gt;biowait -&amp;gt; vnlock, somewhere around 30 to 60 seconds in.
&lt;br&gt;&lt;br&gt;Still, I think it's pretty encouraging that things work as well as they do.
&lt;br&gt;I put dmesg and some lockstat output from a couple of runs at the URL below.
&lt;br&gt;Note that the timings for the sleep locks are wrong.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.netbsd.org/~ad/biglock/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.netbsd.org/~ad/biglock/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Andrew
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Just-for-fun-tp8361623p8361623.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8361446</id>
	<title>Re: Interrupts as threads</title>
	<published>2007-01-14T11:16:07Z</published>
	<updated>2007-01-14T11:16:07Z</updated>
	<author>
		<name>Perry E. Metzger</name>
	</author>
	<content type="html">&lt;br&gt;Andrew Doran &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=8361446&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ad@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; The problem as I see it is: getting it right all at once would be a big
&lt;br&gt;&amp;gt; effort, and I don't see that we have the resources to do it that way.
&lt;br&gt;&lt;br&gt;For what it is worth, I think an implementation path that allows
&lt;br&gt;incremental steps that each are worthwhile (more or less what I see
&lt;br&gt;you saying) is better than one that requires a massive application of
&lt;br&gt;resources we don't have.
&lt;br&gt;&lt;br&gt;As for the particular decisions made, I have a bias towards letting
&lt;br&gt;the person actually doing work have the biggest say unless they're
&lt;br&gt;acting crazy, and you aren't acting crazy. You are clearly leading
&lt;br&gt;this right now by doing the actual programming.
&lt;br&gt;&lt;br&gt;Perry
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Interrupts-as-threads-tp7648058p8361446.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-8299410</id>
	<title>Re: Interrupts as threads</title>
	<published>2007-01-12T06:38:54Z</published>
	<updated>2007-01-12T06:38:54Z</updated>
	<author>
		<name>Andrew Doran-7</name>
	</author>
	<content type="html">Hi Bill,
&lt;br&gt;&lt;br&gt;On Tue, Dec 19, 2006 at 04:05:24PM -0800, Bill Studenmund wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; On Sun, Dec 03, 2006 at 10:36:30PM +0000, Andrew Doran wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; The problem is that at the moment, acquiring any given spin lock is a
&lt;br&gt;&amp;gt; &amp;gt; deadlock waiting to happen unless you are at ~IPL_SCHED or above when
&lt;br&gt;&amp;gt; &amp;gt; acquiring it, or are certain that it will only ever be acquired with the
&lt;br&gt;&amp;gt; &amp;gt; kernel lock unheld. Ensuring that the kernel lock is always held when you
&lt;br&gt;&amp;gt; &amp;gt; acquire the spin lock means that the spin lock is useless :-).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've been thinking about this, and I think you are not correct. Well. In
&lt;br&gt;&amp;gt; the long-term, you are. But I think as a transition step, we may have to
&lt;br&gt;&amp;gt; accept it.
&lt;br&gt;&lt;br&gt;I'm not sure I follow. We did discuss this briefly and I think that you were
&lt;br&gt;proposing a scheme where we have the indivdual interrupt handlers acquire
&lt;br&gt;the kernel lock, although I might have completely misunderstood. :-)
&lt;br&gt;&lt;br&gt;&amp;gt; All we have to do is define a correct locking hierarcy. It's ok to aquire
&lt;br&gt;&amp;gt; a given spin lock if you have the kernel lock. It's ok to aquire said
&lt;br&gt;&amp;gt; spinlock w/o the kernel lock. It's just NOT ok to aquire the kernel lock
&lt;br&gt;&amp;gt; while holding said lock. Yes, this could make interupt handling routines 
&lt;br&gt;&amp;gt; painful (when they hand things off to the main kernel), but we can do it.
&lt;br&gt;&lt;br&gt;The problem as I see it is: getting it right all at once would be a big
&lt;br&gt;effort, and I don't see that we have the resources to do it that way.
&lt;br&gt;&lt;br&gt;I said that I wanted to use interrupts as threads, and process context locks
&lt;br&gt;(the Solaris style mutexes) for MP safety. The two basic problems I want to
&lt;br&gt;solve by doing that are:
&lt;br&gt;&lt;br&gt;o The one mentioned above - if the locks are difficult to use (potential
&lt;br&gt;&amp;nbsp; deadlocks against the kernel_lock) then that's a problem. &amp;nbsp;For places
&lt;br&gt;&amp;nbsp; where we want MP safety (not MT safety) the mutexes can be thought of as
&lt;br&gt;&amp;nbsp; spin locks, but with additional property that they can block in order to
&lt;br&gt;&amp;nbsp; avoid deadlock. That might be against the current CPU already holding the
&lt;br&gt;&amp;nbsp; mutex (preemption), or against the CPU that already holds the mutex
&lt;br&gt;&amp;nbsp; wanting the big lock. Essentially, they remove the ordering constraint
&lt;br&gt;&amp;nbsp; against the big lock.
&lt;br&gt;&lt;br&gt;o If we keep the distinction between interrupt and process context across
&lt;br&gt;&amp;nbsp; the board, then we're likely to increase the number of locks in the in
&lt;br&gt;&amp;nbsp; kernel: one set for interrupt access, and one for process access. I've
&lt;br&gt;&amp;nbsp; spent a lot of time trying to make process and LWP state MP safe for
&lt;br&gt;&amp;nbsp; signalling. Even though it works well enough I'm not particularly happy
&lt;br&gt;&amp;nbsp; with the end result, because there's a mix of locks where we only need
&lt;br&gt;&amp;nbsp; ~half the number. It's not good to use spinlocks with a raised SPL in a
&lt;br&gt;&amp;nbsp; lot of places, because we might need to block briefly on a process context
&lt;br&gt;&amp;nbsp; lock, or in the overall picture we end up holding interrupts for much
&lt;br&gt;&amp;nbsp; longer.
&lt;br&gt;&lt;br&gt;I did some simple profiling on the SPL operations and here is example output
&lt;br&gt;from a run that I did. It's from a single CPU machine serving up files at
&lt;br&gt;line rate using 8 ftpds over 100Mbps Ethernet, and doing some disk I/O
&lt;br&gt;locally. I wasn't looking for any specific kind of behaviour other than
&lt;br&gt;'doing I/O'. The machine is set up so that there is 1:1 mapping between each
&lt;br&gt;symbolic interrupt level and each hardware IRQ line.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;1		 &amp;nbsp; 2			3		 &amp;nbsp; &amp;nbsp;4			5
&lt;br&gt;&lt;br&gt;alevel &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;intrs &amp;nbsp; persec | &amp;nbsp;blkself &amp;nbsp; persec | blkother &amp;nbsp; persec | &amp;nbsp;splraise &amp;nbsp; persec
&lt;br&gt;---------+-------------------+-------------------+-------------------+--------------------
&lt;br&gt;softnet &amp;nbsp;| &amp;nbsp; 274094 &amp;nbsp; &amp;nbsp; 6334 | &amp;nbsp; &amp;nbsp;47549 &amp;nbsp; &amp;nbsp; 1098 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp;572849 &amp;nbsp; &amp;nbsp;13239
&lt;br&gt;bio &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp;17939 &amp;nbsp; &amp;nbsp; &amp;nbsp;414 | &amp;nbsp; &amp;nbsp; &amp;nbsp;252 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; 1415581 &amp;nbsp; &amp;nbsp;32717
&lt;br&gt;net &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; 373121 &amp;nbsp; &amp;nbsp; 8623 | &amp;nbsp; &amp;nbsp;29857 &amp;nbsp; &amp;nbsp; &amp;nbsp;690 | &amp;nbsp; &amp;nbsp; 1760 &amp;nbsp; &amp;nbsp; &amp;nbsp; 40 | &amp;nbsp; &amp;nbsp;631179 &amp;nbsp; &amp;nbsp;14588
&lt;br&gt;tty &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; 428 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9
&lt;br&gt;vm &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp;11646 &amp;nbsp; &amp;nbsp; &amp;nbsp;269 | &amp;nbsp; 5211031 &amp;nbsp; 120438
&lt;br&gt;audio &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0
&lt;br&gt;clock &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; 4328 &amp;nbsp; &amp;nbsp; &amp;nbsp;100 | &amp;nbsp; &amp;nbsp; &amp;nbsp;353 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8 | &amp;nbsp; &amp;nbsp;33913 &amp;nbsp; &amp;nbsp; &amp;nbsp;783 | &amp;nbsp; 1156023 &amp;nbsp; &amp;nbsp;26718
&lt;br&gt;high &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp;112 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 | &amp;nbsp; &amp;nbsp;291410 &amp;nbsp; &amp;nbsp; 6735
&lt;br&gt;ipi &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 | &amp;nbsp; &amp;nbsp; &amp;nbsp; 435 &amp;nbsp; &amp;nbsp; &amp;nbsp; 10
&lt;br&gt;&lt;br&gt;The columns are:
&lt;br&gt;&lt;br&gt;1. Interrupt level.
&lt;br&gt;2. Number of interrupts at that level.
&lt;br&gt;3. Number of splfoo() operations that blocked an interrupt at level foo. 
&lt;br&gt;&amp;nbsp; &amp;nbsp;This doesn't include the SPL adjustment that MD code does as part of
&lt;br&gt;&amp;nbsp; &amp;nbsp;taking the interrupt.
&lt;br&gt;4. Number of splfoo() operations that blocked an interrupt below level
&lt;br&gt;&amp;nbsp; &amp;nbsp;foo. Note that this does not count blocked soft interrupts.
&lt;br&gt;5. Number of splfoo() operations.
&lt;br&gt;&lt;br&gt;Given the amount of contention that this _one_ test shows it's clear that we
&lt;br&gt;can't just use interrupts as threads and replace the SPL system with locks,
&lt;br&gt;or we will really suffer from all the additional context switching. At
&lt;br&gt;least, we can't do that without a major engineering effort to change how
&lt;br&gt;work is passed from one level to the next.
&lt;br&gt;&lt;br&gt;I think that we can also cut the number of spl calls significantly. For one,
&lt;br&gt;the number of splvm() calls indicated above seems a bit excessive.
&lt;br&gt;&lt;br&gt;What I propose is using interrupts as threads for IPL_VM and below, but also
&lt;br&gt;preserving the SPL system. We would certianly need to use it for networking.
&lt;br&gt;In other areas (like block I/O) where there aren't so many chokepoints I'm
&lt;br&gt;inclined to believe that we can get away without it.
&lt;br&gt;&lt;br&gt;I don't think interrupts as threads have to be expensive: typically just a
&lt;br&gt;stack switch and some additional accounting in the interrupt path. In
&lt;br&gt;addition to the interrupt coming in, there would need to be defined
&lt;br&gt;premption points, like lock release or splx(). That's in contrast to (to
&lt;br&gt;use an example that people have cited) FreeBSD, where the initial approach
&lt;br&gt;was a lot more costly as I understand it: in addition to taking the
&lt;br&gt;interrupt, a thread had to be picked and scheduled to run at a later time,
&lt;br&gt;for example on return to user space. I don't know how their system works
&lt;br&gt;these days.
&lt;br&gt;&lt;br&gt;Thoughts?
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Andrew
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Interrupts-as-threads-tp7648058p8299410.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7982176</id>
	<title>Re: Interrupts as threads</title>
	<published>2006-12-19T16:05:24Z</published>
	<updated>2006-12-19T16:05:24Z</updated>
	<author>
		<name>Bill Stouder-Studenmund</name>
	</author>
	<content type="html">On Sun, Dec 03, 2006 at 10:36:30PM +0000, Andrew Doran wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sat, Dec 02, 2006 at 10:25:42AM +0000, David Laight wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; On Fri, Dec 01, 2006 at 11:31:19PM +0000, Andrew Doran wrote:
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; o There is no easy solution to the lock order problem with the kernel_lock
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; &amp;nbsp; when using spin locks.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; My brief peruse at the biglock code did make it clear how it worked when
&lt;br&gt;&amp;gt; &amp;gt; an IRQ came in when the 2nd cpu had the biglock...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The problem is that at the moment, acquiring any given spin lock is a
&lt;br&gt;&amp;gt; deadlock waiting to happen unless you are at ~IPL_SCHED or above when
&lt;br&gt;&amp;gt; acquiring it, or are certain that it will only ever be acquired with the
&lt;br&gt;&amp;gt; kernel lock unheld. Ensuring that the kernel lock is always held when you
&lt;br&gt;&amp;gt; acquire the spin lock means that the spin lock is useless :-).
&lt;/div&gt;&lt;/div&gt;I've been thinking about this, and I think you are not correct. Well. In
&lt;br&gt;the long-term, you are. But I think as a transition step, we may have to
&lt;br&gt;accept it.
&lt;br&gt;&lt;br&gt;All we have to do is define a correct locking hierarcy. It's ok to aquire
&lt;br&gt;a given spin lock if you have the kernel lock. It's ok to aquire said
&lt;br&gt;spinlock w/o the kernel lock. It's just NOT ok to aquire the kernel lock
&lt;br&gt;while holding said lock. Yes, this could make interupt handling routines 
&lt;br&gt;painful (when they hand things off to the main kernel), but we can do it.
&lt;br&gt;&lt;br&gt;Take care,
&lt;br&gt;&lt;br&gt;Bill
&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;attachment0&lt;/strong&gt; (193 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/7982176/0/attachment0&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Interrupts-as-threads-tp7648058p7982176.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7668162</id>
	<title>Re: Interrupts as threads</title>
	<published>2006-12-03T14:36:30Z</published>
	<updated>2006-12-03T14:36:30Z</updated>
	<author>
		<name>Andrew Doran-7</name>
	</author>
	<content type="html">On Sat, Dec 02, 2006 at 10:25:42AM +0000, David Laight wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; On Fri, Dec 01, 2006 at 11:31:19PM +0000, Andrew Doran wrote:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; o There is no easy solution to the lock order problem with the kernel_lock
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; when using spin locks.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; My brief peruse at the biglock code did make it clear how it worked when
&lt;br&gt;&amp;gt; an IRQ came in when the 2nd cpu had the biglock...
&lt;br&gt;&lt;br&gt;The problem is that at the moment, acquiring any given spin lock is a
&lt;br&gt;deadlock waiting to happen unless you are at ~IPL_SCHED or above when
&lt;br&gt;acquiring it, or are certain that it will only ever be acquired with the
&lt;br&gt;kernel lock unheld. Ensuring that the kernel lock is always held when you
&lt;br&gt;acquire the spin lock means that the spin lock is useless :-).
&lt;br&gt;&lt;br&gt;It would not be a major undertaking to push that down to IPL_VM by making
&lt;br&gt;other interrupt handlers MP safe, the bulk of which are audio drivers I
&lt;br&gt;think. Once you move beyond those drivers, things start to get more
&lt;br&gt;difficult and I'm not convinced that we have the resources to tackle the
&lt;br&gt;issue that way.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; o Using spin locks we will have to keep the SPL above IPL_NONE for longer
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; that before, or accept (in non-trivial cases) the undesirable cost of
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; having both interrupt and process context locks around some objects.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; SMP code does tend to need mutex protection for longer than the non-SMP
&lt;br&gt;&amp;gt; code required IPL protection anyway...
&lt;br&gt;&lt;br&gt;Yup.
&lt;br&gt;&amp;nbsp;
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; o Raising and lowering the SPL is expensive, especially on machines that
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; need to talk with the hardware on SPL operation. The spin lock path also
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; has more test+branch pairs / conditional moves and memory references
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; involved than process locks. For a process context lock, the minimum we
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; can get away with on entry and exit is one test+branch and two cache line
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; references.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Can we do deferred SPL changes on all archs?
&lt;br&gt;&amp;gt; ie don't frob the hardware, but assume it won't raise an IRQ. If an IRQ
&lt;br&gt;&amp;gt; does occur, mask it then and return, re-enabling of the splx call.
&lt;/div&gt;&lt;br&gt;We probably could, but it's still expensive to acquire spin locks that
&lt;br&gt;modify the SPL. Have a look at arch/i386/i386/lock_stubs.S on the newlock2
&lt;br&gt;branch and compare the paths for spin vs. adaptive mutexes. (I know that at
&lt;br&gt;least _lock_set_waiters() is broken. Also, I haven't optimised x86 assembly
&lt;br&gt;in a long time - please don't laugh. ;-)
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; o Every spin lock / unlock pair denotes a critical section where threads
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; running in the kernel can not be preempted. That's not currently an issue
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; but if we move to support real time threads it could become one; I'm not
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; sure.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Once we have a proper SMP kernel, making processes pre-emptable in the kernel
&lt;br&gt;&amp;gt; (while not holding a lock) becomes ~free - whereas the non-SMP kernel code
&lt;br&gt;&amp;gt; will make assumptions that stop pre-empting.
&lt;br&gt;&amp;gt; However you probably want to be able to disable pre-emption whithout
&lt;br&gt;&amp;gt; holding a mutex.
&lt;/div&gt;&lt;br&gt;Yup, agreed.
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; The cleanest way to deal with these issues that I can see is to use
&lt;br&gt;&amp;gt; &amp;gt; lightweight threads to handle interrupts
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That just makes it worse! Every hardware ISR would have to disable the
&lt;br&gt;&amp;gt; IRQ itself, then the 'low level' ISR would need to re-enable it.
&lt;br&gt;&lt;br&gt;I don't see why we would have to do that. The way I envisoned this working,
&lt;br&gt;for a typical interrupt path that doesn't have to block on any locks, the
&lt;br&gt;prologue and epliogue for the interrupt itself (not the individual ISRs)
&lt;br&gt;would have a few additional steps. Something like:
&lt;br&gt;&lt;br&gt;entry:		pick an idle interrupt LWP from curcpu
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; note which LWP we have preempted
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set curlwp
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; switch onto new stack
&lt;br&gt;&lt;br&gt;exit:		restore curlwp
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; switch back to old stack
&lt;br&gt;&lt;br&gt;If one of the ISRs needs to block, then we would have to switch back to the
&lt;br&gt;LWP that was preempted and hold the SPL at the ISR's base level until the
&lt;br&gt;ISR receives the lock. So in effect, things like splx() would become a
&lt;br&gt;request to alter the SPL, but wouldn't be able to drop it below the base
&lt;br&gt;level for the CPU (which would typically be IPL_NONE).
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; My initial thought is to have one
&lt;br&gt;&amp;gt; &amp;gt; thread per level, per CPU. These would be able to preempt already running
&lt;br&gt;&amp;gt; &amp;gt; threads, and would hold preempted threads in-situ until the interrupt thread
&lt;br&gt;&amp;gt; &amp;gt; returns or switches away. In most cases, SPL operations would be replaced by
&lt;br&gt;&amp;gt; &amp;gt; locks.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; You'd have to look very closely at priority inversion problems....
&lt;br&gt;&lt;br&gt;True.. The turnstile mechanism would handle this for locks, but that's
&lt;br&gt;currently implemented.
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; Blocking would no longer be prohibited, but strongly discouraged - so
&lt;br&gt;&amp;gt; &amp;gt; doing something like pool_get(foo, PR_WAITOK) should likely trigger an
&lt;br&gt;&amp;gt; &amp;gt; assertion.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; If you allow blocking, then people will use it because it 'appears to work'
&lt;br&gt;&amp;gt; then you find that one of your ISR threads is busy
&lt;br&gt;&lt;br&gt;I considered that but I feel that it's really a documentation and code
&lt;br&gt;review issue. There are plenty of places we can put assertions though. For
&lt;br&gt;instance around memory allocation, or direct use of the tsleep() / cv_wait()
&lt;br&gt;interfaces. In any case there are plenty of inadvisable things that you can
&lt;br&gt;do from an interrupt handler already, and we have drivers that already do (I
&lt;br&gt;wrote one of them :-).
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; Assuming you subscribe to handling interrupts with threads, it raises the
&lt;br&gt;&amp;gt; &amp;gt; question: where to draw the line between threaded and 'traditional'. It
&lt;br&gt;&amp;gt; &amp;gt; certianly makes sense to run soft interrupts this way, and I would draw the
&lt;br&gt;&amp;gt; &amp;gt; line at higher priority ISRs like network, audio, serial and clock.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; It may make sense to use kernel threads (running through the scheduler)
&lt;br&gt;&amp;gt; for some driver activity, and quite probably some of the code scheduled
&lt;br&gt;&amp;gt; via 'softint' is in this category.
&lt;br&gt;&lt;br&gt;Sure, but there is a cutoff point: that introduces the full overhead of the
&lt;br&gt;scheduler in addition to taking the interrupt. If the softint handler is an
&lt;br&gt;interrupt thread, then that doesn't happen unless absolutely necessary.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Andrew
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Interrupts-as-threads-tp7648058p7668162.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7652075</id>
	<title>Re: Interrupts as threads</title>
	<published>2006-12-02T02:25:42Z</published>
	<updated>2006-12-02T02:25:42Z</updated>
	<author>
		<name>David Laight</name>
	</author>
	<content type="html">On Fri, Dec 01, 2006 at 11:31:19PM +0000, Andrew Doran wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; o There is no easy solution to the lock order problem with the kernel_lock
&lt;br&gt;&amp;gt; &amp;nbsp; when using spin locks.
&lt;br&gt;&lt;br&gt;My brief peruse at the biglock code did make it clear how it worked when
&lt;br&gt;an IRQ came in when the 2nd cpu had the biglock...
&lt;br&gt;&lt;br&gt;&amp;gt; o Using spin locks we will have to keep the SPL above IPL_NONE for longer
&lt;br&gt;&amp;gt; &amp;nbsp; that before, or accept (in non-trivial cases) the undesirable cost of
&lt;br&gt;&amp;gt; &amp;nbsp; having both interrupt and process context locks around some objects.
&lt;br&gt;&lt;br&gt;SMP code does tend to need mutex protection for longer than the non-SMP
&lt;br&gt;code required IPL protection anyway...
&lt;br&gt;&lt;br&gt;&amp;gt; o Raising and lowering the SPL is expensive, especially on machines that
&lt;br&gt;&amp;gt; &amp;nbsp; need to talk with the hardware on SPL operation. The spin lock path also
&lt;br&gt;&amp;gt; &amp;nbsp; has more test+branch pairs / conditional moves and memory references
&lt;br&gt;&amp;gt; &amp;nbsp; involved than process locks. For a process context lock, the minimum we
&lt;br&gt;&amp;gt; &amp;nbsp; can get away with on entry and exit is one test+branch and two cache line
&lt;br&gt;&amp;gt; &amp;nbsp; references.
&lt;br&gt;&lt;br&gt;Can we do deferred SPL changes on all archs?
&lt;br&gt;ie don't frob the hardware, but assume it won't raise an IRQ. If an IRQ
&lt;br&gt;does occur, mask it then and return, re-enabling of the splx call.
&lt;br&gt;&lt;br&gt;&amp;gt; o Every spin lock / unlock pair denotes a critical section where threads
&lt;br&gt;&amp;gt; &amp;nbsp; running in the kernel can not be preempted. That's not currently an issue
&lt;br&gt;&amp;gt; &amp;nbsp; but if we move to support real time threads it could become one; I'm not
&lt;br&gt;&amp;gt; &amp;nbsp; sure.
&lt;br&gt;&lt;br&gt;Once we have a proper SMP kernel, making processes pre-emptable in the kernel
&lt;br&gt;(while not holding a lock) becomes ~free - whereas the non-SMP kernel code
&lt;br&gt;will make assumptions that stop pre-empting.
&lt;br&gt;However you probably want to be able to disable pre-emption whithout
&lt;br&gt;holding a mutex.
&lt;br&gt;&lt;br&gt;&amp;gt; o We are doing too much work from interrupt context.
&lt;br&gt;&lt;br&gt;possibly true... &amp;nbsp;but the cpu cycles have to be done somewhen, and deferring
&lt;br&gt;to a different context just takes time.
&lt;br&gt;&lt;br&gt;&amp;gt; The cleanest way to deal with these issues that I can see is to use
&lt;br&gt;&amp;gt; lightweight threads to handle interrupts
&lt;br&gt;&lt;br&gt;That just makes it worse! Every hardware ISR would have to disable the
&lt;br&gt;IRQ itself, then the 'low level' ISR would need to re-enable it.
&lt;br&gt;&lt;br&gt;&amp;gt; My initial thought is to have one
&lt;br&gt;&amp;gt; thread per level, per CPU. These would be able to preempt already running
&lt;br&gt;&amp;gt; threads, and would hold preempted threads in-situ until the interrupt thread
&lt;br&gt;&amp;gt; returns or switches away. In most cases, SPL operations would be replaced by
&lt;br&gt;&amp;gt; locks.
&lt;br&gt;&lt;br&gt;You'd have to look very closely at priority inversion problems....
&lt;br&gt;&lt;br&gt;&amp;gt; Blocking would no longer be prohibited, but strongly discouraged - so
&lt;br&gt;&amp;gt; doing something like pool_get(foo, PR_WAITOK) should likely trigger an
&lt;br&gt;&amp;gt; assertion.
&lt;br&gt;&lt;br&gt;If you allow blocking, then people will use it because it 'appears to work'
&lt;br&gt;then you find that one of your ISR threads is busy - not a problem until
&lt;br&gt;several interrupt routines/drivers do it at the same time and you run out
&lt;br&gt;of threads to do the wakeup.
&lt;br&gt;&lt;br&gt;&amp;gt; Assuming you subscribe to handling interrupts with threads, it raises the
&lt;br&gt;&amp;gt; question: where to draw the line between threaded and 'traditional'. It
&lt;br&gt;&amp;gt; certianly makes sense to run soft interrupts this way, and I would draw the
&lt;br&gt;&amp;gt; line at higher priority ISRs like network, audio, serial and clock.
&lt;br&gt;&lt;br&gt;It may make sense to use kernel threads (running through the scheduler)
&lt;br&gt;for some driver activity, and quite probably some of the code scheduled
&lt;br&gt;via 'softint' is in this category. &amp;nbsp;But IMHO this really needs to be code
&lt;br&gt;this isn't really related to 'interrupt processing'.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; David
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;David Laight: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=7652075&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;david@...&lt;/a&gt;
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Interrupts-as-threads-tp7648058p7652075.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7648058</id>
	<title>Interrupts as threads</title>
	<published>2006-12-01T15:31:19Z</published>
	<updated>2006-12-01T15:31:19Z</updated>
	<author>
		<name>Andrew Doran-7</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I have been thinking about the lock ordering problem with the kernel big
&lt;br&gt;lock quite a bit and what it will take to lock the MI kernel down, and have
&lt;br&gt;made some observations.
&lt;br&gt;&lt;br&gt;o There is no easy solution to the lock order problem with the kernel_lock
&lt;br&gt;&amp;nbsp; when using spin locks.
&lt;br&gt;&lt;br&gt;o Using spin locks we will have to keep the SPL above IPL_NONE for longer
&lt;br&gt;&amp;nbsp; that before, or accept (in non-trivial cases) the undesirable cost of
&lt;br&gt;&amp;nbsp; having both interrupt and process context locks around some objects.
&lt;br&gt;&lt;br&gt;o Raising and lowering the SPL is expensive, especially on machines that
&lt;br&gt;&amp;nbsp; need to talk with the hardware on SPL operation. The spin lock path also
&lt;br&gt;&amp;nbsp; has more test+branch pairs / conditional moves and memory references
&lt;br&gt;&amp;nbsp; involved than process locks. For a process context lock, the minimum we
&lt;br&gt;&amp;nbsp; can get away with on entry and exit is one test+branch and two cache line
&lt;br&gt;&amp;nbsp; references.
&lt;br&gt;&lt;br&gt;o Every spin lock / unlock pair denotes a critical section where threads
&lt;br&gt;&amp;nbsp; running in the kernel can not be preempted. That's not currently an issue
&lt;br&gt;&amp;nbsp; but if we move to support real time threads it could become one; I'm not
&lt;br&gt;&amp;nbsp; sure.
&lt;br&gt;&lt;br&gt;o We are doing too much work from interrupt context.
&lt;br&gt;&lt;br&gt;The cleanest way to deal with these issues that I can see is to use
&lt;br&gt;lightweight threads to handle interrupts. My initial thought is to have one
&lt;br&gt;thread per level, per CPU. These would be able to preempt already running
&lt;br&gt;threads, and would hold preempted threads in-situ until the interrupt thread
&lt;br&gt;returns or switches away. In most cases, SPL operations would be replaced by
&lt;br&gt;locks. Blocking would no longer be prohibited, but strongly discouraged - so
&lt;br&gt;doing something like pool_get(foo, PR_WAITOK) should likely trigger an
&lt;br&gt;assertion.
&lt;br&gt;&lt;br&gt;On something like an x86 or MIPS CPU, we wouldn't need to do a full context
&lt;br&gt;switch for interrupts, just switch onto another stack. For things that are
&lt;br&gt;time critical like clock or audio ISRs I think the current scheme of
&lt;br&gt;deferring the interrupts might be better. Although it should not be common,
&lt;br&gt;the delay involved in switching away when trying to acquire a lock seems
&lt;br&gt;undesirable in these cases. (As an aisde, I have been meaning to do some
&lt;br&gt;profiling to see just how often the SPL operations serve their purpose in a
&lt;br&gt;variety of cases but haven't gotten around to it yet.)
&lt;br&gt;&lt;br&gt;Assuming you subscribe to handling interrupts with threads, it raises the
&lt;br&gt;question: where to draw the line between threaded and 'traditional'. It
&lt;br&gt;certianly makes sense to run soft interrupts this way, and I would draw the
&lt;br&gt;line at higher priority ISRs like network, audio, serial and clock.
&lt;br&gt;&lt;br&gt;Thoughts?
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Andrew
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Interrupts-as-threads-tp7648058p7648058.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7499155</id>
	<title>Re: SMP stability issues</title>
	<published>2006-11-22T15:24:29Z</published>
	<updated>2006-11-22T15:24:29Z</updated>
	<author>
		<name>Michael Graff-2</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;Chris Rendle-Short wrote:
&lt;br&gt;&amp;gt; Anyway, thanks to those that helped and offered suggestions. I'll run the machine on one CPU until I can work out something further.
&lt;br&gt;&lt;br&gt;My dual amd box is crashing during a full os build about 1 in 10 times
&lt;br&gt;now, with a kernel made a week ago.
&lt;br&gt;&lt;br&gt;A kernel made 3 months ago, running on another machine with the same
&lt;br&gt;hardware, does not do this.
&lt;br&gt;&lt;br&gt;Worse, the same smp-kernel running on a single CPU box also crashes /
&lt;br&gt;locks up, while a non-smp does not on the same hardware.
&lt;br&gt;&lt;br&gt;- --Michael
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG v1.4.2.2 (MingW32)
&lt;br&gt;&lt;br&gt;iD8DBQFFZNwtuzMQWQwZDN0RAoeMAJ9yxYtuHIwfiyEMUp7rso7PeOtGegCfaEvL
&lt;br&gt;3jrF9oCfWUwaH7yeXRTCPnc=
&lt;br&gt;=UWax
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SMP-stability-issues-tp7273064p7499155.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7487359</id>
	<title>Re: SMP stability issues</title>
	<published>2006-11-22T01:07:19Z</published>
	<updated>2006-11-22T01:07:19Z</updated>
	<author>
		<name>Chris Rendle-Short</name>
	</author>
	<content type="html">Well, I've spent the last week and a bit trying different kernels etc, and nothing seems to be working. I've tried those Via kernel patches, both on with ACPI enabled and disabled in the kernel, but all to no avail.
&lt;br&gt;&lt;br&gt;Long story short, I've hit a brick wall. I think I'm going to have to put it down to an unfortunately-timed hardware failure. The machine was moved around a bit when it was making the transition from Linux to NetBSD, so there could be something there.
&lt;br&gt;&lt;br&gt;Anyway, thanks to those that helped and offered suggestions. I'll run the machine on one CPU until I can work out something further.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Chris.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SMP-stability-issues-tp7273064p7487359.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7307507</id>
	<title>Re: SMP stability issues</title>
	<published>2006-11-12T13:08:38Z</published>
	<updated>2006-11-12T13:08:38Z</updated>
	<author>
		<name>Chris Rendle-Short</name>
	</author>
	<content type="html">On Sun, 12 Nov 2006 08:55:21 -0800, Byron Servies &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=7307507&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bservies@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm not saying this is your problem, but a few years ago I had a VP6
&lt;br&gt;&amp;gt; that worked in single CPU mode but not dual with NetBSD 1.6.
&lt;br&gt;&amp;gt; Eventually, after having it lock up periodically, I gave up and ran
&lt;br&gt;&amp;gt; it as a single CPU machine. &amp;nbsp;That lasted a couple of months before
&lt;br&gt;&amp;gt; the CPU0 socket failed entirely and the machine stopped booting at all.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; No smoke. &amp;nbsp;No noise. &amp;nbsp;The board/cpu was just plain bad, and there was
&lt;br&gt;&amp;gt; no indication before it let go for good that this was the case.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Byron
&lt;/div&gt;&lt;br&gt;I'm hoping it's not something like that. I don't think it is, because it would be a bit of an unfortunate coincidence that the motherboard started to fail at the same time as I switch it from Linux to NetBSD.
&lt;br&gt;&lt;br&gt;Currently running GENERIC.MPDEBUG, hasn't locked up yet.
&lt;br&gt;&lt;br&gt;Chris.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SMP-stability-issues-tp7273064p7307507.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7304988</id>
	<title>Re: SMP stability issues</title>
	<published>2006-11-12T09:33:21Z</published>
	<updated>2006-11-12T09:33:21Z</updated>
	<author>
		<name>Manuel Bouyer</name>
	</author>
	<content type="html">On Sun, Nov 12, 2006 at 08:55:21AM -0800, Byron Servies wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm not saying this is your problem, but a few years ago I had a VP6 &amp;nbsp;
&lt;br&gt;&amp;gt; that worked in single CPU mode but not dual with NetBSD 1.6. &amp;nbsp; 
&lt;br&gt;&amp;gt; Eventually, after having it lock up periodically, I gave up and ran &amp;nbsp;
&lt;br&gt;&amp;gt; it as a single CPU machine. &amp;nbsp;That lasted a couple of months before &amp;nbsp;
&lt;br&gt;&amp;gt; the CPU0 socket failed entirely and the machine stopped booting at all.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; No smoke. &amp;nbsp;No noise. &amp;nbsp;The board/cpu was just plain bad, and there was &amp;nbsp;
&lt;br&gt;&amp;gt; no indication before it let go for good that this was the case.
&lt;/div&gt;&lt;br&gt;I don't think it's a broken board in my case; all the apollo-pro based
&lt;br&gt;dual-PIII motherboard I tried shows this behavior.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Manuel Bouyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=7304988&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bouyer@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;NetBSD: 26 ans d'experience feront toujours la difference
&lt;br&gt;--
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SMP-stability-issues-tp7273064p7304988.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7305925</id>
	<title>Re: SMP stability issues</title>
	<published>2006-11-12T08:55:21Z</published>
	<updated>2006-11-12T08:55:21Z</updated>
	<author>
		<name>Byron Servies</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I'm not saying this is your problem, but a few years ago I had a VP6 &amp;nbsp;
&lt;br&gt;that worked in single CPU mode but not dual with NetBSD 1.6. &amp;nbsp; 
&lt;br&gt;Eventually, after having it lock up periodically, I gave up and ran &amp;nbsp;
&lt;br&gt;it as a single CPU machine. &amp;nbsp;That lasted a couple of months before &amp;nbsp;
&lt;br&gt;the CPU0 socket failed entirely and the machine stopped booting at all.
&lt;br&gt;&lt;br&gt;No smoke. &amp;nbsp;No noise. &amp;nbsp;The board/cpu was just plain bad, and there was &amp;nbsp;
&lt;br&gt;no indication before it let go for good that this was the case.
&lt;br&gt;&lt;br&gt;Byron
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SMP-stability-issues-tp7273064p7305925.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-7301450</id>
	<title>Re: SMP stability issues</title>
	<published>2006-11-12T02:45:13Z</published>
	<updated>2006-11-12T02:45:13Z</updated>
	<author>
		<name>Manuel Bouyer</name>
	</author>
	<content type="html">On Sun, Nov 12, 2006 at 01:23:34PM +1100, Chris Rendle-Short wrote:
&lt;br&gt;&amp;gt; Well, I just tried running GENERIC.MPACPI like some of the others suggested,
&lt;br&gt;&amp;gt; however it is still locking up. Here is the dmesg from GENERIC.MPACPI
&lt;br&gt;&amp;gt; (although it looks like I might need to check my ACPI configuration in the
&lt;br&gt;&amp;gt; BIOS.
&lt;br&gt;&lt;br&gt;It looks kike it's using ACPI
&lt;br&gt;&lt;br&gt;&amp;gt; I will also try a kernel with DIAGNOSTIC, DEBUG and LOCKDEBUG enabled
&lt;br&gt;&amp;gt; as you suggested. Is it likely to matter whether or not ACPI is enabled in
&lt;br&gt;&amp;gt; the test kernel?
&lt;br&gt;&lt;br&gt;Yes, these checks are independant from ACPI vs MPBIOS
&lt;br&gt;&lt;br&gt;&amp;gt; pchb0 at pci0 dev 0 function 0
&lt;br&gt;&amp;gt; pchb0: VIA Technologies VT82C691 (Apollo Pro) Host-PCI (rev. 0xc4)
&lt;br&gt;&lt;br&gt;OK, this is the same motherboard as I have here (I have several of theses). I
&lt;br&gt;also have issues with them, I guess the debug options
&lt;br&gt;will show you that the CPU is missing IPI interrupts on occasion.
&lt;br&gt;If so, the attached patch should help (my boxes are rock solid with this
&lt;br&gt;patch). Note that it's only active if you have
&lt;br&gt;options DIAGNOSTIC
&lt;br&gt;in your kernel config.
&lt;br&gt;Acutally I suspect this is a bug in the chipset; I have Intel-based dual-PIII
&lt;br&gt;motherboards which don't have this issue, nor do P4 SMP systems.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Manuel Bouyer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=7301450&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bouyer@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;NetBSD: 26 ans d'experience feront toujours la difference
&lt;br&gt;--
&lt;br&gt;&lt;br /&gt;Index: i386/pmap.c
&lt;br&gt;===================================================================
&lt;br&gt;RCS file: /cvsroot/src/sys/arch/i386/i386/pmap.c,v
&lt;br&gt;retrieving revision 1.181.2.2
&lt;br&gt;diff -u -r1.181.2.2 pmap.c
&lt;br&gt;--- i386/pmap.c	26 Sep 2005 20:24:52 -0000	1.181.2.2
&lt;br&gt;+++ i386/pmap.c	12 Nov 2006 10:42:15 -0000
&lt;br&gt;@@ -3652,6 +3652,7 @@
&lt;br&gt;&amp;nbsp;	int s;
&lt;br&gt;&amp;nbsp;#ifdef DIAGNOSTIC
&lt;br&gt;&amp;nbsp;	int count = 0;
&lt;br&gt;+	int ipi_retry = 0;
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -3672,6 +3673,9 @@
&lt;br&gt;&amp;nbsp;	/*
&lt;br&gt;&amp;nbsp;	 * Send the TLB IPI to other CPUs pending shootdowns.
&lt;br&gt;&amp;nbsp;	 */
&lt;br&gt;+#ifdef DIAGNOSTIC
&lt;br&gt;+ipi_again:
&lt;br&gt;+#endif
&lt;br&gt;&amp;nbsp;	for (CPU_INFO_FOREACH(cii, ci)) {
&lt;br&gt;&amp;nbsp;		if (ci == self)
&lt;br&gt;&amp;nbsp;			continue;
&lt;br&gt;@@ -3683,9 +3687,20 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	while (self-&amp;gt;ci_tlb_ipi_mask != 0) {
&lt;br&gt;&amp;nbsp;#ifdef DIAGNOSTIC
&lt;br&gt;-		if (count++ &amp;gt; 10000000)
&lt;br&gt;+		if (count++ &amp;gt; 10000000) {
&lt;br&gt;+			for (CPU_INFO_FOREACH(cii, ci)) {
&lt;br&gt;+				if (ci == self)
&lt;br&gt;+					continue;
&lt;br&gt;+				printf(&amp;quot;CPU %ld interrupt level 0x%x pending &amp;quot;
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;&amp;quot;0x%x depth %d ci_ipis %d\n&amp;quot;, ci-&amp;gt;ci_cpuid,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;ci-&amp;gt;ci_ilevel, ci-&amp;gt;ci_ipending,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;ci-&amp;gt;ci_idepth, ci-&amp;gt;ci_ipis);
&lt;br&gt;+			}
&lt;br&gt;+			if (ipi_retry++ &amp;lt; 5)
&lt;br&gt;+				goto ipi_again;
&lt;br&gt;&amp;nbsp;			panic(&amp;quot;TLB IPI rendezvous failed (mask %x)&amp;quot;,
&lt;br&gt;&amp;nbsp;			 &amp;nbsp; &amp;nbsp;self-&amp;gt;ci_tlb_ipi_mask);
&lt;br&gt;+		}
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;		x86_pause();
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;Index: isa/npx.c
&lt;br&gt;===================================================================
&lt;br&gt;RCS file: /cvsroot/src/sys/arch/i386/isa/npx.c,v
&lt;br&gt;retrieving revision 1.107.4.1
&lt;br&gt;diff -u -r1.107.4.1 npx.c
&lt;br&gt;--- isa/npx.c	12 May 2006 15:41:46 -0000	1.107.4.1
&lt;br&gt;+++ isa/npx.c	12 Nov 2006 10:42:16 -0000
&lt;br&gt;@@ -752,6 +752,8 @@
&lt;br&gt;&amp;nbsp;	} else {
&lt;br&gt;&amp;nbsp;#ifdef DIAGNOSTIC
&lt;br&gt;&amp;nbsp;		int spincount;
&lt;br&gt;+		int ipi_retry = 0;
&lt;br&gt;+ipi_again:
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;		IPRINTF((&amp;quot;%s: fp ipi to %s %s lwp %p\n&amp;quot;,
&lt;br&gt;@@ -770,6 +772,16 @@
&lt;br&gt;&amp;nbsp;#ifdef DIAGNOSTIC
&lt;br&gt;&amp;nbsp;			spincount++;
&lt;br&gt;&amp;nbsp;			if (spincount &amp;gt; 10000000) {
&lt;br&gt;+				printf(&amp;quot;CPU %ld interrupt level 0x%x pending &amp;quot;
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;&amp;quot;0x%x depth %d ci_ipis %d\n&amp;quot;, ci-&amp;gt;ci_cpuid,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;ci-&amp;gt;ci_ilevel, ci-&amp;gt;ci_ipending,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;ci-&amp;gt;ci_idepth, ci-&amp;gt;ci_ipis);
&lt;br&gt;+				printf(&amp;quot;CPU %ld interrupt level 0x%x pending &amp;quot;
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;&amp;quot;0x%x depth %d ci_ipis %d\n&amp;quot;, oci-&amp;gt;ci_cpuid,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;oci-&amp;gt;ci_ilevel, oci-&amp;gt;ci_ipending,
&lt;br&gt;+				 &amp;nbsp; &amp;nbsp;oci-&amp;gt;ci_idepth, oci-&amp;gt;ci_ipis);
&lt;br&gt;+				if (ipi_retry++ &amp;lt; 5)
&lt;br&gt;+					goto ipi_again;
&lt;br&gt;&amp;nbsp;				panic(&amp;quot;fp_save ipi didn't&amp;quot;);
&lt;br&gt;&amp;nbsp;			}
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SMP-stability-issues-tp7273064p7301450.html" />
</entry>

</feed>
