|
01:26
FROGGS_ joined
02:18
cognome joined
|
|||
| tadzik | I saw jnthn, he was safe :) | 05:28 | |
| [Coke] | yay | 05:29 | |
| what about brrt? | |||
| tadzik | maybe he arrived, but I don't know how he looks like :o | 05:30 | |
| TimToady | um, look at his blog? | ||
| let me just verify that it is currently 8:30 am there? | 05:31 | ||
| tadzik | it is | ||
| TimToady | okay, thanks | ||
| tadzik | www.blogger.com/profile/05760700924227974153 that doesn't help me recognize him :) | ||
| but even looking at the github picture, I don't think I've seen him | 05:32 | ||
| TimToady | he has a big picture on his planteria blogs | ||
| [Coke] | avatars1.githubusercontent.com/u/1617678?s=400, mebbe | 05:33 | |
| TimToady | yes, that's the picture | 05:34 | |
| allowing for a bit of fisheye distortion... | |||
| [Coke] | .tell lizmat - had to fudge some of the new throws_like tests for parrot & jvm. | 05:36 | |
| ww. | |||
| sergot | hi o/ | 06:57 | |
| [Coke] | o, hi | ||
|
07:14
woolfy joined
07:26
zakharyas joined
07:31
klaas-janstol joined
|
|||
| jnthn | morning o/ | 07:57 | |
| brrt: If you're here somehere, please come introduce yourself...I'm sitting on row 2 :) | 07:58 | ||
| TimToady is sitting up on the stage somewhere... | 08:02 | ||
|
08:10
nine_ joined
08:39
Ven joined
08:42
zakharyas1 joined
08:57
zakharyas1 joined
08:59
klaas-janstol joined
10:04
Ven joined
11:11
Ven joined
|
|||
| timotimo | TimToady: is that because you're telepresenced by the camera? %) | 11:17 | |
| FROGGS | TimToady: you are sitting on my lap :P | 11:35 | |
| would be kind if you could put that hat off :o) | 11:36 | ||
| TimToady | jjjjjjj~. | 11:48 | |
| sorry, started snoring | 11:49 | ||
| actually, lost half the channel, had ot reconnect | 11:50 | ||
|
12:07
cognome joined
13:13
ggoebel11111116 joined
|
|||
| dalek | Heuristic branch merge: pushed 28 commits to MoarVM by jnthn | 13:21 | |
| timotimo | YAY | ||
| carlin | !!!!!!!!!!!!!!!! | ||
|
13:24
Ven joined
|
|||
| timotimo | how the hell ... this isn't even much code | 13:24 | |
| jnthn | <- lazy | 13:25 | |
| NQP part of it for the profiler UI coming in a moment | |||
| timotimo | ah, i was wondering where that would be found :)) | 13:26 | |
| jnthn | Actually it needs some more work to get it to properly install the UI template thingy so things work out well with Rakudo. | ||
| timotimo | $obj := subst($obj, /'\\'/, '\\\\\\\\', :global); | 13:28 | |
| m) | |||
|
13:36
jnap joined
|
|||
| jnthn | *lol* | 13:38 | |
| It was, like, 2am :P | |||
| timotimo | so the problem is the path to the template would have to be fixed? | 13:39 | |
| as in: it ought to be installed somewhere by the makefile? | |||
| jnthn | yeah, we should make install it somewhere | ||
| And then find it using lib path or something | |||
| timotimo | right | ||
| moritz | ah, profiling is a Configure.pl option | ||
| jnthn | So for now you can only run it in the build directory for it to find the template | ||
| moritz: No | 13:40 | ||
| Stock build gets you it. | |||
| moritz | oh, I read the diff the wrong way 'round | ||
| - prefix=s make-install profilecalls asan), | |||
| + prefix=s make-install asan), | |||
| jnthn | It actaully uses spesh to instrument the code with recording profile info. | 13:41 | |
| timotimo | it'll "spesh" every frame for its very first invocation, i assume? | 13:42 | |
| jnthn | First after you turn on profiling, yes. | ||
| timotimo | that's perfect | ||
| jnthn | And if you already called it before turning on profiling, it knows it should make and swap in an instrumented version too | 13:43 | |
|
13:43
jnap joined
|
|||
| timotimo | hah | 13:44 | |
| a super simple compilation profile gives me 62% time spent in the ws rule %) | |||
| jnthn | o.O | 13:45 | |
| Well | |||
| perl6-m --profile-compile -e "1" shows we spend 30%+ of time at startup inside of real2abs o.O | 13:46 | ||
| ooh, masak lightning talks | |||
| timotimo | that's amusing :) | ||
| moritz | it likely means that's a lot of potential for optimizing startup :-) | 13:50 | |
| jnthn | yes ;) | ||
| timotimo | should rc-forest-fire be using nums for the loops? maybe we should specify them to be "int" instead | 14:01 | |
| wow, way cool. | |||
| the later gc runs of rc-forest-fire all end up retaining < 4kb and promoting 0kb | |||
| jnthn: just browsing through the call graph is *fascinating* | 14:10 | ||
| except the call graph kinda goes boom on me ... i mean the breadcrumbs view on the top | 14:11 | ||
| jnthn: i have an example, where 18350 calls happen to Bool for Parcel ... and all of them are interpreted | 14:12 | ||
| multi method Bool(Parcel:D:) { nqp::p6bool($!storage) } | |||
| to be fair, this is only 7.41ms in total time | 14:13 | ||
| out of 15087.87ms | |||
| but still ... it kinda surprises me that we can't jit that | 14:14 | ||
| jnthn | I suspect lack of callsite interning. | 14:17 | |
| timotimo | oh, hm | ||
| it's kinda painful to click through eager -> gimme -> reify -> ... over and over and over again | 14:18 | ||
| i wonder if it's good or bad that these usually always have a 99.9% time spent in a single callee | |||
| it seems like it's easy to get from the breadcrumb navigation of the call graph to having "Callers: none" | 14:21 | ||
| jnthn | There's some kinda bug there...it's meant to show the 5 most recent... | ||
| timotimo | interesting. 368393 BOOTint allocated in find_best_dispatchee | 14:22 | |
| 320736 in bind_one_param | 14:23 | ||
| i suppose bind_one_param happens really really often if we can't use the fast path binder | |||
| the full collections in rc-forest-fire all retain tiny amounts of data and freeign loads and loads of data | 14:25 | ||
| is the full gc profile display correct? | |||
| like 16KB / 82KB / 3998KB | |||
| wow. 204673 local deopts inside ListIter's reify | 14:27 | ||
| diakopter anticipates more than a handful of >10% speedups | |||
| timotimo | :) | ||
| actually, i believe the full gc display isn't what i think it is | 14:28 | ||
| as it only adds up to about 4mb, which is the nursery size | |||
| jnthn | timotimo: It says it's nursery state. | 14:30 | |
| timotimo | oh! | ||
| of course it does %) | |||
| is there a way to instrument gen2 gc runs, too? | 14:35 | ||
| jnthn | It's not anything like so obvious what to report on it... | 14:49 | |
| timotimo | aye | 14:50 | |
|
15:25
Ven joined
16:21
FROGGS[mobile] joined
16:23
hoelzro joined
17:03
Ven joined
|
|||
| TimToady | timotimo: yes, the eager->gimme->reify loop is one of the things we'd like to fix with the list refactor; it should not have to refigure out how lazy it's being every time through | 17:09 | |
| instead we should probably just have a function that returns the next batch, and if it's lazy, it happens to be size 1 | |||
| and if we can delegate such functions upward, we can probably even do some level skipping, where a list is basically doing nothing | 17:10 | ||
| this gimme/reify thing is all sort of an "ask if you can ask" suboptimality | 17:11 | ||
| though not sure how iterators if we're just calling fetchers | 17:14 | ||
| perhaps the immutability of iterators is an illusion we maintain on the surface while just mutating things underneath | 17:15 | ||
| oh, btw, I did play with a batching gather/take that, I mean, more batching than the current one | 17:19 | ||
| it inteposed another take handler, then threw an outer take at the end of each batch | 17:20 | ||
| so it didn't save exceptions, but it saved continuations | |||
| turned out to save about 5%, less than I expected | |||
| and I accidentally the code | |||
| and I also figured we'll end up with something better | 17:21 | ||
| so it's not in this release | |||
| also, didn't really solve the deparcel-the-batch problem | |||
| so it was only useful in a .flat context | 17:22 | ||
| well, maybe this all belonged in #perl6, I dunno... | 17:23 | ||
| timotimo | sadly, the profiler will not write its stuff out if the program exits with an exception :\ | 17:44 | |
|
18:16
Ven joined
19:17
klaas-janstol joined
19:34
Ven joined
|
|||
| lizmat | timotimo: perhaps a tap on signal() could be of help? | 19:44 | |
| timotimo | i put a try/catch around the part of the profile runner that'd do the exception | 19:45 | |
| lizmat: can you try if "perl6-m --profile -e 'say "hi"; die' will output a line "wrote profiler data to ..."? | 19:46 | ||
| because locally it does now | |||
| lizmat is building latest / greatest now | 19:49 | ||
| timotimo: it doesn't | 19:55 | ||
| timotimo | good | 19:56 | |
| lizmat | it *does* without the die :-( | ||
| timotimo | now how do i ensure my fix is proper? | ||
| hm, it doesn't do the same kind of error reporting that it used to do without --profile | 19:59 | ||
|
20:33
Ven joined
21:47
avuserow joined
|
|||
| [Coke] | any pointers how to use the new profiler stuff? | 22:13 | |
| timotimo | yup | 22:20 | |
| perl6 --profile foobar.p6 | |||
| it'll tell you how to get at the results | 22:21 | ||
| jnthn | Why the heck'd you not be able to come up with something profilable that *doesn't* die? | ||
| timotimo | well ... now it segfaults instead | ||
| are you happy now? :) | |||
| (the spesh_diff.p6 script in moarvm's repo) | |||
| btw, i'd like to change the spesh log output a bit to be more friendly to parse ... | 22:22 | ||
| the intra-frame-stuff is almost perfectly fine, but the inter-frame stuff ... not so much | |||
| jnthn | The spesh log output wasn't really designed for a program to consume.... | 22:23 | |
| timotimo | right | ||
| but diffing it by eye is ... tough | |||
| and spesh_diff has to fight as it is | |||
| jnthn | OK. I just haven't ever felt a huge need to, really... | ||
| timotimo | i'd like to let each BB print its memory address next to its need | ||
| so that it'd be easier for a program (or user?) to see which bb turned into what | 22:24 | ||
| jnthn | Why each BB? | ||
| Isn't the issue to identify specializations? | |||
| In which case I think those already have an index... | |||
| timotimo | the index changes during spesh, though | ||
| and we'll end up with a whole bunch of goto statements changing just because their target BB has moved in the linear order | 22:25 | ||
| and git diff is also not clever enough to recognize BBs changing *and* getting their id changed | |||
| it all looks a bit rough | |||
| (trying to get a coredump now ...) | 22:26 | ||
| jnthn | What coredumps exactly? | 22:32 | |
| Doing a profile? | 22:33 | ||
| jnthn didn't manage to explode it | |||
| I did try to profile CORE.setting build and had to kill it when RAM usage hit 15GB :P | 22:34 | ||
| TimToady | diHwidt | 22:36 | |
| jnthn | Well, I probably need to teach it to depth limit the call graph tracing | 22:37 | |
| So you can still get a useful big picture | |||
| nwc10 | jnthn: are profiling files portable? Can they be shipped from server with MOAR RAM to desktop client with useful stuff? | ||
| TimToady | or some way to limit it to a particular thing | ||
| jnthn | nwc10: Profiling files are JSON... :) | 22:39 | |
| nwc10 | OK | ||
| jnthn | Well, that's the current serialization | ||
| Actually the profile makes a data structure | |||
| And at the moemnt I dump it to JSON and shove it in a HTML template | |||
| TimToady con-templates that | 22:42 | ||
| flussence | how much of that 15GB would be compressible/stringy stuff? I wonder if throwing tons of /dev/zram swapspace at it would get it further... | ||
| jnthn | flussence: I...think I'd rather solve it with depth charges | 22:43 | |
| uh | |||
| with depth limiting | |||
| wtf, brain... | |||
| flussence | heh :) | ||
| I might sound insane, but in ye olde days that same trick allowed me to build all of r-p on my netbook | 22:45 | ||
| nwc10 | well, Devel::NYTProf got compressed profile files because I was filling my disk | 22:46 | |
| and in turn, what I was profiling was Test::Harness for parallel tests | 22:47 | ||
| to make it work. | |||
| timotimo | BFD: Warning: /home/timo/perl6/rakudo/core.23210 is truncated: expected core file size >= 6807769088, found: 1097076736. | 22:48 | |
| oh | |||
| my hard drive full'd | |||
| jnthn | lolz | ||
| Yeah, I guess I'll have to do something about profiling big things. | 22:49 | ||
| timotimo | :) | ||
| this was a very big thing | |||
| jnthn | For now I can only suggest profiling rodents of *usual* size... | 22:50 | |
| timotimo | maybe i shouldn't have used the spesh log of core setting compilation to profile the spesh_diff script %) | ||
| jnthn | ;) | 22:51 | |
| timotimo | ah, turns out that if there's something that waits on I/O, the profiler will count that waiting as time ... spent | 22:53 | |
| hm | |||
| jnthn doesn't consider that particularly bad. | 22:55 | ||
| For example, knowing that in many of the NQP tests, most of the time is spent in print, might give us a hint we want to look at I/O performance :) | |||
| timotimo | now i can't tell if our socket's get method is inefficient or if my script just waits a bunch | ||
| ah. that's certainly true. | |||
| jnthn | Doesn't get mostly delegate? | ||
| (to the op) | |||
| timotimo | we don't measure op times, though ... or do we? | 22:56 | |
| jnthn | No | 22:57 | |
| It's routine level | |||
| timotimo | anyway, the second place is firmly held by reify followed by gimme | ||
| and then comes MapIter's reify | |||
| jnthn | are you looking at inclusive or exclusive there? | 23:00 | |
| timotimo | exclusive | ||
| jnthn | ah | 23:02 | |
| that's...interesting. | |||
| so is my hotel bed :) | |||
| 'night | |||
| TimToady | o/ | ||
| timotimo | gnite! | 23:03 | |
| sadly i don't really know how to limit the call-chain-walking without messing up the inclusive/exclusive times :\ | 23:50 | ||