Show simple item record

Files in this item

Thumbnail

Item metadata

dc.contributor.authorSzewczyk, Raven
dc.contributor.authorStonehouse, Kim
dc.contributor.authorBarbalace, Antonio
dc.contributor.authorSpink, Tom
dc.date.accessioned2023-02-17T12:30:01Z
dc.date.available2023-02-17T12:30:01Z
dc.date.issued2022-11-06
dc.identifier281181236
dc.identifierd811c315-6baa-4c72-9dfe-7a0cf27ebc8c
dc.identifier85145665952
dc.identifier.citationSzewczyk , R , Stonehouse , K , Barbalace , A & Spink , T 2022 , Leaps and bounds : analysing WebAssembly’s performance with a focus on bounds checking . in Proceedings of the 2022 IEEE International Symposium on Workload Characterization . IEEE , Online , pp. 256-268 , 2022 IEEE International Symposium on Workload Characterization (IISWC 2022) , Austin , Texas , United States , 6/11/22 . https://doi.org/10.1109/IISWC55918.2022.00030en
dc.identifier.citationworkshopen
dc.identifier.isbn9781665487993
dc.identifier.isbn9781665487986
dc.identifier.otherORCID: /0000-0002-7662-3146/work/122215891
dc.identifier.urihttps://hdl.handle.net/10023/27004
dc.description.abstractWebAssembly is gaining more and more popularity, finding applications beyond the Web browser for which it was initially designed. However, its performance, which developers intended to be comparable with native, has not been extensively studied to identify overheads and pinpoint their causes. This paper identifies that WebAssembly’s bounds-checked memory access safety mechanism may introduce up to a 650% overhead, and requires further tuning. Based on that, we extend four popular WebAssembly runtimes with modern bounds checking mechanisms and compare the performance of each with native compiled code. The runtimes are evaluated on three different instruction set architectures: x86-64, Armv8, and RISC-V RV64GC. We show that, for simple numerical kernels from Poly-Bench/C, there are no significant differences in the bounds checking performance overheads across different instruction set architectures. With the default bounds checking mechanism, performance-oriented runtimes are able to achieve execution times within 20% of native on x86-64 platforms, within 35% on Armv8 platforms, and within 17% on RISC-V. We also show that, when scaling the tested runtimes to multiple threads, the default bounds checking approach taken by WAVM, Wasmtime, and V8 of using the mprotect syscall to resize memory can cause excessive locking in the Linux kernel. Such scaling might be used to quickly start up serverless instances for a single function without the overhead of spawning new processes. We present an alternative userfaultf-based solution to mitigate this issue. We share our results, tools, and scripts under an open source license for other researchers to replicate and use to monitor the progress that WebAssembly runtimes make as they evolve.
dc.format.extent13
dc.format.extent758486
dc.language.isoeng
dc.publisherIEEE
dc.relation.ispartofProceedings of the 2022 IEEE International Symposium on Workload Characterizationen
dc.subjectQA75 Electronic computers. Computer scienceen
dc.subjectNDASen
dc.subjectNISen
dc.subjectMCCen
dc.subject.lccQA75en
dc.titleLeaps and bounds : analysing WebAssembly’s performance with a focus on bounds checkingen
dc.typeConference itemen
dc.contributor.institutionUniversity of St Andrews. School of Computer Scienceen
dc.identifier.doi10.1109/IISWC55918.2022.00030


This item appears in the following Collection(s)

Show simple item record