Parrot 3.7.0 "Wanda" | parrot.org | Log: irclog.perlgeek.de/parrot/today | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 25 August 2011.
00:00 woosley joined
whiteknight jnthn++ 00:19
that is a pretty good and obvious optimization we can try
in fact, I'm going to try it right now
00:20 jsut_ joined
dalek rrot/whiteknight/pmc_is_ptr: e54106b | Whiteknight++ | src/gc/fixed_allocator. (2 files):
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
02:10 preflex_ joined 03:08 JimmyZ joined 03:10 redicaps joined 03:11 jsut joined 03:42 plobsing joined 04:29 JimmyZ joined 05:48 TiMBuS joined 07:07 preflex joined 07:18 fperrad joined 07:21 rurban_ joined 08:41 Eclesia joined
Eclesia hi 08:41
08:43 arnsholt joined 08:53 mj41 joined 09:10 redicaps joined 09:59 fperrad joined 11:06 contingencyplan joined 11:31 preflex_ joined 12:01 Eclesia left 12:02 nbrown joined 12:05 whiteknight joined 12:06 schmooster joined
whiteknight good morning, #parrot 12:15
12:18 Kulag joined, redicaps left 12:25 ambs joined
dalek rrot/whiteknight/pmc_is_ptr: 594464e | Whiteknight++ | src/gc/fixed_allocator.c:
a few small changes. Parrot seems to be less segfaulty now
12:26
tadzik whiteknight: I was measuring Rakudo build times yesterday, trying now on your branch 12:45
whiteknight awesome
it's rough, so I wouldn't be surprised if there were segfaults or other problems
but tests are clean right now, so i'm trying it
jnthn__ will grab it and see how it looks under the profiler too
whiteknight++
tadzik what 12:50
tadzik is scared
jnthn__ tadzik: ? 12:51
tadzik settings compilation was 10 minutes yesterday morning. about 6.5 yesterday afternnon. Now it's about 3-4 minutes
make is finishing, number on the go
whiteknight with parrot master: real\t4m58.092s
user\t4m43.520s
sys\t0m5.640s
with branch: real\t4m27.639s
user\t4m14.450s
sys\t0m5.650s
it's a very unprecise, impure measurement, but it seems to show improvement 12:52
tadzik whiteknight: is that nom?
whiteknight rakudo master, I think
tadzik make 462.97s user 9.06s system 109% cpu 7:11.12 total
whiteknight the general nature of the workload should be the same in either case 12:53
tadzik 617 seconds yesterday evening
rakudo: say (463 / 617) / 617
p6eval rakudo 5aac38: OUTPUT«0.00121621586124107␤»
tadzik erm
rakudo: say (617 - 463) / 617
p6eval rakudo 5aac38: OUTPUT«0.249594813614263␤»
tadzik that's one nice improvement
whiteknight++
whiteknight not bad for ~5 minutes of work 12:54
jnthn__++ for identifying the problem
tadzik yeah
jnthn__ er, yeah. It took more than 5 minutes to understand :P
whiteknight jnthn__: The great part from my perspective is that I didn't need to understand it :) Standing on the shoulders of giants, etc
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
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. :)
whiteknight tadzik: Any time I touch malloc/realloc/free, there is a sense of concern
tadzik yeah, I know thefeeling
oh, okay, gc bugs
t/pod/why.t
Nominal type check failed for parameter '(null)'; expected $?CLASS but got Sub+{<anon>} instead 12:57
or not, parrot -G perl6.pbc t/pod/why.t
...shows it too
jnthn__ tadzik: huh, I saw that one yesterday, but it was becuase I busted soemthing
tadzik: I fixed it shortly thereafter
tadzik oh, okay, I wasn't on blead
maybe I'll try wherefore-gc-bug and see if it magically works now :P 12:59
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
How much this helps folks may depend hugely between hardware also.
oh noes...segfault when compiling setting here :( 13:01
oh, ahng on
yeah, false alarm.
tadzik below 3:30 to compile the setting 13:03
jnthn__ tadzik: heh, and it was what at the start of the weekend? :)
JimmyZ can't build nqp on windows. but can build on linux
whiteknight is that good?
tadzik jnthn__: 10 minutes yesterday :) 13:04
jnthn__ whiteknight: It's good compared to 10 minutes :)
tadzik jnthn__: you made it 6.something yesterday
jnthn__ whiteknight: I did a bunch of other improvements yesterday
whiteknight: Then found this issue.
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 sella: 9e46b95 | Whiteknight++ | Makefile:
Add a Makefile, to cover some common tasks
rrot/whiteknight/pmc_is_ptr: 1b0e041 | Whiteknight++ | src/gc/fixed_allocator. (2 files):
misc cleanups
13:07
whiteknight github.com/parrot/parrot/pull/159 13:09
cotto whiteknight, oprofile might be something we should look at 13:12
tadzik commented
cotto has to take off
tadzik cotto: fly safe
jnthn__ whiteknight: Nice. The changes push that function *way* down the profile. 13:13
whiteknight awesome. Now what's next on the hit list?
jnthn__ Do you want an interim report period/payment, or just everything
at the end when it's done?
gah
pool_allocate
whiteknight: Basically, allocating stuff from a pool 13:15
whiteknight that might trigger a full GC run, so that's not super surprising
jnthn__ ah, yeah 13:16
whiteknight actually, I don't see how that helps
I mean, I don't see why it triggers a GC run where it does. It's wrong 13:17
it runs GC in allocate_new_pool_arena, and never checks if space got freed up
jnthn__ yeah, I was a little curious about that 13:18
It does a GC run and then goes and allocates a new pool anyway
whiteknight: The management of the bounds list could be a little better, I ssuepct. 13:20
whiteknight: We call realloc every time we allocate a new arena here.
Not sure how costly that is, but if we could resize less often I guess it gets cheaper. 13:21
whiteknight yeah, it was naive 13:23
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.
whiteknight yeah. 13:25
jnthn__ Of course, growing by relative amounts can be smarter. 13:26
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
100 * sizeof(void*) is negligible in the case of smaller workloads
jnthn__ whiteknight: The 100,000 was a guess. I suspect we have more. But yeah, that sounds OK. 13:28
Though I'd choose a power of 2.
Not 100
whiteknight 128
jnthn__ *nod*
whiteknight I'll play with that a little bit. The improvement won't be much 13:29
jnthn__ is trying to work out how pool free list handling works 13:36
whiteknight down that path is madness
jnthn__ ah, I see
whiteknight: Well, it's a little tricky to grok at first, but I see what's going on. 13:41
dalek rrot/whiteknight/pmc_is_ptr: 3f42979 | Whiteknight++ | src/gc/fixed_allocator. (2 files):
Allocate the array_bounds array in chunks of 128, so we aren't doing a realloc on every arena allocation
whiteknight I think that last commit may have an off-by-one error, but it's in the direction of extra padding 13:42
the pool free list is very different from the last time I worked on it. I think bacek completely redid it 13:45
13:47 kid51 joined
kid51 smolder.parrot.org appears to be off-line 13:47
tadzik measures 13:48
whiteknight tadzik: I have another fix coming in a minute, if you want to wait for that
tadzik okay
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:49
nopaste "kid51" at 192.168.1.3 pasted "pmc_is_ptr branch: build failure with g++" (352 lines) at nopaste.snit.ch/78132 13:50
dalek rrot/whiteknight/pmc_is_ptr: 1e1a6e6 | Whiteknight++ | src/gc/fixed_allocator.c:
Allocate the arena_bounds array when the pool is allocated. Don't check for NULL every time we get a new arena
13:50 whiteknight joined
whiteknight tadzik: try that 13:51
should be very small, if anything 13:52
tadzik we'll see 13:53
dalek Heuristic branch merge: pushed 43 commits to rakudo/nom-buf by tadzik
tadzik err, what?
dalek Heuristic branch merge: pushed 215 commits to rakudo/wherefore-gc-bug by tadzik
tadzik oh, okay
make 456.76s user 6.35s system 110% cpu 6:59.09 total 14:00
whiteknight: slightly faster run, may be noise. Same memory usage 14:01
whiteknight okay, that's fine. at least it's no worse
I call that success
jnthn__ Win32 has a more expensive realloc than various other platforms, I think. So it may be more noticable here. :)
jnthn Anyway, whiteknight++ for working on this :) 14:02
whiteknight no problem. Thanks for identifying the problem 14:03
That's all I have for the morning though. I'm signing off now
let me know if you see anything else obvious
14:04 whiteknight left
dalek p: 41e1fd8 | jonathan++ | src/HLL/SerializationContextBuilder.pm:
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
p: f8a2d0a | jonathan++ | src/6model/knowhow_bootstrapper.c:
Have KnowHOW publish a method cache, which should avoid a bunch of method cache misses and the resulting .^find_method call.
p: 903eaae | jonathan++ | src/6model/sixmodelobject.c:
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:36 SHODAN joined 14:51 ambs joined 14:57 preflex joined 15:00 whiteknight joined
whiteknight it would be awesome if dalek reported pull requests in here, or comments on pull requests 15:01
15:23 rurban_ joined 15:36 benabik_ joined
dalek p: a29c8a7 | jonathan++ | src/ (3 files):
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
p: c66f98e | jonathan++ | src/how/NQPClassHOW.pm:
Mark NQP classes as having an authoritative method cache.
p: cf40a26 | jonathan++ | src/stage0/ (6 files):
Update bootstrap files.
p: fbcf303 | jonathan++ | src/6model/knowhow_bootstrapper.c:
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:48 preflex joined
dalek rrot: 0fc4a80 | jimmy++ | src/pmc/sub.pmc:
support callcontext reuse, patch courtesy of mls++
15:50
jnthn aha, the patch that fixes the memory leak 15:52
JimmyZ is afraid that some guys doesn't like it before push 15:55
jnthn I'm happy to see it go in.
plobsing I like that best of all the options provided
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
jnthn That also. 15:58
16:04 mj41 joined
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:07
whiteknight and while you're there, tell g++ to suck an egg 16:08
benabik++ for the fixe
fixes
benabik D'oh. Commit then reset, not reset then commit. 16:15
tadzik :P 16:18
dalek rrot/whiteknight/pmc_is_ptr: dd3f6b8 | benabik++ | src/gc/fixed_allocator.c:
Fix g++ build errors

