|
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. |
|||
|
08:05
ingy left
08:07
ingy joined
09:12
sena_kun joined
09:18
sena_kun left
|
|||
| lizmat | Is there a way to find out whether a global GC cycle has been done, or possibly: find out how many have been done? | 10:48 | |
| reason I'm asking: | |||
| in ParaSeq (raku.land/zef:lizmat/ParaSeq) I'm trying to batch an optimum number of values to get the lowest wallclock usage | 10:49 | ||
| it takes the wallclock of previous batches, and then computes the "right" number of values to match a certain interval (.5 millisecs at the moment) | 10:50 | ||
| however, a global GC can easily take multiple milliseconds (judging from the stats that ParaSeq keeps) | 10:51 | ||
| which has a detrimental effect, because it will make it look like the batch of size X got too many values to process, so it will reduce the size of future batches | 10:52 | ||
| which increases wallclock when it shouldn't | |||
| so I'd like to adjust the wallclock seen for a batch if it can be determined it had a global GC in it | 10:53 | ||
| ideally of course, I'd like to see how much CPU a batch has used, but I'm lead to understand that's impossible to find out (generally) | 10:54 | ||
| FWIW, I hope to make ParaSeq versatile enough so that it can be made to power >>.foo | 10:55 | ||
| lizmat hopes she's not rubberducking herself | |||
|
11:36
leont left
11:44
leont joined
12:15
leont left
12:17
leont joined
|
|||
| Woodi | lizmat: disabling gc when needed ? looks like low level features are needed so maybe some paart of it need to be implemented in moar ? | 12:57 | |
| lizmat | no, I don't want to disable GC | 12:58 | |
| I just want to know *when* it did a full GC | |||
| Woodi | "to see how much CPU a batch has used": do moar have instructions count like real cpus ? :) | ||
| lizmat | so I can account for it when calculating optimum batch sizes | ||
| Woodi | I mean: pause gc and do work in beetwin | 13:00 | |
| lizmat | the work it is doing is causing the GC :-) so that isn't a solution :-) | 13:01 | |
| Woodi | hmm, ^Inf :) | ||
| lizmat | I have a test case of a 840MB text file, and looking for a string in it | 13:02 | |
| and the GC is causing the batch size to decrease significantly | 13:03 | ||
| Woodi | I think in gc-based vm's gc's are meta - they should be invisible. so low level coding and co-operating with gc is simplest choice. or having predictible gc | 13:04 | |
| lizmat | I'm willing to cooperate with GC: I just want to know when it ran | 13:08 | |
|
13:40
nine left,
nine joined
|
|||
| Woodi | grep shows few things on gc_start :) but src/profiler/log.c can have some examples ;) | 13:57 | |
| japhb | lizmat: FWIW, I've wanted this for quite a while, because it's damn near impossible to tune for stable animation frame rates if you can't tell what caused a frame time jump | 14:45 | |
| I wonder if "GC generation number" could be an exposed thing | 14:46 | ||
| Also, it's not clear that GC affects threads equally, so not knowing which threads did more work may be an issue too | 14:47 | ||
| Woodi | but leaking implementation details into upper level languages can end badly. vm's are nice and simple when they are black boxes | 15:12 | |
| ...clien-server approach ? or syscals :) | 15:18 | ||
| lizmat | japhb | 15:48 | |
| japhb: if you run a profile, it knows how many GC runs there have been | |||
| so the info is in there somewhere | |||
| also: I think MoarVM's GC is currently "stop the world", so it would affect all threads equally I'd say | 15:49 | ||
|
16:59
japhb left,
japhb joined
18:12
sena_kun joined
|
|||
| japhb | lizmat: GCs often have a stop the world phase and one or more concurrent phases. I don't remember how this maps out to MoarVM's GC (it's been too dang long since I looked at it) | 18:29 | |
| lizmat | fwiw, I would be happy if we could find out the *number* of GC runs | 18:31 | |
| in a syscall | |||
| [Coke] | github.com/MoarVM/MoarVM/blob/main...=1#L52-L57 - I feel we can use stronger language here. | 20:04 | |
| Geth | MoarVM/coke/readme: b5d6caf897 | (Will Coleda)++ | README.markdown Remove notes about development, other compilers |
20:58 | |
| MoarVM: coke++ created pull request #1815: Remove notes about development, other compilers |
20:59 | ||
|
21:54
lizmat_ joined
21:58
lizmat left
22:00
lizmat_ left
22:01
lizmat joined
23:03
sena_kun left
|
|||