* 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 -~----------~----~----~----~------~----~------~--~---
