Hi!
I'm debugging a bit of a performance mystery. In short, piping 1GB from a
file to /dev/null is significantly faster when the heap is empty and
significantly slower when there's a large object on the heap. I've
reproduced this at
https://gist.github.com/philz/3e55a1a3377797d1fbc47b10a219ec6f . I've tried
node 8 and node 12, on both Mac and Linux. As far as I can tell, based on
using "--trace_gc" as well as "perf record" (& friends), Node/V8 are
choosing to do a lot more Mark & Sweep collections (as opposed to
"Scavenge") in the runs where the heap is more utilized.
I stumbled upon this while debugging a similar-looking problem with S3
upload performance, where a hot path seems to be
NodeBIO::TryAllocateForWrite() calling
into v8::internal::IncrementalMarking::AdvanceWithDeadline, but there are
more variables there.
Many thanks for any insights y'all may have.
-- Philip
$~/node/env-8.15.0/bin//node slow.js
Created random.1gb.bin
Writing to dev null took (ms): 563
Writing to dev null took (ms): 451
Writing to dev null took (ms): 451
Writing to dev null took (ms): 463
Writing to dev null took (ms): 450
[ '/Users/philip/node/env-8.15.0/bin/node',
'/Users/philip/src/scratch/slow.js' ]
{ total_heap_size: 11354112,
total_heap_size_executable: 3670016,
total_physical_size: 9530776,
total_available_size: 1490917424,
used_heap_size: 5765264,
heap_size_limit: 1501560832,
malloced_memory: 8192,
peak_malloced_memory: 2890352,
does_zap_garbage: 0 }
{ leaves: 10000, depth: 2 }
{ total_heap_size: 951926784,
total_heap_size_executable: 3670016,
total_physical_size: 848844440,
total_available_size: 653356752,
used_heap_size: 812714040,
heap_size_limit: 1501560832,
malloced_memory: 8192,
peak_malloced_memory: 2890352,
does_zap_garbage: 0 }
Writing to dev null took (ms): 3493
Writing to dev null took (ms): 3650
Writing to dev null took (ms): 3712
Writing to dev null took (ms): 3620
Writing to dev null took (ms): 3494
--
Job board: http://jobs.nodejs.org/
New group rules:
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/a67d9298-90ff-4d52-a0fb-00b5a7c10e26%40googlegroups.com.