[racket-dev] [plt] Push #24367: master branch updated

From: Ryan Culpepper (ryan at cs.utah.edu)
Date: Tue Feb 28 16:39:56 EST 2012

On 02/28/2012 01:56 PM, Robby Findler wrote:
> On Tue, Feb 28, 2012 at 2:43 PM, Ryan Culpepper<ryan at cs.utah.edu>  wrote:
>> On my machine before the change, "raco setup -D" took 8m13s real, 13m52s
>> user; after the change, it takes 4m0s real, 9m3s user.
> I guess you have a faster machine than I do. (Are you running the 64
> bit build or 32?)


> FWIW, the times I'm reporting are after your commit.

Yes, I got that. I just wanted to add one before/after comparison. If 
anyone sees radically different before/after results, I'd like to hear 
about it.

>> It's useful to look at the progress output, particularly the place that a
>> particular collection is scheduled on. Before, progress would stop on the
>> "macro-debugger" collection for a long time. Now, you can still see
>> individual places blocking for long periods of time by looking for long runs
>> where a place number is absent.
>> On my machine, the "images" collection is scheduled on place 0, and it keeps
>> 0 occupied for a long time---until around when setup hits "scribblings".
>> Then place 2 is occupied by "gui-debugger", then 1 is occupied by
>> "macro-debugger". CPUs utilization drops to around 75% when it hits
>> "gui-debugger" and then to around 50% at "macro-debugger". Both of those
>> collections depend on "images". It drops again, briefly, around "scribble",
>> which is also around when "images" finishes---I'm not sure what that means.
>> It also takes a while to climb back to around 100%, and I'm not sure why
>> that happens either (possibly related to "scribble"/"scribblings"?).
>> It seems like it should help to issue more collections while those few
>> block, but doing it naively (-j 5 or -j 6) doesn't work.
> I've put together something that reads .dep files and does a
> topological sort of the collections based on the dependencies (after
> breaking links to get rid of the cycles) and uses that to schedule the
> collections. I'm running some timing tests now.

I worry that a topologically-sorted list might actually result in worse 
scheduling. It may place dependencies close together and they might get 
scheduled on different places.

If B depends on A, then B should be *started* only after A is 
*completed*. But the current interpretation of the worklist is just the 
order in which to *start* collections.


Posted on the dev mailing list.