[webkit-dev] Bring back ARMv6 support to JSC

Caio Lima ticaiolima at gmail.com
Tue Aug 1 16:52:44 PDT 2017


Hi all.

FYI, I keep the last weeks investigating the issue with ARMv6 IC and I
was able to find the source of the bug and apply a quick fix to run
benchmarks again to get results. I just ran V8Spider, Octane and
Kraken by now and I'm attaching the results in this email.

We found some test cases regressing, and my attention now is to
identify the reason of the regression and how to fix them. Also, the
improvements got with JIT in ARMv6 aren't as big as Filip commented in
[1] to supported architectures.

[1] - https://bugs.webkit.org/show_bug.cgi?id=172765#c9

2017-07-13 19:27 GMT-03:00 Caio Lima <ticaiolima at gmail.com>:
> Yes. It probably will take a while to process on device, but I'll run it.
>
> Em qui, 13 de jul de 2017 às 17:50, Saam barati <sbarati at apple.com>
> escreveu:
>>
>> And ARES6.
>>
>> - Saam
>>
>>
>> On Jul 13, 2017, at 1:50 PM, Saam barati <sbarati at apple.com> wrote:
>>
>> Can you please run Octane and Kraken too?
>>
>> - Saam
>>
>> On Jul 13, 2017, at 7:47 AM, Caio Lima <ticaiolima at gmail.com> wrote:
>>
>> Finally I got the results from the last benchmark run. The results
>> shows that the speed-ups are considerable comparing with CLoop
>> version, since we get faster results in a big number of tests and
>> regress in a minor number of scripts. I would like to get feedback
>> from you as well, but IMHO enabling JIT for ARMv6 looks a good
>> improvement step and the amount of code we are touching in current
>> trunk code to make it possible is small.
>>
>> The results are attached and I also uploaded them in
>> https://bugs.webkit.org/show_bug.cgi?id=172765.
>>
>> PS.: Some test cases (bigswitch-indirect-symbol-or-undefined,
>> bigswitch-indirect-symbol, bigswitch, etc) are failing now and I'm
>> already investigating the source of problem to fix them.
>>
>> Regards,
>> Caio.
>>
>> 2017-07-05 22:54 GMT-03:00 Filip Pizlo <fpizlo at apple.com>:
>>
>> To be clear, I’m concerned that the 32-bit JIT backends have such bad
>> tuning for these embedded platforms that it’s just pure badness. Until you
>> can prove that you can change this, I think that porting should focus on
>> making the cloop great. Then, we can rip out support for weird CPUs rather
>> than bringing it back.
>>
>> -Filip
>>
>> On Jul 5, 2017, at 6:14 PM, Caio Lima <ticaiolima at gmail.com> wrote:
>>
>> 2017-07-05 18:25 GMT-03:00 Filip Pizlo <fpizlo at apple.com>:
>>
>> You need to establish that the JIT is a performance progression over the
>> LLInt on ARMv6. I am opposed to more ARMv6 patches landing until there is
>> some evidence provided that you’re actually getting speed-ups.
>>
>>
>> It makes sense. I can get these numbers related to JIT.
>>
>> BTW, there is a Patch that isn't JIT related
>> (https://bugs.webkit.org/show_bug.cgi?id=172766).
>>
>> Regards,
>> Caio.
>>
>> -Filip
>>
>> On Jun 13, 2017, at 6:48 PM, Caio Lima <ticaiolima at gmail.com> wrote:
>>
>> Hi All.
>>
>> Some of you guys might know me through the work I have been doing in
>> JSC. The experience working with WebKit has been great so far, thank
>> you for the reviews!
>>
>> Since 1st May, we at Igalia have been working on bring back the ARMv6
>> support into JSC. We already have commits into our downstream branch
>> port[2] that fixes some compile/runtime errors when building JSC to
>> ARMv6 and also fixes some bugs. However, this branch is not synced
>> with WebKit upstream tree and I would like to pursue the upstreaming
>> of this ARMv6/JSC support to WebKit.
>>
>> As a long shot, we are planning to maintain the ARMv6 support and make
>> tests run as green as possible. Also, it's our goal make ARMv6 support
>> not interfere with other ARM versions support code negatively and we
>> will be in charge of implement platform-specific fixes/features for
>> JSC/ARM6, this way no imposing burden to the rest of the community.
>>
>> To keep track of work to be done, I've create a meta-bug in
>> bugzilla[3] and it's going to be used firstly to organize the commits
>> from our downstream branch, but pretty soon I'm going to create issues
>> related with javascriptcore-test failures and send patches to fix
>> them. We have already submitted 3 patches (they are marked as
>> dependence of [3]) that fixes ARMv6 into LLInt and JIT layers and got
>> a round of review into them.
>>
>> Best Regards,
>> Caio.
>>
>> [1] - https://www.igalia.com/about-us/coding-experience
>> [2] - https://github.com/WebPlatformForEmbedded/WPEWebKit
>> [3] - https://bugs.webkit.org/show_bug.cgi?id=172765
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>>
>>
>> <baseline_changes_SunSpiderLongSpiderV8SpiderMicrobenchmarksSixSpeed_buildroot_20170712_1029_report.txt>_______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>>
>>
>>
>
-------------- next part --------------
Benchmark report for Octane and Kraken on buildroot.

VMs tested:
"baseline" at /home/igalia/clima/webkit/WebKitBaselineBuild/Release/bin/jsc
"changes" at /home/igalia/clima/webkit/WebKitBuild/Release/bin/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                 baseline                  changes                                      
Octane:
   encrypt                                 147.59817+-1.00374    ^    51.41483+-1.57008       ^ definitely 2.8707x faster
   decrypt                                2581.86602+-24.49791   ^   526.20319+-37.20137      ^ definitely 4.9066x faster
   deltablue                        x2     513.00824+-36.11471   !   663.19470+-38.64730      ! definitely 1.2928x slower
   earley                                  576.73714+-4.20953    ^   211.75420+-4.92585       ^ definitely 2.7236x faster
   boyer                                  8276.47130+-330.63773  ^  3990.71533+-255.97142     ^ definitely 2.0739x faster
   navier-stokes                    x2    2883.12166+-170.09429  ^   352.35257+-3.50131       ^ definitely 8.1825x faster
   raytrace                         x2    3749.42543+-47.53537   !  4464.38906+-213.67318     ! definitely 1.1907x slower
   richards                         x2     210.26519+-9.82052    ^   171.13220+-13.97025      ^ definitely 1.2287x faster
   splay                            x2     316.67844+-11.29587   ^   258.52298+-22.92918      ^ definitely 1.2250x faster
   regexp                           x2   15320.92904+-113.01778  ^  4095.85981+-120.79860     ^ definitely 3.7406x faster
   pdfjs                            x2   19794.22220+-979.38027  ^  9858.43362+-356.72465     ^ definitely 2.0078x faster
   mandreel                         x2  225837.77087+-31990.41781 ^  9213.73752+-155.41456     ^ definitely 24.5110x faster
   gbemu                            x2   56440.08307+-2317.41885 ! 82446.39224+-1029.19589    ! definitely 1.4608x slower
   closure                                  50.97770+-1.53253    ^    46.84781+-1.22921       ^ definitely 1.0882x faster
   jquery                                  613.38853+-16.83057       596.01325+-19.39399        might be 1.0292x faster
   box2d                            x2    9725.65928+-243.62970  ! 11144.27302+-424.13252     ! definitely 1.1459x slower
   zlib                             x2  1068543.62950+-62343.31958 ^ 28623.13951+-252.59075     ^ definitely 37.3315x faster
   typescript                       x2  216164.12427+-3746.86411 !251418.44061+-6334.97357    ! definitely 1.1631x slower

   <geometric>                            6195.38993+-104.53664  ^  2693.91861+-28.44779      ^ definitely 2.2998x faster

                                                 baseline                  changes                                      
Kraken:
   ai-astar                               172378.203+-34732.377  ^   25364.455+-74.430        ^ definitely 6.7961x faster
   audio-beat-detection                    33635.660+-625.755    ^    4431.822+-24.904        ^ definitely 7.5896x faster
   audio-dft                               36122.981+-595.871    ^   10285.083+-1151.841      ^ definitely 3.5122x faster
   audio-fft                               30105.435+-397.465    ^    3631.396+-58.235        ^ definitely 8.2903x faster
   audio-oscillator                        64678.929+-2908.624   ^   11599.036+-1268.395      ^ definitely 5.5762x faster
   imaging-darkroom                        66521.377+-7337.693   ^    6095.504+-118.265       ^ definitely 10.9132x faster
   imaging-desaturate                      70783.959+-2174.413   ^    8788.541+-14.113        ^ definitely 8.0541x faster
   imaging-gaussian-blur                  474827.059+-36084.235  ^   75341.816+-935.092       ^ definitely 6.3023x faster
   json-parse-financial                     4339.827+-145.355    ^    4099.218+-84.253        ^ definitely 1.0587x faster
   json-stringify-tinderbox                 2419.250+-245.699         2232.950+-38.697          might be 1.0834x faster
   stanford-crypto-aes                     27208.933+-2241.381   ^    8456.116+-151.175       ^ definitely 3.2177x faster
   stanford-crypto-ccm                     16108.282+-316.266    ^    7899.645+-191.944       ^ definitely 2.0391x faster
   stanford-crypto-pbkdf2                  63888.354+-7148.358   ^   12163.269+-228.669       ^ definitely 5.2526x faster
   stanford-crypto-sha256-iterative        22718.236+-3154.413   ^    6299.667+-611.147       ^ definitely 3.6063x faster

   <arithmetic>                            77552.606+-2886.282   ^   13334.894+-204.034       ^ definitely 5.8158x faster

                                                 baseline                  changes                                      
Geomean of preferred means:
   <scaled-result>                        21917.8818+-387.3275   ^   5993.4652+-33.8916       ^ definitely 3.6570x faster

-------------- next part --------------
Benchmark report for V8Spider on buildroot.

VMs tested:
"baseline" at /home/igalia/clima/webkit/WebKitBaselineBuild/Release/bin/jsc
"changes" at /home/igalia/clima/webkit/WebKitBuild/Release/bin/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to
gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.

                         baseline                  changes                                      

crypto            21663.2342+-271.9681   ^   5777.2356+-334.2337      ^ definitely 3.7498x faster
deltablue         77796.5568+-3638.3526  !  90582.6876+-8850.1138     ! definitely 1.1644x slower
earley-boyer      34764.6712+-1185.0708  ^  18998.9683+-844.4303      ^ definitely 1.8298x faster
raytrace          22123.8074+-518.8294   !  30489.4965+-606.8164      ! definitely 1.3781x slower
regexp            37990.0515+-525.0047   ^  11956.3918+-250.0535      ^ definitely 3.1774x faster
richards          71017.3162+-2248.2744     63932.8547+-5983.8392       might be 1.1108x faster
splay             18401.1262+-1294.0554  ^  14423.5305+-883.1819      ^ definitely 1.2758x faster

<geometric>       34994.5904+-514.3205   ^  22926.5483+-381.8007      ^ definitely 1.5264x faster



More information about the webkit-dev mailing list