github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
00:09
lizmat_ joined
00:12
lizmat left
04:45
lizmat_ is now known as lizmat
05:23
lizmat left
05:54
lizmat joined
06:01
brrt joined
06:11
lizmat left
06:15
domidumont joined
06:17
krunen left,
krunen joined
06:38
lizmat joined
06:53
patrickb joined
07:43
brrt left
07:54
lizmat_ joined
07:57
lizmat left
07:59
zakharyas joined
08:15
lizmat_ is now known as lizmat
08:45
zakharyas left
09:03
zakharyas joined
09:17
sena_kun joined
10:27
brrt joined
11:04
zakharyas left
11:08
squashable6 left
11:10
brrt left,
reportable6 left,
shareable6 left,
greppable6 left,
committable6 left
11:11
greppable6 joined,
squashable6 joined
11:12
reportable6 joined,
committable6 joined
11:14
shareable6 joined
11:54
brrt joined
11:57
brrt` joined
11:59
brrt left
12:37
domidumont left
|
|||
Geth | MoarVM: Kaiepi++ created pull request #1132: Fix the CStr REPR's copy_to function |
12:38 | |
12:50
domidumont joined
12:52
domidumont1 joined
12:55
domidumont left
12:57
zakharyas joined
13:01
brrt` left,
brrt` joined
|
|||
dogbert11 | o/ | 13:23 | |
is the following message a sign of memory corruption or something else? MoarVM panic: Illegal Gen2 -> Nursery in caller chain (not in inter-gen set) | |||
13:24
sena_kun left
|
|||
jnthn | Yes, something like | 13:24 | |
13:25
sena_kun joined
|
|||
dogbert11 | valgrind is unfortunately silent in this case although the panic persists | 13:25 | |
jnthn | Well, it can be missing write barriering or some such also maybe | 13:26 | |
dogbert11 | I get it when running t/04-nativecall/23-incomplete-types.t with MVM_GC_DEBUG=1 | ||
this is a recently added test file | 13:27 | ||
jnthn | That's also a chance the check is a bit over-zealous... | ||
oh no | |||
"not in inter-gen set" means it's certainly a problem | |||
13:29
brrt` left
|
|||
dogbert11 | it looks like this in gdb FWIW: gist.github.com/dogbert17/7fb67166...c9b365e39d | 13:32 | |
hah, timotimos linkify script is really cool | 13:33 | ||
timotimo | glad to hear it :) | 14:05 | |
Kaiepi | what are the unmanaged_size functions for in REPRs? | 14:26 | |
jnthn | Amount of memory that it has allocated that isn't out of the GC pool | 14:28 | |
14:28
domidumont joined
|
|||
jnthn | For example, for an array only the header is in the GC's nursery or gen2 store, and the body of the array is allocated using other memory management | 14:29 | |
Kaiepi | which part of the array would be unmanaged? the body? | 14:31 | |
14:31
domidumont1 left
|
|||
jnthn | yes | 14:31 | |
Kaiepi | ah ok | ||
would CStr's c strings be considered unmanaged since they never get any refs assigned to them and get freed manually from gc_free? | 14:33 | ||
timotimo | hold on, the MVMArrayBody isn't the unmanaged size | 14:35 | |
if you're thinking of that | |||
you can think of "anything we malloc or mmap explicitly, that's unmanaged size" | |||
and we try to count it only one time, though that's not always easy to guarantee | |||
jnthn | Kaiepi: Yes, that would count | 14:37 | |
Kaiepi | aight, thanks | ||
timotimo | unmanaged_size was introduced when the heap snapshot profiler got made | 14:40 | |
15:26
zakharyas left
15:37
patrickb left
|
|||
jnthn | m: say 14521722665 / 15353500781 | 15:43 | |
camelia | 0.945824855981 | ||
jnthn | Hmmm....I'm not sure I believe these numbers... | ||
Oh, duh...I picked a benchmark with randomness in it :/ | 15:44 | ||
Didn't notice until now | |||
15:45
sena_kun left
|
|||
jnthn | And now I've got realistic numbers, my opt seems not to be one? :/ | 15:53 | |
urgh, I'm getting wildly different callgrind numbers between runs :/ | 16:02 | ||
That makes it useless | |||
I've got MVM_SPESH_BLOCKING=1 set | 16:03 | ||
Wondering if it's hash randomization somehow | 16:04 | ||
nwc10 | step away from the keyboard and visit the beer fridge? | 16:06 | |
(you should ignore this suggestion in you're having a dry day) | 16:07 | ||
jnthn | It was hash randomization... | 16:08 | |
*sigh* | |||
nwc10 | oh gosh. why? (different CPU counts in just the hash code, or does it have ripple effects outwards?) | 16:09 | |
jnthn | I don't know; I guess in theory it could cause different numbers of collissions and thus even affect growth rates? | 16:10 | |
TimToady | maybe we have some bad functions that put a bunch into one slot? | 16:11 | |
jnthn | What's a bit annoying is that just changing the MVM_HASH_RANDOMIZE to 0 isn't enough, though I'm going to fix that. | ||
TimToady: I guess it's possible, though I suspect it's just fallout from the randomization | 16:13 | ||
samcv++ put the randomization in, and probably would guess what might be going on better than I can :) | 16:14 | ||
m: say 16172514963 / 16501633892 | 16:15 | ||
camelia | 0.980055373234 | ||
jnthn | 2% feels righter for the change I've done | ||
jnthn makes sure the numbers are really stable now :) | |||
I've been looking over various profiles and...our invocation performance was never that great, but now we've optimized enough other stuff to the point that it looks relatively horrible. :) | 16:16 | ||
So I'm looking at what we can do to decrease the cost there | 16:17 | ||
TimToady suspects dynvar lookup is getting "worse" in the same way | 16:20 | ||
16:22
sena_kun joined
|
|||
jnthn | Yay, results are repeatable | 16:23 | |
2% of CPU cycles off by not setting up the arg processing context for frames that are specialized and so don't need one | 16:24 | ||
(If we deopt, we create it then) | |||
timotimo | :+1: | 16:41 | |
jnthn | Spectest seems happy | ||
nine | jnthn: what's the other thing one has to do to get rid of hash randomization? I think I even knew at some point but forgot | 16:44 | |
jnthn | A tweak in moar.c, but I'm about to push a commit that means changing the #define is enough :) | 16:45 | |
timotimo | i'm amused how close to 2% that ended up being in that last calculation | 16:46 | |
jnthn | Yeah, so was I | ||
Geth | MoarVM/frame-opts: 6f67d8760a | (Jonathan Worthington)++ | 12 files Only create arg processing context if needed Most specialized frames do not need it, since they rewrite their argument processing code into something far cheaper. We can also save the cost of cleaning it up afterwards. On a benchmark doing quite a lot of non-inlinable calls, this saved ~2% of the total CPU cycles, as measured by callgrind. |
16:49 | |
MoarVM/frame-opts: ac8c3fc1b6 | (Jonathan Worthington)++ | src/moar.c Make MVM_HASH_RANDOMIZE properly control hash rand Before, if one set it to 0, some randomization could still happen. The sure-fire way to make sure that doesn't happen is to just fix the hash secrets to 0 also. |
|||
jnthn | m: say 16172514963 / 16152422888 | 17:17 | |
camelia | 1.001243904716 | ||
jnthn | oops, wrong way around | ||
m: say 16172514963 R/ 16152422888 | |||
camelia | 0.998757640661 | ||
jnthn | (A tiny improvement :)) | 17:18 | |
Though the first machine I spent a lot of time programming on ran at 25 MHz, and this saving would have been nearly a second of CPU time for it :P | |||
Geth | MoarVM/frame-opts: 8ae4b61462 | (Jonathan Worthington)++ | src/moar.c Make MVM_HASH_RANDOMIZE properly control hash rand Before, if one set it to 0, some randomization could still happen. The sure-fire way to make sure that doesn't happen is to just fix the hash secrets to 0 also. |
17:19 | |
jnthn | MasterDuke++ noticed a mistake in that commit :) | ||
Geth | MoarVM/frame-opts: 6c1c015641 | (Jonathan Worthington)++ | 8 files Avoid having to NULL ->extras on each frame By using ->flags instead. This saves us at least one CPU instruction per call frame creation. |
17:21 | |
jnthn | dinner & | 17:30 | |
17:30
domidumont left
18:03
lizmat left
18:43
brrt` joined
18:51
lucasb joined
19:35
patrickb joined
|
|||
brrt` | good * | 19:38 | |
nwc10 | good *, brrt` | 19:51 | |
jnthn | o/ | 20:01 | |
brrt` | ohai nwc10, jnthn | 20:12 | |
20:22
brrt` is now known as brrt
20:41
lizmat joined
21:10
brrt left
21:13
Kaiepi left
21:24
Kaiepi joined
22:05
squashable6 left,
squashable6 joined
22:10
lucasb left
22:36
patrickb left
22:45
sena_kun left
|