* So far it happened in both instances that I ran the simulation for
more than 100k simulated years, so while this is reproducable, it does
take a number of hours to get there. I can see if I can get the effect
faster with a smaller population or something.

* When I start the simulation, the memory usage is 2.4% of the
available memory (16gb), and it is happily running on 8 Intel(R) Xeon
(R) CPU X5482  @ 3.20GHz 's.
(from 'top').

* inc-year:

(defn inc-year
  [_]
  (dosync (commute year inc)))

*Whole source is here:
http://clojure.googlegroups.com/web/eden.clj?gsc=rQ4WoRYAAAB68Q78LH5olacUB2kwveU9S7ibph5ftdNh9K_-frBgDg

*gather indeed scans all refs, but is only called once every 1000
years, and right after an 'await', so I figured everything should have
been free then.


On Dec 22, 2:56 pm, Rich Hickey <[email protected]> wrote:
> On Dec 22, 7:41 am, bOR_ <[email protected]> wrote:
>
>
>
> > Hi all,
>
> > Long post, but it boils down that I'm running into a transaction
> > failed after retry limit after running my simulation for a couple of
> > hours. I chatted briefly with fyuryu in #clojure, and am now pasting
> > some of the hopefully relevant information into this post. Hope anyone
> > can shed a light. The recommendation of fyuryu was to use 'await-for'
> > rather than await, but I'm a but worried that that is just a way to
> > ignore some underlying problem.
>
> > I've the simulation still online and in limbo (long live emacs --
> > daemon), so I can answer additional questions.
>
> > I'll paste part of the program, the output, the agent-errors and some
> > additional things I tried below.
>
> Generally, you can get retry limit failures when a long-running
> transaction contends for the same refs as short-running transactions.
> It is hard to see what is going on with your sim without all the
> source.
>
> How many cores?
> What is the memory utilization?
> Do you have any blocking calls anywhere?
> What does inc-year do?
>
> Calls like 'gather' in a dosync can cause congestion, as I presume it
> does a scan of all refs?
>
> > I started mucking with it a bit more and find that I can't change a
> > single ref. Everything seems to be locked. If I make 'death' do a
> > println each time it is tried, I see that it is indeed trying to apply
> > itself to ref 1 about several thousand times.
>
> I don't like the sound of that. If you could create a reproducible
> test case I'll chase it down.
>
> Rich
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to