Yes, you&#39;ve got the problem domain. I don&#39;t have to deliver responses to stimuli all the time within a bound, but I need to supply some probability for that figure.<div><br></div><div>That problem domain is everywhere - all that varies is the bound on the time and the probability of meeting it.</div>
<div><br></div><div>&#39;Hard real time&#39; systems are very expensive to build and, typically, make very low utilisation of resources and have interesting failure modes when timing stops being be met. Meeting strict timing constraints is becoming more difficult as processors become more complex (think multi-level caching, clock rates that vary with temperature and/or load) and when those systems use packet based multiplexed as their interconnect (time slotted shared bus being too expensive).</div>
<div><br></div><div>Yes, the proof obligations are more challenging, no more ability to enumerate the complete state space and prove that the schedule can always be met, no more &#39;certainty&#39; that events and communications will occur within a fixed time. Interestingly giving up that constraint may well have its up-side, it was being used as a design &#39;crutch&#39; - possibly being leaned on too heavily. Having to explicitly consider a probability distribution appears to create more robust overall systems. </div>
<div><br></div><div>On the flip side, this more stochastic approach has to work - the commercial trends in wide area networking mean things are getting more stochastic, deterministic timings for wide are communications will be a thing of the past in 10 - 15 years (or prohibitively expensive). This is already worrying people like electricity distribution folks - their control systems are looking vulnerable to such changes and the issue of co-ordination electricity grids is only going to get more difficult as the number of generations sources increase, as is inevitable.</div>
<div><br></div><div>Perhaps this is too much for a Saturday morning, sunny one at that....</div><div><br></div><div>Neil</div><div><br><div class="gmail_quote">2009/5/1 John Van Enk <span dir="ltr">&lt;<a href="mailto:vanenkj@gmail.com">vanenkj@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div>I think the problem becomes slightly easier if you can provide an upper bound on the time GC will take. If I understand your problem domain, Neil, you&#39;re most concerned with holding up other processes/partitions who are expecting to have a certain amount of processing time per frame. If we can give an upper bound to the GC time, then we can plan for it in the schedule without upsetting the other processes.</div>


<div> </div>
<div>I don&#39;t have an answer (though I&#39;d love one), but I do think that asking for an upper bound substantially simplifies the problem (though, I could be wrong) and still gives you the characterisics you need to give a &#39;time to complete&#39;.<br>

</div>
<div>/jve<br></div>
<div class="gmail_quote"><div><div></div><div class="h5">On Fri, May 1, 2009 at 4:14 AM, Neil Davies <span dir="ltr">&lt;<a href="mailto:semanticphilosopher@googlemail.com" target="_blank">semanticphilosopher@googlemail.com</a>&gt;</span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="padding-left:1ex;margin:0px 0px 0px 0.8ex;border-left:#ccc 1px solid"><div><div></div><div class="h5">Hi<br><br>With the discussion on threads and priority, and given that (in Stats.c) there are lots of useful pieces of information that the run time system is collecting, some of which is already visible (like the total amount of memory mutated) and it is easy to make other measures available - it has raised this question in my mind:<br>

<br>Given that you have access to that information (the stuff that comes out at the end of a run if you use +RTS -S) is it possible to estimate the time a GC will take before asking for one?<br><br>Ignoring, at least for the moment, all the issues of paging, processor cache occupancy etc, what are the complexity drivers for the time to GC?<br>

<br>I realise that it is going to depend on things like, volume of data mutated, count of objects mutated, what fraction of them are live etc - and even if it turns out that these things are very program specific then I have a follow-on question - what properties do you need from your program to be able to construct a viable estimate of GC time from a past history of such garbage collections?<br>

<br>Why am I interested? There are all manners of &#39;real time&#39; in systems, there is a vast class where a statistical bound (ie some sort of &#39;time to complete&#39; CDF) is more than adequate for production use. If this is possible then it opens up areas where all the lovely properties of haskell can be exploited if only you had confidence in the timing behaviour.<br>

<br>Cheers<br>Neil<br></div></div>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>

</blockquote></div><br><br clear="all">
<div></div><br>-- <br><font color="#888888">/jve<br>
</font></blockquote></div><br></div>