github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
01:21
sena_kun joined
01:22
Altai-man_ left
02:24
farcas1982regreg joined
02:26
squashable6 left
02:30
bloatable6 joined,
sourceable6 joined
02:32
bloatable6 left,
statisfiable6 joined,
committable6 joined,
quotable6 joined,
greppable6 joined,
releasable6 joined,
unicodable6 joined,
notable6 joined,
evalable6 joined,
nativecallable6 joined,
tellable6 joined,
benchable6 joined,
reportable6 joined,
greppable6 left
02:33
reportable6 left,
linkable6 joined,
reportable6 joined,
committable6 left,
bloatable6 joined,
squashable6 joined,
coverable6 joined,
greppable6 joined
02:34
committable6 joined,
shareable6 joined
03:13
pamplemousse left
03:19
Altai-man_ joined
03:22
sena_kun left
05:13
sourceable6 left,
committable6 left,
squashable6 left,
bloatable6 left,
reportable6 left,
notable6 left,
coverable6 left,
greppable6 left,
statisfiable6 left,
quotable6 left,
releasable6 left,
unicodable6 left,
evalable6 left,
nativecallable6 left,
tellable6 left,
benchable6 left,
linkable6 left,
shareable6 left
05:20
sena_kun joined
05:22
Altai-man_ left
05:23
shareable6 joined,
coverable6 joined
05:24
committable6 joined,
notable6 joined,
quotable6 joined,
sourceable6 joined,
bisectable6 joined
05:25
reportable6 joined,
releasable6 joined,
bloatable6 joined,
statisfiable6 joined,
benchable6 joined,
nativecallable6 joined
05:26
squashable6 joined,
linkable6 joined
06:31
committable6 left
06:32
shareable6 left,
bisectable6 left,
shareable6 joined
06:34
bisectable6 joined,
committable6 joined
07:19
Altai-man_ joined
07:22
sena_kun left
07:24
MasterDuke joined
07:52
zakharyas joined
|
|||
nwc10 | good *, #moarvm | 08:45 | |
09:20
sena_kun joined
09:22
Altai-man_ left
11:19
Altai-man_ joined
11:22
sena_kun left
|
|||
MasterDuke | why would gist.github.com/MasterDuke17/1a307...821fe36c89 cause a sigabort and `corrupted size vs. prev_size` when doing `raku -e ''`? | 11:30 | |
timotimo | what does valgrind say? | 11:31 | |
MasterDuke | bin is 15 (so one of the ones i've changed) and size is 272 | ||
jnthn | I don't think you changed it to actually allocate the page memory? | ||
Oh, you did | |||
MasterDuke | gist updated | 11:32 | |
jnthn | oh, but | ||
your alloc limit is probably bogus? | |||
timotimo | yeah the limit is far too long | ||
you're allowing fsa to write far, far outside of its pages | |||
MasterDuke | oh? | 11:33 | |
should it be unchanged? | |||
timotimo | what exactly were you going for? | ||
i may have to explain what alloc_limit means | |||
MasterDuke | starting with more pages for some bins (vs starting with bigger pages for some bins) | 11:34 | |
jnthn | Well, the allocator's design assumes that you are either allocating from the free list or, failing that, the latest added page | ||
timotimo | the alloc limit is a memory address, not a total amount | ||
jnthn | and yes, what timotimo said | ||
timotimo | when the alloc limit address is reached, a new page gets created | ||
jnthn | I don't really see how this change helps much, though, because you're making the same number of mallocs | ||
timotimo | i think i had suggested making a single bigger page first rather than making loads of pages | 11:35 | |
jnthn | Yes, that would probably both help more *and* fit better with the overall allocator design | 11:36 | |
MasterDuke | yeah, but we won't have to go through alloc_slow_path a lot | ||
i'm just trying to measure a bunch of different options | |||
timotimo | it's possible that setting up multiple empty pages will just get the allocator to skip all but the first page | ||
jnthn | Or the last one, but yeah. | ||
MasterDuke | jnthn: i have some measurements from implementing what timotimo++ suggested, thought i'd also try this way | 11:37 | |
but i guess it's not (easily) possible | |||
jnthn | No, it goes against the grain of the allocator design a bit too much | 11:38 | |
MasterDuke | afk for a bit. gist.github.com/MasterDuke17/0cde6...89c817ef53 has measurements for compiling CORE.c, gist.github.com/MasterDuke17/bf4bd...d8e892e481 for `raku -e ''` | 11:40 | |
11:51
pamplemousse joined
|
|||
timotimo | another thing we can do is serve all the bins from a single malloc (which then would probably become an mmap) | 11:52 | |
ah, this "just" runs when the first bin is requested | 11:53 | ||
nine | Unless we're doing hundreds of mallocs here, I'd be sursprised if we could get a measurable speedup | 11:57 | |
timotimo | but we are | 11:58 | |
36 adding a page of size 17408 for bin = 15 | |||
37 adding a page of size 8192 for bin = 6 | |||
314 adding a page of size 7168 for bin = 5 | |||
this is running raku -e '' on master | |||
39 adding a page for bin = 1 | 11:59 | ||
56 adding a page for bin = 8 | |||
404 adding a page for bin = 2 | |||
406 adding a page for bin = 5 | |||
and this is with MD's patch to have VMArray use FSA | |||
MasterDuke | and it's not just the mallocs, it's trying and failing to go through the fast path and having to go through the slow path | 12:13 | |
i measured ~600k fewer instructions for `raku -e ''` | |||
timotimo | 0.01s system for raku -e ''; we should strive for that number to get to 0, though i wouldn't expect us to reach a point where the 0.01s are the majority of time spent | 12:38 | |
jnthn digs back into the dispatcher design work | 12:49 | ||
timotimo | and a whole bunch of the sys calls have always been brk | ||
interesting, we actually shrink a couple of times, too | 12:51 | ||
a plot of the brk numbers shows that the reductions are pretty much inconsequential :D | 12:55 | ||
that's with out the MD patch,t hough | 12:57 | ||
13:20
sena_kun joined
13:22
Altai-man_ left
13:25
Altai-man_ joined
13:28
sena_kun left
|
|||
MasterDuke | do people have an opinion on just making the first page (much?) bigger vs making the first page bigger and/or making subsequent pages bigger also? | 13:34 | |
should it just statically be for the bins that we see commonly allocated in some representative code? | |||
or maybe dynamically resize the page size as more (or fewer) are requested? | 13:35 | ||
timotimo | difficult to say without a crystal ball | ||
MasterDuke | hm, maybe if i first write a program that will tell if another program will ever halt... | 13:36 | |
timotimo | you can record a "trace" of all allocations for all size classes and then simulate what different algorithms would decide, and then find how much wasted space you would be allocating with any given algo | ||
MasterDuke | so model on some sort of theoretical knapsack and see how efficiently i can put different sized items in? | 13:38 | |
these are both pretty easy problems, should only take a day or two | |||
timotimo | i'd not call it that, honestly | 13:39 | |
since things of the same size always go in their corresponding bins | |||
the decisions would only be what sizes you'd put for the bins | |||
MasterDuke | yep, just joking around | ||
timotimo | like, one approach would allocate exactly the maximum amount of memory used throughout the whole program at the start and then never have to do anything again | ||
lizmat | I wonder if memory usage information couldn't be kept somewhere, to give hints to any allocation scheme during runtime | 13:47 | |
a bit like spesh, I guess, but then over several runs | |||
just brainstorming, and no I'm not suggesting you should drink bleach | 13:48 | ||
jnthn | While it doesn't tend to be done cross-process, there's all kinds of presizing, pretenuring, and pretransitioning optimizations that are done in this kind of area (not in MoarVM yet, but they are known/described techniques) :) | 14:02 | |
MasterDuke | yeah, don't think i'm quite up for that level of work just yet. just some new simple heuristics | 14:03 | |
lizmat | and another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/04/27/2020-...g-cleanup/ | 15:02 | |
jnthn | Goodnes, I always figured that deferral was slow, but if you compare callsame against self.Parentclass::meth (the latter is already well optimized thanks to a spesh plugin) then it's more than 65x slower! | 15:05 | |
lizmat++ # weekly | 15:07 | ||
MasterDuke | wow. but you think the redesign will end up with it closer to the same speed? | 15:08 | |
jnthn | Dunno yet :) | 15:11 | |
I'm quite happy with the non-resume-related bits of the design by now | |||
Still trying to find something I like for the resume case | 15:12 | ||
MasterDuke | resuming exceptions? | 15:18 | |
jnthn | No | ||
Resuming dispatches | |||
The thing that's going on with callsame et al. | 15:19 | ||
15:21
sena_kun joined
|
|||
MasterDuke | ah | 15:22 | |
15:22
Altai-man_ left
15:44
pamplemousse left
|
|||
jnthn | Finally, I think I found something that'll work... | 16:11 | |
16:26
sena_kun left,
dogbert11 left,
vesper11 left,
krunen left,
synthmeat left
16:28
synthmeat joined
16:29
vesper11 joined
16:31
sena_kun joined,
dogbert11 joined
16:32
krunen joined,
DrEeevil joined
|
|||
timotimo | cool! | 16:39 | |
16:45
ChanServ joined,
cherryh.freenode.net sets mode: +o ChanServ
17:05
shareable6 left
17:09
shareable6 joined
17:13
zakharyas left
|
|||
jnthn | Here's my design notes so far, for the curious: gist.github.com/jnthn/e81634dec57a...b92c722959 | 17:18 | |
17:19
Altai-man_ joined
|
|||
jnthn | Home time & | 17:20 | |
17:26
krunen left,
DrEeevil left,
sena_kun left,
dogbert11 left
17:29
krunen joined,
DrEeevil joined,
dogbert11 joined
|
|||
nine | jnthn: ah, I can see how that will help with the dynamically discovered methods in Inline::Perl5::ClassHOW :) | 17:30 | |
vrurg | Is it possible for moar to know which module is being deserialized? I'm trying to dig into github.com/MoarVM/MoarVM/issues/1276 | 17:31 | |
Altai-man_ | vrurg, hi. Are you available for a bit? | 17:32 | |
vrurg | Altai-man_: I think, yes, if nothing happens | 17:33 | |
nine | vrurg: yes, look at the MVMCompUnit's file_name | ||
vrurg | nine: thanks! | 17:34 | |
Altai-man_ | vrurg, can you please say what do you think about the next release proposal (gist.github.com/Altai-man/433f3314...55533eb3)? If the solution suggested won't work for you, we can discuss it. | 17:35 | |
vrurg | Altai-man_: gimme a few minutes. | 17:36 | |
timotimo | i wonder if there needs to be any special consideration for slurpy arguments that can help us deal with extremely long "arguments" / argument lists when trying to slurpy a very long array | 17:37 | |
17:39
ChanServ left
17:42
ChanServ joined,
cherryh.freenode.net sets mode: +o ChanServ,
MasterDuke left
|
|||
[Coke] | what do the trunc_xx opcodes do? | 17:43 | |
nine | Truncate e.g. int64 -> int16 | 17:46 | |
The opposite of extend | |||
jnthn: oh, I just realized that this will finally get us super fast multi dispatch on constants like multi foo(1) { }; multi foo(2) { } by way of nqp::dispguardobj | 17:49 | ||
18:10
MasterDuke joined
|
|||
[Coke] | nine: would it be correct to describe trunc/extend as casting? | 18:20 | |
18:57
farcas1982regreg left
19:20
sena_kun joined
19:22
Altai-man_ left
|
|||
[Coke] | m: use nqp; dd trunc_i8 123456789 | 19:34 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared routine: trunc_i8 used at line 1. Did you mean 'truncate'? |
||
[Coke] | m: use nqp; dd nqp::trunc_i8 123456789 | ||
camelia | ===SORRY!=== No registered operation handler for 'trunc_i8' |
||
Geth | MoarVM: MasterDuke17++ created pull request #1277: Make the first page for some FSA bins bigger |
19:35 | |
MasterDuke | m: use nqp; dd nqp::trunc_i8(123456789) | ||
camelia | ===SORRY!=== No registered operation handler for 'trunc_i8' |
||
MasterDuke | the above PR is to give something concrete to discuss, i'm open to changes | 19:36 | |
[Coke] | Wonder if the test is misreading the nqp source and those aren't really opcodes. | 19:37 | |
(or if they are QAST only) | 19:41 | ||
MasterDuke | github.com/MoarVM/MoarVM/blob/mast...erp.c#L255 | 19:42 | |
nine | Could be they're opcodes but not actually mapped to NQP ops | 19:43 | |
They are used by the QAST compiler's coercions: github.com/Raku/nqp/blob/master/sr...T.nqp#L529 | 19:44 | ||
19:56
Kaiepi left
19:58
Kaiepi joined
|
|||
[Coke] | I'll see if I can get them working in a QAST example. | 20:10 | |
timotimo | you probably need to set a :returns(int16) in a qast node or something like that | 21:08 | |
21:12
patrickb joined
21:19
Altai-man_ joined
21:22
sena_kun left
22:04
patrickb left
|
|||
Geth | MoarVM: MasterDuke17++ created pull request #1278: Fix some compiler warnings |
22:59 | |
23:12
Altai-man_ left
|