Description
@nodejs/build are talking about how to improve test time on the ARM machines and we're tackling it on multiple fronts. However, by far the biggest challenge we're facing with the test suite is node
process startup time and this isn't something we can do much about from our end so I'm wondering if others here (@bnoordhuis, @trevnorris, others?) can offer suggestions about if and how we might be able to improve things.
On a Pi1 B+ (ARMv6):
$ time ./iojs -pe process.versions
{ http_parser: '2.5.0',
node: '2.3.4-pre',
v8: '4.2.77.20',
uv: '1.6.1',
zlib: '1.2.8',
ares: '1.10.1-DEV',
modules: '44',
openssl: '1.0.2c' }
real 0m3.148s
user 0m2.950s
sys 0m0.160s
$ time ./iojs -pe true
true
real 0m3.172s
user 0m2.990s
sys 0m0.140s
$ time ./iojs -v
v2.3.4-pre
real 0m0.035s
user 0m0.010s
sys 0m0.010s
Which explains why we can't get below ~2.5h for build+test (we've managed to squeeze the build part of that down to ~12m with aggressive caching strategies).
Then this:
$ strace ./iojs -pe true 2>&1 | wc
3690 23609 218443
vs this on an x64 machine:
$ strace ./iojs -pe true 2>&1 | wc
327 2038 23875
Which seems like a huge discrepancy to me, even considering the architecture differences.
I can't recall the details of what happened with snapshots on ARM but they are currently on by default, even on ARM now:
$ grep snapshot config.gypi
'v8_use_snapshot': 1,
Anyone want to take a look or suggest ways to investigate this further?