--
--
v8-dev mailing list
v8-...@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/v8-dev/CAH%2BmL5CWjvnpqfYPvv_rdsmH6h-x4mWOtzqDCdPjLA%2BV0c4oQA%40mail.gmail.com.
To view this discussion visit https://groups.google.com/d/msgid/v8-dev/CACFvHWnXBZNRsFWwJtuoHnXhf4KHZgtQGYdM5z9XBcQXdWh3pA%40mail.gmail.com.
This isn't really caused by the IsolateGroup feature. The PagePool allows unused pages to be put in a pool so that other isolates can reuse them. This is a new performance feature from V8. It is more efficient to reuse a page than to unmap and then remap it later, which is two syscalls and probably disrupts the TLB.The page pool would cause the same inter-isolate interactions if IsolateGroups did not exist.
I think the following untested uncompiled patch might fix your problem:diff --git a/src/heap/heap.cc b/src/heap/heap.cc
index 090c1f780d2..d063998a963 100644
--- a/src/heap/heap.cc
+++ b/src/heap/heap.cc
@@ -6402,6 +6402,7 @@ void Heap::TearDown() {
read_only_space_ = nullptr;
+ memory_allocator()->pool()->ReleaseImmediately(isolate());
memory_allocator()->pool()->ReleaseOnTearDown(isolate());
memory_allocator()->TearDown();
This will just release pages immediately, instead of putting them in the shared pool where other isolates can use them.
To view this discussion visit https://groups.google.com/d/msgid/v8-dev/CAHZxHpjOTR1T35eHRE2O71t9HTbd4jX2hNv6HZHy3ed%2B-U1Acw%40mail.gmail.com.
Hello V8 folks,First, the patch works for us! Thank you very much!Interestingly, we've confirmed that putting each isolate into its own group also works, and that seems a more robust solution. If only it didn't require pointer compression :)Anyway, we understand that, since isolate groups were designed to improve pointer compression, no effort will be made to enable it for other scenarios.Nevertheless, the patch only seems to sidestep the issue in the teardown case. Are there any other current or planned scenarios where this "isolate crosstalk" could occur?
To view this discussion visit https://groups.google.com/d/msgid/v8-dev/9417bdcc-72cc-40de-aae8-6e9adfc18bebn%40googlegroups.com.
>With a pointer compression cage per process there's probably already quite some crosstalk in very indirect ways without even sharing pages.Just to clarify: The problem for us is when the crosstalk triggers a synchronous embedder call on behalf of a different isolate – e.g., tearing down one isolate triggers a synchronous call to another isolate's task runner.
To view this discussion visit https://groups.google.com/d/msgid/v8-dev/cd330b4d-a7a0-4313-acae-8b5b1d277887n%40googlegroups.com.
I landed a change which allows you to specify --no_memory_pool_share_memory_on_teardown to disable sharing on teardown using a different Isolate.