On 2015/08/31 06:31:58, Michael Lippautz wrote:
On 2015/08/28 20:49:41, fedor.indutny wrote:
> The results of benchmarks are:
>
> ./node-slow 1 && ./node-no-inline-fast 1 && ./node-fast 1
> 4997.4 ns/op
> 4701.6 ns/op
> 4685.7 ns/op
>
> NOTE: `no-inline-fast` is the initial version of patch, `fast` - is current,
> `slow` - vanilla v8.

Please add the summary to the description.

Argh, looks like I missed this one before hitting the commit button. Sorry!


>
> The other thing that I have noticed is that there are not much scavenges
> happening:
>
> [65202:0x101804c00] 22 ms: Scavenge 1.9 (38.0) -> 1.8 (38.0) MB, 0.6
ms
> [allocation failure].
> [65202:0x101804c00] 23 ms: Scavenge 2.0 (38.0) -> 2.0 (39.0) MB, 0.5
ms
> [allocation failure].
> [65202:0x101804c00] 48 ms: Scavenge 3.5 (39.0) -> 3.1 (39.0) MB, 3.4
ms
> [allocation failure].
> [65202:0x101804c00] 57 ms: Mark-sweep 3.7 (39.0) -> 2.9 (40.0) MB, 4.7
ms
> [external memory allocation limit reached.] [GC in old space requested].
> [65202:0x101804c00] 68 ms: Mark-sweep 3.4 (40.0) -> 2.9 (40.0) MB, 9.4
ms
> [external memory allocation limit reached.] [GC in old space requested].
> [65202:0x101804c00]       81 ms: Mark-sweep 2.9 (40.0) -> 2.9 (40.0) MB,
12.4
ms
> [external memory allocation limit reached.] [GC in old space requested].
> [65202:0x101804c00] 82 ms: Mark-sweep 2.9 (40.0) -> 2.7 (40.0) MB, 1.7
ms
> [external memory allocation limit reached.] [GC in old space requested].
> [65202:0x101804c00] 91 ms: Mark-sweep 3.3 (40.0) -> 2.7 (40.0) MB, 3.4
ms
> [external memory allocation limit reached.] [GC in old space requested].
>
> I guess making them a scavenges might be the next step to improve the
> performance.
>

I don't think there's much to improve on here with the current architecture.

The buffers in question are allocated externally (while the wrapping object
JSArrayBuffer is only conditionally allocated externally). We start an
incremental GC (see api.cc AdjustAmountOfExternalAllocatedMemory) once we hit the limit. For the scavenge map you need the scavenge information and for the
full map you need a full transitive closure.

We are allocating `kInternalized` ArrayBuffers in node. Is there any other way
to allocate them "internally"?

All of the allocated buffers are in the new space, may I ask you to elaborate a
bit more on why the Scavenge is not possible in this case?

Thank you!

https://codereview.chromium.org/1316873004/

--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to