WebAssembly Opportunity: Embeding V8 in RAMCloud Server for Extending Ultra-low Latency In-mem KVS

  • Global Moderator

    Adrian Colyer discusses an opportunity for WebAssembly in a new post on his fantastic blog "the morning paper"

    Original Post
    Source Research and Slides

    Quick overview:

    RAMCloud is an ultra-low latency key-value store combining DRAM and RDMA. The RAMCloud research group is looking to use use RAMCloud as a platform to build other higher-level services on top and have reached a conclusion that an embedded JavaScript engine might be the way to go: "with procedure invocation and database interactions 11.4-72x faster, and code only 2-10% slower than native even before considering WebAssembly, JavaScript looks promising."

    The authors also discuss the option of compiling procedures written in C++ to asm.js. “Asm.js code loads fast, runs fast, and it retains the isolation benefits of the JavaScript runtime.” A set of query benchmarks show that asm.js is within 2-10% of native code performance. WebAssembly is even faster than asm.js, and can also support Non-Web Embeddings.

    "Hosts of V8 can multiplex applications by switching between contexts, just as conventional protection is implemented in the OS as process context switches… A V8 context switch is just 8.7% of the cost of a conventional process context switch… V8 will allow more tenants, and it will allow more of them to be active at a time at a lower cost."

    The RAMCloud research group's stated goal is to embed V8 into the RAMCloud server; to develop a smart API for procedures that exposes rich, low-level database functionality; and to begin experimenting with realistic and large scale applications.

  • Interesting. I'm suspecting we are going to see a lot of non-web use of wasm pretty soon.
    I'm particularly interested in getting the AOT parts of LLVM, minus the optimization passes and other crufts, to compile wasm to machine code. A very slim wasm-to-machine-code backend.

    It will be interesting to see a Node-like env for wasm, but without the JIT compiler since wasm is AOT-compiled anyway unless one is considering dynamic loading of wasm modules.
    It would be spec-compliant and would allow all languages that target wasm to run on it.

    I was going to start a wasm-to-x86 compiler, but felt I would be duplicating efforts and I probably wont go very far with it.
    Projects like (https://github.com/WebAssembly/wasm-jit-prototype) and (https://github.com/kanaka/wac) are a nice step in the right direction.
    If anyone has found any similar work being done, please share a link to it.

  • Global Moderator

    @admin Permissions have now allowed me to add tags. Thx!

  • @sc0ttwad3 Oh, you have to select category before add tags.

  • Global Moderator

    @admin I only have access to that tag entry field (below a post in the editor) when initially creating a post. What I can't find is the way to edit my own post, as I'm always presented with the 5 sec. error when I try. Worst case, I could just delete the post, and re-create with appropriate tags?

  • @sc0ttwad3 I've added you to the Moderators Group, fell free to post more topics and editing any of them. Cheers 🙂

  • @sc0ttwad3 There is a input at the bottom of editor

  • Global Moderator

    @admin I don't see a way of doing that. I'm getting "ERROR: You are only allowed to edit posts for 5 second(s) after posting"

  • @sc0ttwad3 Can you add more tags for this topic?

A community for developers looking to put WebAssembly to use today. Come rock WebAssembly with us!