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