atom feed65 messages in org.freebsd.freebsd-smpRe: SMP meeting summary
FromSent OnAttachments
Jason EvansJun 24, 2000 11:56 pm 
Daniel EischenJun 25, 2000 6:58 am 
Terry LambertJun 25, 2000 10:12 am 
Terry LambertJun 25, 2000 10:36 am 
Julian ElischerJun 25, 2000 10:41 am 
Poul-Henning KampJun 25, 2000 11:07 am 
Nate WilliamsJun 25, 2000 9:41 pm 
Frank MayharJun 25, 2000 11:27 pm 
Frank MayharJun 25, 2000 11:31 pm 
Luoqi ChenJun 26, 2000 9:46 am 
Arun SharmaJun 26, 2000 9:47 am 
Jason EvansJun 26, 2000 11:06 am 
Matthew DillonJun 26, 2000 12:26 pm 
Matthew DillonJun 26, 2000 12:48 pm 
John SconiersJun 26, 2000 12:56 pm 
Matthew DillonJun 26, 2000 1:07 pm 
Luoqi ChenJun 26, 2000 1:13 pm 
Doug RabsonJun 26, 2000 1:26 pm 
Jason EvansJun 26, 2000 2:56 pm 
Jason EvansJun 26, 2000 3:14 pm 
Daniel EischenJun 26, 2000 4:59 pm 
Luoqi ChenJun 26, 2000 7:14 pm 
Jason EvansJun 26, 2000 7:55 pm 
Joe EykholtJun 26, 2000 8:09 pm 
Greg LeheyJun 27, 2000 8:00 pm 
Jason EvansJun 27, 2000 8:25 pm 
Daniel EischenJun 27, 2000 8:26 pm 
Greg LeheyJun 27, 2000 9:59 pm 
Greg LeheyJun 27, 2000 10:11 pm 
Terry LambertJun 28, 2000 4:15 pm 
Terry LambertJun 28, 2000 4:18 pm 
Terry LambertJun 28, 2000 4:37 pm 
Terry LambertJun 28, 2000 4:51 pm 
Arun SharmaJun 28, 2000 9:43 pm 
Greg LeheyJul 2, 2000 7:15 pm 
Daniel EischenJul 3, 2000 3:23 am 
Greg LeheyJul 3, 2000 3:30 am 
Jeroen C. van GelderenJul 3, 2000 7:55 am 
Chuck PatersonJul 3, 2000 8:28 am 
Chuck PatersonJul 3, 2000 8:47 am 
Frank MayharJul 3, 2000 8:49 am 
Greg LeheyJul 3, 2000 4:08 pm 
David ScheidtJul 3, 2000 4:35 pm 
Joe EykholtJul 3, 2000 4:47 pm 
Greg LeheyJul 3, 2000 4:52 pm 
Joe EykholtJul 3, 2000 4:58 pm 
Greg LeheyJul 3, 2000 5:26 pm 
Joe EykholtJul 3, 2000 5:41 pm 
Chuck PatersonJul 3, 2000 7:17 pm 
Daniel EischenJul 3, 2000 7:25 pm 
Daniel EischenJul 3, 2000 7:35 pm 
Greg LeheyJul 3, 2000 7:39 pm 
Daniel EischenJul 3, 2000 7:41 pm 
Chuck PatersonJul 3, 2000 8:40 pm 
Alfred PerlsteinJul 3, 2000 10:08 pm 
Greg LeheyJul 3, 2000 10:37 pm 
Peter WemmJul 4, 2000 2:43 pm 
Greg LeheyJul 4, 2000 3:58 pm 
Peter WemmJul 4, 2000 4:06 pm 
Terry LambertJul 5, 2000 3:38 pm 
Terry LambertJul 5, 2000 4:00 pm 
Terry LambertJul 5, 2000 4:06 pm 
Terry LambertJul 5, 2000 4:10 pm 
Alfred PerlsteinJul 5, 2000 4:29 pm 
Terry LambertJul 6, 2000 4:50 pm 
Subject:Re: SMP meeting summary
From:Terry Lambert (tlam@primenet.com)
Date:Jun 25, 2000 10:36:35 am
List:org.freebsd.freebsd-smp

All high-level interrupts (levels 11-15, mostly PIO serial interrupts) in Solaris use spin mutexes and don't use an interrupt thread. They execute in the context of the thread that was currently running. All other interrupts below level 11 (clock, network, disk, etc) use interrupt threads.

A Solaris (non-spinning) mutex will only spin while the owning thread is running. Since BSDi mutexes have owners (correct me if I'm wrong), this seems to be better than arbitrarily spinning.

We need to learn from Dynix (Sequent's UNIX).

The main issue that block concurrency is access to shared resources.

Critical sectioning is actually better than mutex protection of structures for maximizing concurrency, but few people appear to be willing to go down this road, since it requires flatening the call graph for much of the kernel to ensure that locks are held and released at the same call level, so that stack unwinding is not needed to permit preemption.

Dynix had no problem with 32 processors. Most SVR4 variants, and I will include Solaris in this, use mutex protection of structures, and start to fall down drastically over 4 processors.

The main reason Dynix did not have this scaling issue is that it dealt with the shared resource issue by placing most objects into per-processor allocation/deallocation pools. These pools were filled/drained from/to system pools. Lock contention was only necessary when the pools needed filling/draining, or when an object was being migrated between CPUs.

Similarly, one can consider that the idea of CPU reentrancy into the kernel is identical in all but inter-CPU synchronization to the idea of kernel preemption.

It would perhaps be a good idea from this standpoint to adopt the realtime code recently donated to the OpenBSD project, since the issues involved in making a kernel RT are similar to those of ensuring SMP kernel reentrancy without blocking on resource contention.

Mutexes are only used in Solaris when they will be held for very small amounts of time. Read/write locks and semaphores are used for all other instances. While we are modifying the kernel to add mutexes, it would probably be worthwhile to comment those sections of code that could hold mutexes for something other than a very short period of time. Or even use a different naming convention for those mutexes.

Anything that can hold a mutex for other than a very short time will need to go away. This is one of the problems with data protection rather than critical sectioning.

Reader/writer locks are an obvious optimization, if one is to use mutex protection of data. Another similar optimization is intention mode locking. The Soft Updates dependency flooding problem that is associated with an update being commited to the update clock list, and someone else needing to access it (the poor ZD Labs benchmark results were in part traced to this), is one place where intention mode locks would be useful in increasing concurrency.

Search altavista for "+intention +lock +SIX" to find the relevent literature.

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