Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:02 reportable6 left 00:05 reportable6 joined 01:32 lizmat_ joined 01:35 lizmat left 01:41 frost joined 02:53 linkable6 left, evalable6 left, evalable6 joined 02:55 linkable6 joined 03:20 ggoebel left 03:48 RakuIRCLogger left 05:24 linkable6 left, benchable6 left, quotable6 left, evalable6 left, squashable6 left, reportable6 left, greppable6 left, bloatable6 left, unicodable6 left, releasable6 left, statisfiable6 left, bisectable6 left, nativecallable6 left, coverable6 left, committable6 left, sourceable6 left, tellable6 left, shareable6 left, notable6 left, quotable6 joined, tellable6 joined, squashable6 joined 05:25 nativecallable6 joined, benchable6 joined 05:26 bloatable6 joined 05:27 coverable6 joined
Nicholas goo *able6, #moarvm 05:51
nine is it already tomorrow? 05:56
06:04 reportable6 joined 06:24 statisfiable6 joined 06:25 releasable6 joined, bisectable6 joined 06:34 kjp left, TempIRCLogger left, MasterDuke left, discord-raku-bot left, leont left, Nicholas left 06:56 kjp joined, TempIRCLogger joined, MasterDuke joined, discord-raku-bot joined, leont joined, Nicholas joined 07:23 discord-raku-bot left 07:24 discord-raku-bot joined 07:25 evalable6 joined 07:26 notable6 joined 08:09 lizmat_ left, TempIRCLogger left, lizmat joined 08:10 TempIRCLogger joined, Geth left 08:11 Geth joined 08:24 squashable6 left 08:25 greppable6 joined, linkable6 joined, committable6 joined 08:26 squashable6 joined, unicodable6 joined
Nicholas nine: I'm unsure about the singularly at midnight, but other than that, it's never yet tomorrow, but s' is always morning. 08:38
and sometimes ASAN is excited 08:39
09:02 ggoebel joined 09:11 patrickb joined
jnthnwrthngtn japhb: It can be true that multiple *codepoints* need considering around the join point, but only one *grapheme* either side of it. 09:18
nine jnthnwrthngtn: I should find some time this evening. If you beat me to it, feel free :) 09:21
09:26 shareable6 joined 09:27 sourceable6 joined
jnthnwrthngtn japhb: Also, looks like we could hoist those lines as suggested, yes, and it may be a little cheaper 09:27
moon-child just curious, does moar do loop invariant motion? Or should I do it by hand? 09:29
jnthnwrthngtn Doesn't do that yet 09:30
09:30 linkable6 left
jnthnwrthngtn argh, not enough coffee... 09:31
Chose squash merge, stared at the commit message I should edit, then hit the button to merge it, then realized I didn't edit it...
moon-child hehe 09:32
Nicholas git push --force-more-coffee ? 09:46
lizmat
.oO( where's the PR? and what about --force-more-tea? :-)
09:52
lizmat wishes she could still handle coffee every now and then 09:53
10:00 MasterDuke left 10:33 ggoebel left, linkable6 joined 10:41 squashable6 left 10:43 squashable6 joined 10:49 ggoebel joined 12:02 reportable6 left 12:42 linkable6 left 13:05 reportable6 joined
[Coke] did not like the experiment he ran to go drink no more than decaf for several months. (trying to see if my pulse went down: it did not) 13:13
13:23 frost left 13:44 linkable6 joined 14:50 Altai-man joined 14:52 Altai-man left 15:04 rypervenche left 15:21 rypervenche joined
nine Quiz of the day: which one is more low level? nqp::can(...) or ^find_method(...)? And which of those two is faster? 15:53
lizmat I've always understood nqp::can to be lower 15:54
I would also assume nqp::can is faster
but it probably isn't (anymore anyway :-)
15:58 patrickb left
timo well, i recommend tryfindmethod instead :P 16:08
nine Spoiler alert! 16:11
timo newdisp had a bit of a hand in this, right? can and ^find_method? 16:12
i mean, having an nqp:: in front seems like it would be more low-level, but it robably turns into a disatch program call now?
nine In fact, nqp::findmethod, nqp::tryfindmethod and nqp::can all compile to roughly the same code, i.e. a lang-find-meth dispatch. Both NQP and Raku use the nqp-find-meth which will eventually call $how.find_method 16:13
So arguably ^find_method is actually more low level, as those nqp desugars all wrap it. But, nqp-find-meth uses the dispatch cache, so it can actually still be faster. 16:14
16:14 MasterDuke joined
MasterDuke i compiled CORE.[cde] --full-cleanup under valgrind. e and d had no leaks, but c did. looks like they're all disp program recording related gist.github.com/MasterDuke17/b3331...ace62dad99 16:18
17:06 MasterDuke left 17:13 brrt` joined 17:14 brrt` is now known as brrt
Nicholas good *, brrt 17:15
brrt good * Nicholas 17:16
17:20 brrt left 17:23 MasterDuke joined
MasterDuke anyone have an idea for something smaller/shorter/faster to repro that disp program recording leak? 17:24
18:02 reportable6 left 18:03 reportable6 joined
MasterDuke ah ha. t/moar/53-dispatch.t repros it 19:29
19:52 squashable6 left 19:53 patrickb joined 20:45 patrickb left 20:46 squashable6 joined
lizmat I just noticed that since new-disp the startup of the logs server is *much* slower, but that seems to be caused for a large part by not using all CPU's as before 20:48
is anybody else seeing that ?
CPU usage used to be at 800% or so, now it's hanging around 150% (aka only using 1.5 CPU) 20:49
instead of all 8
it feels like it is no longer racing at all :-( 20:54
lizmat kills the full loading of the logs server after waiting for 15 minutes
by this rate, it's going to take an hour to load everything 20:55
lizmat calls it a day& 20:57
[Coke] I know we heard startup was slower in general, but I don't remember it due to non-concurrency 20:59
timo i'd probably reach for Log::Async in such a case 21:16
jnthnwrthngtn That or Log::Timeline to try and visualize it, but also interesting to RAKUDO_SCHEDULER_DEBUG=1 to see if it's starting enough threads 21:45
I've no idea whatsoever why we might see such a result after new-disp though
22:03 evalable6 left, linkable6 left
Geth MoarVM: MasterDuke17++ created pull request #1562:
Fix two leaks missed by --full-cleanup
22:09
22:18 ggoebel left
lizmat jnthnwrthngtn: running it with -Msafe-snapper, it looks like it only ever started *2* affinity threads 22:33
hmmm... but the general worker threads is 62 ??? 22:34
hmmm... on the old server (running pre-new-disp) the number of general worker threads was also 62 22:37
that has 4+4 cores... and CPU usage during startup is about 550%, aka 5.5 CPU cores 22:38
and on my 8+8 core machine (on new-disp) essentially the same code only takes about 150% (aka 1.5 CPU) 22:40
22:51 ggoebel joined 22:56 ggoebel left 23:03 evalable6 joined
jnthnwrthngtn lizmat: Hmm, that's surprising. Would be interesting to get to the bottom of that; it may also explain some other (less noticeable) slowdown I observed 23:15
timo can probably attach a gdb and grab backtraces from all threads; probably want the raku-level backtraces to see where they are waiting if they all wait, right? 23:17
Geth MoarVM: 039cc58442 | (Daniel Green)++ | 2 files
Fix two leaks missed by --full-cleanup
23:19
MoarVM: e81e6878bb | (Jonathan Worthington)++ (committed using GitHub Web editor) | 2 files
Merge pull request #1562 from MasterDuke17/fix_two_memory_leaks

Fix two leaks missed by --full-cleanup
jnthnwrthngtn timo: Yeah, though I could run it in the comma debugger to see that. :) 23:21
timo a-ha! :)
jnthnwrthngtn Wonder if we accidentally introduced some lock somewhere that creates more contention than intended, but I really can't think where
timo if you can easily restart it with the debugger turned on and get the same behavior, yes
jnthnwrthngtn Dispatch program recording is OCC 23:22
There are locks in callsite intern handling but iirc only when we need to extend it, and even then it'd only affect the phase where we're setting up dispatch programs 23:23
timo right, all that new-disp does should be a-few-times-per-callsite anyway
jnthnwrthngtn sleep o/ 23:32
timo night 23:35
23:57 ggoebel joined