Camelia, the Perl 6 bug

IRC log for #parrot, 2011-09-04

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 woosley joined #parrot
00:19 whiteknight jnthn++
00:19 whiteknight that is a pretty good and obvious optimization we can try
00:19 whiteknight in fact, I'm going to try it right now
00:20 jsut_ joined #parrot
00:46 dalek parrot/whiteknight/pmc_is_ptr: e54106b | Whiteknight++ | src/gc/fixed_allocator. (2 files):
00:46 dalek parrot/whiteknight/pmc_is_ptr: first stab at a gc is_pmc_ptr optimization from jnthn__++. Parrot mostly builds and is only a little segfaulty. I need to double-check some logic
00:46 dalek parrot/whiteknight/pmc_is_ptr: review: https://github.com/parrot/parrot/commit/e54106bb84
02:10 preflex_ joined #parrot
03:08 JimmyZ joined #parrot
03:10 redicaps joined #parrot
03:11 jsut joined #parrot
03:42 plobsing joined #parrot
04:29 JimmyZ joined #parrot
05:48 TiMBuS joined #parrot
07:07 preflex joined #parrot
07:18 fperrad joined #parrot
07:21 rurban_ joined #parrot
08:41 Eclesia joined #parrot
08:41 Eclesia hi
08:43 arnsholt joined #parrot
08:53 mj41 joined #parrot
09:10 redicaps joined #parrot
09:59 fperrad joined #parrot
11:06 contingencyplan joined #parrot
11:31 preflex_ joined #parrot
12:01 Eclesia left #parrot
12:02 nbrown joined #parrot
12:05 whiteknight joined #parrot
12:06 schmooster joined #parrot
12:15 whiteknight good morning, #parrot
12:18 Kulag joined #parrot
12:18 redicaps left #parrot
12:25 ambs joined #parrot
12:26 dalek parrot/whiteknight/pmc_is_ptr: 594464e | Whiteknight++ | src/gc/fixed_allocator.c:
12:26 dalek parrot/whiteknight/pmc_is_ptr: a few small changes. Parrot seems to be less segfaulty now
12:26 dalek parrot/whiteknight/pmc_is_ptr: review: https://github.com/parrot/parrot/commit/594464e6f1
12:45 tadzik whiteknight: I was measuring Rakudo build times yesterday, trying now on your branch
12:45 whiteknight awesome
12:45 whiteknight it's rough, so I wouldn't be surprised if there were segfaults or other problems
12:45 whiteknight but tests are clean right now, so i'm trying it
12:45 * jnthn__ will grab it and see how it looks under the profiler too
12:45 jnthn__ whiteknight++
12:50 tadzik what
12:50 * tadzik is scared
12:51 jnthn__ tadzik: ?
12:51 tadzik settings compilation was 10 minutes yesterday morning. about 6.5 yesterday afternnon. Now it's about 3-4 minutes
12:51 tadzik make is finishing, number on the go
12:51 whiteknight with parrot master: real4m58.092s
12:51 whiteknight user4m43.520s
12:51 whiteknight sys0m5.640s
12:51 whiteknight with branch: real4m27.639s
12:51 whiteknight user4m14.450s
12:51 whiteknight sys0m5.650s
12:52 whiteknight it's a very unprecise, impure measurement, but it seems to show improvement
12:52 tadzik whiteknight: is that nom?
12:52 whiteknight rakudo master, I think
12:52 tadzik make  462.97s user 9.06s system 109% cpu 7:11.12 total
12:53 whiteknight the general nature of the workload should be the same in either case
12:53 tadzik 617 seconds yesterday evening
12:53 tadzik rakudo: say (463 / 617) / 617
12:53 p6eval rakudo 5aac38: OUTPUT«0.00121621586124107␤»
12:53 tadzik erm
12:53 tadzik rakudo: say (617 - 463) / 617
12:53 p6eval rakudo 5aac38: OUTPUT«0.249594813614263␤»
12:53 tadzik that's one nice improvement
12:53 tadzik whiteknight++
12:54 whiteknight not bad for ~5 minutes of work
12:54 whiteknight jnthn__++ for identifying the problem
12:54 tadzik yeah
12:54 jnthn__ er, yeah. It took more than 5 minutes to understand :P
12:54 whiteknight jnthn__: The great part from my perspective is that I didn't need to understand it :) Standing on the shoulders of giants, etc
12:55 jnthn__ whiteknight: I found it using a sampling profiler, fwiw. One that just takes stack samples at regular time intervals, rather than doing instruction counting.
12:55 whiteknight jnthn__: what's the name of the program? Sounds like a nice tool for me to add to my arsenal
12:56 tadzik whiteknight: needless to say, no segfaults or any problems at all
12:56 jnthn__ whiteknight: It's just one of the ways you can use the Visual Studio 2010 built-in profiling stuff. :)
12:56 whiteknight tadzik: Any time I touch malloc/realloc/free, there is a sense of concern
12:56 tadzik yeah, I know thefeeling
12:56 tadzik oh, okay, gc bugs
12:56 tadzik t/pod/why.t
12:57 tadzik Nominal type check failed for parameter '(null)'; expected $?CLASS but got Sub+{<anon>} instead
12:57 tadzik or not, parrot -G perl6.pbc t/pod/why.t
12:57 tadzik ...shows it too
12:57 jnthn__ tadzik: huh, I saw that one yesterday, but it was becuase I busted soemthing
12:57 jnthn__ tadzik: I fixed it shortly thereafter
12:57 tadzik oh, okay, I wasn't on blead
12:59 tadzik maybe I'll try wherefore-gc-bug and see if it magically works now :P
13:00 jnthn__ whiteknight: Anyways, the point I was making was that an instruction counting one may not have shown this as a hot path, since I suspect it's the cache misses it entailed that made it really costly.
13:00 jnthn__ How much this helps folks may depend hugely between hardware also.
13:01 jnthn__ oh noes...segfault when compiling setting here :(
13:01 jnthn__ oh, ahng on
13:01 jnthn__ yeah, false alarm.
13:03 tadzik below 3:30 to compile the setting
13:03 jnthn__ tadzik: heh, and it was what at the start of the weekend? :)
13:03 * JimmyZ can't build nqp on windows. but can build on linux
13:03 whiteknight is that good?
13:04 tadzik jnthn__: 10 minutes yesterday :)
13:04 jnthn__ whiteknight: It's good compared to 10 minutes :)
13:04 tadzik jnthn__: you made it 6.something yesterday
13:04 jnthn__ whiteknight: I did a bunch of other improvements yesterday
13:04 jnthn__ whiteknight: Then found this issue.
13:05 whiteknight okay, preliminary results here seem very good. I'll open a pull request on github and start getting some review on it
13:05 dalek Rosella: 9e46b95 | Whiteknight++ | Makefile:
13:05 dalek Rosella: Add a Makefile, to cover some common tasks
13:05 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/9e46b95b45
13:07 dalek parrot/whiteknight/pmc_is_ptr: 1b0e041 | Whiteknight++ | src/gc/fixed_allocator. (2 files):
13:07 dalek parrot/whiteknight/pmc_is_ptr: misc cleanups
13:07 dalek parrot/whiteknight/pmc_is_ptr: review: https://github.com/parrot/parrot/commit/1b0e041e79
13:09 whiteknight https://github.com/parrot/parrot/pull/159
13:12 cotto whiteknight, oprofile might be something we should look at
13:12 tadzik commented
13:12 * cotto has to take off
13:12 tadzik cotto: fly safe
13:13 jnthn__ whiteknight: Nice. The changes push that function *way* down the profile.
13:13 whiteknight awesome. Now what's next on the hit list?
13:13 jnthn__ Do you want an interim report period/payment, or just everything
13:13 jnthn__ at the end when it's done?
13:13 jnthn__ gah
13:13 jnthn__ pool_allocate
13:15 jnthn__ whiteknight: Basically, allocating stuff from a pool
13:15 whiteknight that might trigger a full GC run, so that's not super surprising
13:16 jnthn__ ah, yeah
13:16 whiteknight actually, I don't see how that helps
13:17 whiteknight I mean, I don't see why it triggers a GC run where it does. It's wrong
13:17 whiteknight it runs GC in allocate_new_pool_arena, and never checks if space got freed up
13:18 jnthn__ yeah, I was a little curious about that
13:18 jnthn__ It does a GC run and then goes and allocates a new pool anyway
13:20 jnthn__ whiteknight: The management of the bounds list could be a little better, I ssuepct.
13:20 jnthn__ whiteknight: We call realloc every time we allocate a new arena here.
13:21 jnthn__ Not sure how costly that is, but if we could resize less often I guess it gets cheaper.
13:23 whiteknight yeah, it was naive
13:24 whiteknight I can grow the list by chunks
13:24 jnthn__ If you grow it by a fixed amount you don't even need to track the current available size and could just go on modulo of the current number of arenas.
13:25 whiteknight yeah.
13:26 jnthn__ Of course, growing by relative amounts can be smarter.
13:27 whiteknight if what you're saying is true, that we end up with 500-1000 arenas total, we can grow the list by 100 at a time
13:27 whiteknight 100 * sizeof(void*) is negligible in the case of smaller workloads
13:28 jnthn__ whiteknight: The 100,000 was a guess. I suspect we have more. But yeah, that sounds OK.
13:28 jnthn__ Though I'd choose a power of 2.
13:28 jnthn__ Not 100
13:28 whiteknight 128
13:28 jnthn__ *nod*
13:29 whiteknight I'll play with that a little bit. The improvement won't be much
13:36 * jnthn__ is trying to work out how pool free list handling works
13:36 whiteknight down that path is madness
13:36 jnthn__ ah, I see
13:41 jnthn__ whiteknight: Well, it's a little tricky to grok at first, but I see what's going on.
13:41 dalek parrot/whiteknight/pmc_is_ptr: 3f42979 | Whiteknight++ | src/gc/fixed_allocator. (2 files):
13:41 dalek parrot/whiteknight/pmc_is_ptr: Allocate the array_bounds array in chunks of 128, so we aren't doing a realloc on every arena allocation
13:41 dalek parrot/whiteknight/pmc_is_ptr: review: https://github.com/parrot/parrot/commit/3f42979a6d
13:42 whiteknight I think that last commit may have an off-by-one error, but it's in the direction of extra padding
13:45 whiteknight the pool free list is very different from the last time I worked on it. I think bacek completely redid it
13:47 kid51 joined #parrot
13:47 kid51 smolder.parrot.org appears to be off-line
13:48 * tadzik measures
13:48 whiteknight tadzik: I have another fix coming in a minute, if you want to wait for that
13:48 tadzik okay
13:49 kid51 In whiteknight/pmc_is_ptr branch, I successfully build and test with all-gcc build, but I get a build failure with all-g++ build.
13:50 nopaste "kid51" at 192.168.1.3 pasted "pmc_is_ptr branch: build failure with g++" (352 lines) at http://nopaste.snit.ch/78132
13:50 dalek parrot/whiteknight/pmc_is_ptr: 1e1a6e6 | Whiteknight++ | src/gc/fixed_allocator.c:
13:50 dalek parrot/whiteknight/pmc_is_ptr: Allocate the arena_bounds array when the pool is allocated. Don't check for NULL every time we get a new arena
13:50 dalek parrot/whiteknight/pmc_is_ptr: review: https://github.com/parrot/parrot/commit/1e1a6e6b2a
13:50 whiteknight joined #parrot
13:51 whiteknight tadzik: try that
13:52 whiteknight should be very small, if anything
13:53 tadzik we'll see
13:53 dalek Heuristic branch merge: pushed 43 commits to rakudo/nom-buf by tadzik
13:53 tadzik err, what?
13:53 dalek Heuristic branch merge: pushed 215 commits to rakudo/wherefore-gc-bug by tadzik
13:53 tadzik oh, okay
14:00 tadzik make  456.76s user 6.35s system 110% cpu 6:59.09 total
14:01 tadzik whiteknight: slightly faster run, may be noise. Same memory usage
14:01 whiteknight okay, that's fine. at least it's no worse
14:01 whiteknight I call that success
14:01 jnthn__ Win32 has a more expensive realloc than various other platforms, I think. So it may be more noticable here. :)
14:02 jnthn Anyway, whiteknight++ for working on this :)
14:03 whiteknight no problem. Thanks for identifying the problem
14:03 whiteknight That's all I have for the morning though. I'm signing off now
14:03 whiteknight let me know if you see anything else obvious
14:04 whiteknight left #parrot
14:32 dalek nqp: 41e1fd8 | jonathan++ | src/HLL/SerializationContextBuilder.pm:
14:32 dalek nqp: Make check for if we're in precompilation mode cheaper. Saves walking a load of call frames if we're quite deep in the parse, though probably only a small saving overall.
14:32 dalek nqp: review: https://github.com/perl6/nqp/commit/41e1fd8166
14:32 dalek nqp: f8a2d0a | jonathan++ | src/6model/knowhow_bootstrapper.c:
14:32 dalek nqp: Have KnowHOW publish a method cache, which should avoid a bunch of method cache misses and the resulting .^find_method call.
14:32 dalek nqp: review: https://github.com/perl6/nqp/commit/f8a2d0a0f9
14:32 dalek nqp: 903eaae | jonathan++ | src/6model/sixmodelobject.c:
14:32 dalek nqp: Avoid a use of Parrot_ext_call, so if we do have to go to .^find_method to locate a method then at least we don't have to do the whole signature string parsing thing.
14:32 dalek nqp: review: https://github.com/perl6/nqp/commit/903eaae683
14:36 SHODAN joined #parrot
14:51 ambs joined #parrot
14:57 preflex joined #parrot
15:00 whiteknight joined #parrot
15:01 whiteknight it would be awesome if dalek reported pull requests in here, or comments on pull requests
15:23 rurban_ joined #parrot
15:36 benabik_ joined #parrot
15:45 dalek nqp: a29c8a7 | jonathan++ | src/ (3 files):
15:45 dalek nqp: Add a way to mark the method cache as being authoritative. Can't use this in Rakudo's meta-objects yet, but we can in NQP ones.
15:45 dalek nqp: review: https://github.com/perl6/nqp/commit/a29c8a798f
15:45 dalek nqp: c66f98e | jonathan++ | src/how/NQPClassHOW.pm:
15:45 dalek nqp: Mark NQP classes as having an authoritative method cache.
15:45 dalek nqp: review: https://github.com/perl6/nqp/commit/c66f98e4ec
15:45 dalek nqp: cf40a26 | jonathan++ | src/stage0/ (6 files):
15:45 dalek nqp: Update bootstrap files.
15:45 dalek nqp: review: https://github.com/perl6/nqp/commit/cf40a26e02
15:45 dalek nqp: fbcf303 | jonathan++ | src/6model/knowhow_bootstrapper.c:
15:45 dalek nqp: Mark method cache put out by KnowHOW and authoritative, and give the bootstrapped KnowHOW itself a method cache. We now get no method cache misses during the entire NQP build of itself.
15:45 dalek nqp: review: https://github.com/perl6/nqp/commit/fbcf3037d9
15:48 preflex joined #parrot
15:50 dalek parrot: 0fc4a80 | jimmy++ | src/pmc/sub.pmc:
15:50 dalek parrot: support callcontext reuse, patch courtesy of mls++
15:50 dalek parrot: review: https://github.com/parrot/parrot/commit/0fc4a80827
15:52 jnthn aha, the patch that fixes the memory leak
15:55 * JimmyZ is afraid that some guys doesn't like it before push
15:55 jnthn I'm happy to see it go in.
15:55 plobsing I like that best of all the options provided
15:56 jnthn Yeah, I think exposing the free registers function in the API woulda been the less awesome option.
15:56 plobsing during normal operation, cur_ctx should never == caller_ctx, so there is no chance this will bite someone not *trying* to use the feature
15:58 jnthn That also.
16:04 mj41 joined #parrot
16:07 benabik whiteknight: g++ failures are void* -> void** casts and a couple place where you casted to size_t but assigned to void*.  Testing quick fixes now.
16:08 whiteknight and while you're there, tell g++ to suck an egg
16:08 whiteknight benabik++ for the fixe
16:08 whiteknight fixes
16:15 benabik D'oh.  Commit then reset, not reset then commit.
16:18 tadzik :P
16:21 dalek parrot/whiteknight/pmc_is_ptr: dd3f6b8 | benabik++ | src/gc/fixed_allocator.c:
16:21 dalek parrot/whiteknight/pmc_is_ptr: Fix g++ build errors
16:21 dalek parrot/whiteknight/pmc_is_ptr:
16:21 dalek parrot/whiteknight/pmc_is_ptr: g++ is far pickier about casts, and it's good to make these things
16:21 dalek parrot/whiteknight/pmc_is_ptr: explicit.
16:21 dalek parrot/whiteknight/pmc_is_ptr: review: https://github.com/parrot/parrot/commit/dd3f6b86f1
16:26 dalek rakudo/nom: 3654b00 | jonathan++ | tools/build/NQP_REVISION:
16:26 dalek rakudo/nom: Bump NQP_REVISION to get various performance improvements.
16:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3654b009ff
16:42 kid51 joined #parrot
16:48 kid51 whiteknight/pmc_is_ptr branch now building/testing successfully with all g++-build on linux/i386; benabik++
16:59 kid51 jnthn: ping
17:22 jnthn kid51: pong
17:25 contingencyplan joined #parrot
17:25 dalek Rosella/harness_3: eb7bc71 | Whiteknight++ | / (2 files):
17:25 dalek Rosella/harness_3: Start redoing the Harness class API so that we don't need to manually create a view or a testrun factory for basic usage
17:25 dalek Rosella/harness_3: review: https://github.com/Whiteknig​ht/Rosella/commit/eb7bc71952
17:25 dalek Rosella/harness_3: 1bcc354 | Whiteknight++ | / (4 files):
17:25 dalek Rosella/harness_3: Use Query in Harness. Add in an option to sort test files in a run.
17:25 dalek Rosella/harness_3: review: https://github.com/Whiteknig​ht/Rosella/commit/1bcc35420e
17:25 dalek Rosella/harness_3: be0c635 | Whiteknight++ | src/include/Query.winxed:
17:25 dalek Rosella/harness_3: Use mk_winxed_header tool to flesh out the contents of src/include/Query.winxed
17:25 dalek Rosella/harness_3: review: https://github.com/Whiteknig​ht/Rosella/commit/be0c635242
17:25 dalek Rosella/harness_3: 9a4df16 | Whiteknight++ | src/harness/ (2 files):
17:25 dalek Rosella/harness_3: Cleanup some code with Query
17:25 dalek Rosella/harness_3: review: https://github.com/Whiteknig​ht/Rosella/commit/9a4df162b5
17:28 plobsing joined #parrot
17:41 kid51 jnthn: Some people in NYC are (again) talking about Rakudo hack sessions.
17:41 kid51 Is there a new projected date for rakudo nom becoming master?
17:55 sorear kid51: currently, "never"
17:55 sorear kid51: we've decided to go master-less
17:55 sorear kid51: alpha, beijing, nom - nom is the current branch
17:57 kid51 sorear: Well, that's news to me -- which I suspect it's even bigger news to people who haven't kept up with Rakudo.
17:57 kid51 Has that decision been publicized anywhere?
17:57 sorear ask pmichaud
17:58 PerlJam kid51: I imagine not until it's a done deal will it be publicized anywhere
17:59 PerlJam i.e., there's nothing to do in order to go masterless, but until there's a release or something that would warrant publication, it won't get publicized.
18:01 jnthn kid51: On rakudo.org pmichaud++ recently wrote that we're expecting to do a nom-based release within the next 3 weeks (as of when that was written). That's probably a more useful indication of its readiness
18:01 jnthn brb, dinner
18:03 kid51 Would you still recommend Rakudo* for people who want to start playing with Perl 6 syntax?
18:04 moritz yes
18:05 kid51 thx
18:40 dalek Rosella/harness_3: 2a0a823 | Whiteknight++ | src/query/ (2 files):
18:40 dalek Rosella/harness_3: add in a flatten method to Query. Flattens nested structures into a single flat array.
18:40 dalek Rosella/harness_3: review: https://github.com/Whiteknig​ht/Rosella/commit/2a0a823716
18:40 dalek Rosella/harness_3: f3fd461 | Whiteknight++ | src/harness/ (4 files):
18:40 dalek Rosella/harness_3: More fixes and cleanups for Harness using Query
18:40 dalek Rosella/harness_3: review: https://github.com/Whiteknig​ht/Rosella/commit/f3fd461131
18:40 dalek Rosella/harness_3: 0f7924e | Whiteknight++ | src/harness/testfile/Custom.winxed:
18:40 dalek Rosella/harness_3: use __FUNCTION__
18:40 dalek Rosella/harness_3: review: https://github.com/Whiteknig​ht/Rosella/commit/0f7924ecc2
18:44 mj41 joined #parrot
19:11 pmichaud_ we always recommend Rakudo Star for users of Perl 6.  We never recommend the github repo or compiler releases for anyone other than compiler developers or people who like bleeding edge stuff.
19:16 bubaflub joined #parrot
20:07 NotFound joined #parrot
20:07 NotFound Hi
20:16 Kulag joined #parrot
20:17 jsut_ joined #parrot
20:26 Drossel joined #parrot
20:38 tadzik hi NotFound
20:38 tadzik seen bacek
20:38 aloha bacek was last seen in #parrot 94 days 10 hours ago joining the channel.
20:45 cotto ~~
20:45 cotto seen aloha
20:45 aloha aloha was last seen in #parrot 6 days 5 hours ago joining the channel.
20:54 soh_cah_toa joined #parrot
21:02 nbrown joined #parrot
21:05 Kulag joined #parrot
21:22 Kulag joined #parrot
21:35 Kulag joined #parrot
21:39 Drossel joined #parrot
22:27 logie joined #parrot
23:14 benabik aloha needs a mirror
23:15 benabik Although perhaps we don't want a self-aware bot...
23:15 benabik aloha: aloha?
23:15 aloha benabik: aloha is simple Bot::BasicBot::Pluggable hosted on https://github.com/bacek/aloha
23:34 rfw joined #parrot
23:37 jsut joined #parrot

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced