<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hi Zeus,<br>
<br>
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.<br>
<br>
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.<br>
<br>
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.<br>
<br>
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.<br>
<br>
Hope this helps,<br>
Simon<br>
<br>
On 12-10-30 09:43 AM, Zeus Gómez Marmolejo wrote:<br>
</div>
<blockquote
cite="mid:CAPgvYs4aJ6vA8aEpCpJukZyFhfBQ4bMYr7Zhxd7=VJqabvH05w@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
Hi all,
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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?</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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?</div>
<div><br>
</div>
<div>
<br>
</div>
<div>Cheers,<br clear="all">
<div><br>
</div>
-- <br>
Zeus Gómez Marmolejo<br>
Barcelona Supercomputing Center<br>
PhD student<br>
<a moz-do-not-send="true" href="http://www.bsc.es"
target="_blank">http://www.bsc.es</a><br>
<br>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Barrelfish-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Barrelfish-users@lists.inf.ethz.ch">Barrelfish-users@lists.inf.ethz.ch</a>
<a class="moz-txt-link-freetext" href="https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users">https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users</a>
</pre>
</blockquote>
<br>
</body>
</html>