[Barrelfish-users] Global CPU scheduling
Simon Peter
speter at inf.ethz.ch
Wed Oct 31 01:49:58 CET 2012
Hi Zeus,
There is rudimentary support for global CPU scheduling via dispatcher
manifests and phase changes. See usr/monitor/resource_ctrl.c and
lib/barrelfish/resource_ctrl.c.
Thread migration is not yet implemented in barrelfish and it's
difficult. The reason are core-local state, like capabilities, and
communication channels, which are explicitly setup to a particular
dispatcher running on a core. In order to migrate a thread, capabilities
need to be migrated and channels re-established on the new dispatcher/core.
There currently is a hack that allows you to migrate a thread from one
CPU to another, without migrating any channels or capabilities. This
works as long as the thread has not setup any of this state on a core
and was useful in porting POSIX applications that typically create a
thread first and then pin it to a particular core immediately after
creation. This is invoked via domain_thread_move_to(), defined in
lib/barrelfish/domain.c.
Barrelfish's model is not to share any OS state among cores, so even if
you have a spanned shared-memory domain, its capabilities are replicated
(but currently not kept consistent) among all involved cores.
Hope this helps,
Simon
On 12-10-30 09:43 AM, Zeus Gómez Marmolejo wrote:
> Hi all,
>
> We were discussing some interesting work that could be tested on the
> ARM big.LITTLE architecture. As this is an heterogeneous system, it is
> very interesting for Barrelfish. But I had some questions regarding
> the task scheduling. As far as I know, Barrelfish doesn't support
> system wide CPU scheduling.
>
> It can happen that an application running on a specific core, because
> of the asymmetric cpu load or its own profile may need to be
> 'migrated' to a faster core (or a different type of the current one).
> Would it be difficult to do this?
>
> I guess in a shared memory system, the dispatcher capabilities can be
> transferred from one core to the other. Is this possible? But it would
> be necessary to have a "cpu server" or something like that, keeping
> track of the use of each CPU.
>
> Then in this case, it would be desirable to switch off a CPU
> completely, when all tasks running there have been migrated out of the
> core. How this could be achieved in Barrelfish?
>
>
> Cheers,
>
> --
> Zeus Gómez Marmolejo
> Barcelona Supercomputing Center
> PhD student
> http://www.bsc.es
>
>
>
>
> _______________________________________________
> Barrelfish-users mailing list
> Barrelfish-users at lists.inf.ethz.ch
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20121030/f187de19/attachment.html
More information about the Barrelfish-users
mailing list