You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A few test currently fail on ARM because they have too high expectations for processing time for these rather slow platforms. I'll work in fixing this for v6 and v7 which I can test on both RPi 1 and 2.
@rvagg you mention in #283 (comment) a very-slow flag for tests. Could you point me how I'd add something like that to the test framework? Maybe you have an branch I could base my work off?
Looks like my overclocked RPi2 already passes all tests as-is. It barely makes the repl test in like 900ms of the 1000ms available. Standard clocked RPi2 still needs like 1300ms though :P
@silverwind tbh I was just imagining something in common.js that did a lazy check of the arch when requested and if it returned armv6 then it would be identified as a "slow" platform and the tests that run too slow would internally adjust their timeout length. I haven't looked in detail at how the armv7 builds are going but we may need to have a semi-slow in there as well, or else adjust the timeouts for all platforms to make them work.
Currently in the CI mix we have:
iojs-armv7-ubuntu140 - an Odroid XU3 which is a bit of a beast and doesn't seem to have trouble with the tests
iojs-armv7-wheezy - a couple of armv7 servers provided by Scaleway that run Debian Wheezy armhf (i.e. not a Raspbian variant or anything fancy). I haven't been watching test results for these and I don't know much about the hardware these are running on but I'm betting they aren't as powerful as the XU3 machine.
iojs-armv8-ubuntu1404 - armv8 / aarch64 provided by Linaro on their cluster, this is on an APM X-Gene Mustang board, I doubt we're at the stage of looking at timeouts on this
iojs-raspbian-wheezy-pi1 - an armv6 rotation of 2 x Pi v1 and 1 x Pi v1plus, this is where we have most of the timeout problems and a lot of it seems to be related to how long it takes to start a process
iojs-raspbian-wheezy-pi2 - one Pi v2 which is armv7, I haven't looked in detail at the state of timeouts and how this compares with the two other armv7 configurations.
iojs-armv7-wheezy - a couple of armv7 servers provided by Scaleway that run Debian Wheezy armhf (i.e. not a Raspbian variant or anything fancy). I haven't been watching test results for these and I don't know much about the hardware these are running on but I'm betting they aren't as powerful as the XU3 machine.
I did some digging about this the other day, best I could find is https://www.scaleway.com/faq/server, which doesn't have too much perf / processor info. I do suspect these have higher perf than an rpi2 however.
yeah, the XU3 is a beautiful piece of hardware, even has a tiny little fan on it that spins up occasionally, I'd like a second one for the cluster so I might put out a call some time to get the funds for one.
The Scaleway machines have 3 of these:
processor : 3
model name : ARMv7 Processor rev 2 (v7l)
Features : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfpd32 lpae
CPU implementer : 0x56
CPU architecture: 7
CPU variant : 0x2
CPU part : 0x584
CPU revision : 2
Reporting:
Hardware : Marvell Armada 370/XP (Device Tree)
Revision : 0000
Serial : 0000000000000000
I think the best approach would probably be to benchmark process startup time once in common.js and calculate a "slowness factor" from that. Could probably do that for all platforms or just ARM.
Maybe make it lazy like opensslCli, inFreeBSDJail and localhostIPv4 so the user of the variable doesn't need to care about how it works and it doesn't need to be cached within tests.
At one stage I had the impression that some timeouts needs a 10x increase on the Pi1 machines. Perhaps you could just wire up the test cases that need this and tune from there though.
@jbergstroem Yeah we could bunch them together so we know the problematic ones. Would you suggest creating subfolders like slow/parallel and slow/sequential?
Also, not sure about that arg. I think with a quick benchmark in common.js in place, we don't need to to fiddle with timeout values.
@silverwind my suggestion would be to just have one level depth. Half of the problem with timeouts is that the test runner might be busy doing other stuff. Running them sequentially will reduce time spent in each test (but probably longer overall).
Activity
silverwind commentedon Apr 4, 2015
Failing tests are:
ARMv6:
ARMv7
silverwind commentedon Apr 5, 2015
Looks like my overclocked RPi2 already passes all tests as-is. It barely makes the repl test in like 900ms of the 1000ms available. Standard clocked RPi2 still needs like 1300ms though :P
WIP branch: https://github.com/silverwind/io.js/tree/arm-test-timeout
rvagg commentedon Apr 6, 2015
@silverwind tbh I was just imagining something in common.js that did a lazy check of the arch when requested and if it returned armv6 then it would be identified as a "slow" platform and the tests that run too slow would internally adjust their timeout length. I haven't looked in detail at how the armv7 builds are going but we may need to have a semi-slow in there as well, or else adjust the timeouts for all platforms to make them work.
Currently in the CI mix we have:
/cc @iojs/platform-arm @iojs/build
Fishrock123 commentedon Apr 6, 2015
Samsung Exynos5422 Cortex™-A15 2.0Ghz quad core and Cortex™-A7 quad core CPUs [1]
Dang. :P
I did some digging about this the other day, best I could find is https://www.scaleway.com/faq/server, which doesn't have too much perf / processor info. I do suspect these have higher perf than an rpi2 however.
rvagg commentedon Apr 6, 2015
yeah, the XU3 is a beautiful piece of hardware, even has a tiny little fan on it that spins up occasionally, I'd like a second one for the cluster so I might put out a call some time to get the funds for one.
The Scaleway machines have 3 of these:
Reporting:
Fishrock123 commentedon Apr 6, 2015
Only 3 cores eh? the scaleway deployed ones are supposed to be 4-cores. Hmm.
rvagg commentedon Apr 6, 2015
sorry, I meant 4
silverwind commentedon Apr 6, 2015
Here's what I currently have:
https://github.com/silverwind/io.js/blob/2774b24050464e031d2824f0cfbaa4b3325e90b3/test/common.js#L182-L200
I think the best approach would probably be to benchmark process startup time once in common.js and calculate a "slowness factor" from that. Could probably do that for all platforms or just ARM.
rvagg commentedon Apr 6, 2015
Maybe make it lazy like
opensslCli,inFreeBSDJailandlocalhostIPv4so the user of the variable doesn't need to care about how it works and it doesn't need to be cached within tests.At one stage I had the impression that some timeouts needs a 10x increase on the Pi1 machines. Perhaps you could just wire up the test cases that need this and tune from there though.
silverwind commentedon Apr 6, 2015
Yeah, the armv6 value is arbitrary right now. I only ran armv7 so far, which seems to need something like 1.3-1.4 on a standard RPi2.
jbergstroem commentedon Apr 6, 2015
How about moving test we know are slow to a
slowfolder? That way we can run them as a separate job (tools/test.py --timeout $foo slow)silverwind commentedon Apr 6, 2015
@jbergstroem Yeah we could bunch them together so we know the problematic ones. Would you suggest creating subfolders like
slow/parallelandslow/sequential?Also, not sure about that arg. I think with a quick benchmark in common.js in place, we don't need to to fiddle with timeout values.
jbergstroem commentedon Apr 6, 2015
@silverwind my suggestion would be to just have one level depth. Half of the problem with timeouts is that the test runner might be busy doing other stuff. Running them sequentially will reduce time spent in each test (but probably longer overall).
bnoordhuis commentedon Apr 6, 2015
We have test/pummel for slow tests. I filed PR #1357 for fudging the per-test timeout factor.
silverwind commentedon Apr 7, 2015
Those are getters which can't have arguments, so not really possible through a getter at least.
test: increase timeouts on ARM
silverwind commentedon Apr 9, 2015
Fixed by 7049d7b
rvagg commentedon Apr 10, 2015
whoa, all green (blue), great work everyone!
silverwind commentedon Apr 10, 2015
Now we just need to squash the few intermittent failures that come up on CI randomly.