<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
<br>
Mihael Hategan wrote:
<blockquote cite="mid:1240368466.2927.7.camel@localhost" type="cite">
  <pre wrap="">On Tue, 2009-04-21 at 21:31 -0500, Ioan Raicu wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">
    </pre>
    <pre wrap="">I did this with timers. Each task has a max wall time, that dictates
when the timer will fire for a particular task to mark its completion.
I simulated up to 1M processors, and billions of tasks, so the timer
based approach in Java seems to scale quite well to extremes of
millions of concurrent timers.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
One problem is that if you use the same timer object, the events they
generate aren't really concurrent (which is why it's so scalable). Each
timer is a thread that goes through a loop of sorted tasks. I think a
pool of a few timers would do the trick though.

  </pre>
</blockquote>
Right, I know. I implemented it with a pool of threads. <br>
<blockquote cite="mid:1240368466.2927.7.camel@localhost" type="cite">
  <pre wrap=""></pre>
  <blockquote type="cite">
    <pre wrap=""> If you are interested, I can dig through the Falkon code where I
implemented this logic of emulating workers.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
Right. That's almost all that's needed, but there's also the current
time which needs to be faked given that planning depends on how much
time is left in a block, and that depends on what time it is now.
  </pre>
</blockquote>
In my case, there were two ways to remove timer events. One way was to
let them fire themselves when the time asked elapsed. This is one timer
per task. The other reason to remove a timer event would be that the
worker's allocation ended. This is done also with timers, one per
worker. Overall, I used real time as a reference time, and the
implementation could keep up with 1000s, maybe even 10000s of timer
events per second.<br>
<br>
Ioan<br>
<blockquote cite="mid:1240368466.2927.7.camel@localhost" type="cite">
  <pre wrap="">
Seems fairly straightforward.



  </pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">-- 
===================================================
Ioan Raicu, Ph.D.
===================================================
Distributed Systems Laboratory
Computer Science Department
University of Chicago
1100 E. 58th Street, Ryerson Hall
Chicago, IL 60637
===================================================
Email: <a class="moz-txt-link-abbreviated" href="mailto:iraicu@cs.uchicago.edu">iraicu@cs.uchicago.edu</a>
Web:   <a class="moz-txt-link-freetext" href="http://www.cs.uchicago.edu/~iraicu">http://www.cs.uchicago.edu/~iraicu</a>
<a class="moz-txt-link-freetext" href="http://dev.globus.org/wiki/Incubator/Falkon">http://dev.globus.org/wiki/Incubator/Falkon</a>
<a class="moz-txt-link-freetext" href="http://dsl-wiki.cs.uchicago.edu/index.php/Main_Page">http://dsl-wiki.cs.uchicago.edu/index.php/Main_Page</a>
===================================================
===================================================
</pre>
</body>
</html>