[Haskell-cafe] Re: concurrent haskell: thread priorities

Simon Marlow marlowsd at gmail.com
Fri Jan 9 04:25:54 EST 2009


Bulat Ziganshin wrote:

> Monday, December 22, 2008, 11:07:32 PM, you wrote:
> 
>> The threaded RT creates an OS thread for each CPU/core on the system and
>> uses them to multiplex userland threads. These are context switched 
>> whenever they block/yield/gc and no priorities can be assigned.
> 
> not exactly. amount of OS threads created controlled by +RTS -N option
> to the program; unless program has special function that RTS calls to
> set up this value

There might be multiple OS threads per CPU, if for example one of the 
Haskell threads makes a safe foreign call another OS thread takes over 
running the rest of the Haskell threads on that CPU.

When you say "+RTS -N2" all you are saying is "I want to allow up to 2 
Haskell threads to run simultaneously".  The actual mapping between Haskell 
threads and OS threads is decided by the RTS, hopefully in a sensible way, 
within this constraint.

> they are switched on every minor GC which by default occurs after
> each 256kb allocated which is rather frequent event

512Kb by default (caches are bigger these days), and configurable with +RTS 
-A<size>.

Cheers,
	Simon


More information about the Haskell-Cafe mailing list