freenode/#sicl - IRC Chatlog
Search
17:38:13
Bike
ah, here we go. they do suggest that the safepoints that are executed extremely commonly could use a more performant mechanism, like patching the code (so if the safepoint isn't active there's just a nop, and if it is there's a branch)
17:38:34
Bike
which would be impracticably slow if you did it for every safe point since patching code ruins caches and stuff
17:51:12
beach
My (admittedly small) family just announced that dinner is served. I'll be back tomorrow as usual.
5:21:31
drmeister
Bike: In the paper that you posted (that I got from Steve Blackburn) what are the different yieldpoint methods in Figure 3 describing?
5:22:20
drmeister
I understand the (a) conditional one (I think). But (b) and (c) - I don't see how they work.
5:23:17
no-defun-allowed
Some Java virtual machines cause threads to read or write an address, which causes a segfault, which then gets handled.
5:23:30
Bike
they're explained under "Trap-Based Polling Yieldpoints". Basically, when the yieldpoint is hit it does a meaningless memory operation on some page. When you want the yieldpoint to activate, you protect the page so that memory operations on it cause the system to trigger an interrupt
5:24:16
drmeister
That is faster than a comparison and a branch? I guess the slow path is a lot slower - right?
5:25:46
Bike
I think figure 5 is the one you want. sometimes the traps do much worse but not always.
5:26:22
drmeister
Ok. I should have read the paper again. I was going off the figure 3 that Steve posted in a Zulip post and I needed the paper to decode it.
5:26:42
Bike
though it depends. in the results under "Global Yieldpoints" they get a 2.5% overhead for a conditional, 2.0% for the load trap, and then 36% for the store trap
5:27:40
Bike
that kind of memory trap stuff isn't something i've dealt with before, so i don't know the ins and outs very well, unfortunately
5:27:57
Bike
but my impression is that garbage collectors and stuff have often used these mechanisms
5:29:58
beach
And it is not clear to me what the performance penalty of invoking the operating system would be.
5:36:45
beach
I know I need something like that when the global collector requests its "roots" from the nursery collectors.