+
+ <para>The following options affect the way the runtime schedules
+ threads on CPUs:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-qa</option></term>
+ <indexterm><primary><option>-qa</option></primary><secondary>RTS
+ option</secondary></indexterm>
+ <listitem>
+ <para>Use the OS's affinity facilities to try to pin OS
+ threads to CPU cores. This is an experimental feature,
+ and may or may not be useful. Please let us know
+ whether it helps for you!</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-qm</option></term>
+ <indexterm><primary><option>-qm</option></primary><secondary>RTS
+ option</secondary></indexterm>
+ <listitem>
+ <para>Disable automatic migration for load balancing.
+ Normally the runtime will automatically try to schedule
+ threads across the available CPUs to make use of idle
+ CPUs; this option disables that behaviour. Note that
+ migration only applies to threads; sparks created
+ by <literal>par</literal> are load-balanced separately
+ by work-stealing.</para>
+
+ <para>
+ This option is probably only of use for concurrent
+ programs that explicitly schedule threads onto CPUs
+ with <literal>GHC.Conc.forkOnIO</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-qw</option></term>
+ <indexterm><primary><option>-qw</option></primary><secondary>RTS
+ option</secondary></indexterm>
+ <listitem>
+ <para>Migrate a thread to the current CPU when it is woken
+ up. Normally when a thread is woken up after being
+ blocked it will be scheduled on the CPU it was running on
+ last; this option allows the thread to immediately migrate
+ to the CPU that unblocked it.</para>
+
+ <para>The rationale for allowing this eager migration is
+ that it tends to move threads that are communicating with
+ each other onto the same CPU; however there are
+ pathalogical situations where it turns out to be a poor
+ strategy. Depending on the communication pattern in your
+ program, it may or may not be a good idea.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>