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