g++ is far pickier about casts, and it's good to make these things explicit.
16:21
kudo/nom: 3654b00 | jonathan++ | tools/build/NQP_REVISION:
Bump NQP_REVISION to get various performance improvements.
16:26
16:42 kid51 joined
kid51 whiteknight/pmc_is_ptr branch now building/testing successfully with all g++-build on linux/i386; benabik++ 16:48
jnthn: ping 16:59
jnthn kid51: pong 17:22
17:25 contingencyplan joined
dalek sella/harness_3: eb7bc71 | Whiteknight++ | / (2 files):
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
sella/harness_3: 1bcc354 | Whiteknight++ | / (4 files):
Use Query in Harness. Add in an option to sort test files in a run.
sella/harness_3: be0c635 | Whiteknight++ | src/include/Query.winxed:
Use mk_winxed_header tool to flesh out the contents of src/include/Query.winxed
sella/harness_3: 9a4df16 | Whiteknight++ | src/harness/ (2 files):
Cleanup some code with Query
17:28 plobsing joined
kid51 jnthn: Some people in NYC are (again) talking about Rakudo hack sessions. 17:41
Is there a new projected date for rakudo nom becoming master?
sorear kid51: currently, "never" 17:55
kid51: we've decided to go master-less
kid51: alpha, beijing, nom - nom is the current branch
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
Has that decision been publicized anywhere?
sorear ask pmichaud
PerlJam kid51: I imagine not until it's a done deal will it be publicized anywhere 17:58
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. 17:59
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
brb, dinner
kid51 Would you still recommend Rakudo* for people who want to start playing with Perl 6 syntax? 18:03
moritz yes 18:04
kid51 thx 18:05
dalek sella/harness_3: 2a0a823 | Whiteknight++ | src/query/ (2 files):
add in a flatten method to Query. Flattens nested structures into a single flat array.
18:40
sella/harness_3: f3fd461 | Whiteknight++ | src/harness/ (4 files):
More fixes and cleanups for Harness using Query
sella/harness_3: 0f7924e | Whiteknight++ | src/harness/testfile/Custom.winxed:
use __FUNCTION__
18:44 mj41 joined
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:11
19:16 bubaflub joined 20:07 NotFound joined
NotFound Hi 20:07
20:16 Kulag joined 20:17 jsut_ joined 20:26 Drossel joined
tadzik hi NotFound 20:38
seen bacek
aloha bacek was last seen in #parrot 94 days 10 hours ago joining the channel.
cotto ~~ 20:45
seen aloha
aloha aloha was last seen in #parrot 6 days 5 hours ago joining the channel.
20:54 soh_cah_toa joined 21:02 nbrown joined 21:05 Kulag joined 21:22 Kulag joined 21:35 Kulag joined 21:39 Drossel joined 22:27 logie joined
benabik aloha needs a mirror 23:14
Although perhaps we don't want a self-aware bot... 23:15
aloha: aloha?
aloha benabik: aloha is simple Bot::BasicBot::Pluggable hosted on github.com/bacek/aloha
23:34 rfw joined 23:37 jsut joined