wasilibs/nottinygc

Failed to load Wasm module in Istio

MengjiaLiang opened this issue · 2 comments

HI @anuraaga, thank you for releasing such a great GC strategy in proxy-wasm!

I am having trouble with the default GC in TinyGo(v0.27.0) as well.
When I try to compile my wasm plugin use nottinygc and follow the instructions in the readme, the compilation works. But when I deploy it into a k8s cluster with Istio(v1.14 and v1.16), the envoy shows the error when loading the wasm module.

Here is the error message inside envoy proxy.

Failed to load Wasm module due to a missing import: wasi_snapshot_preview1.sched_yield

Do you have any insights for such an issue? Appreciate your help!

Hi @MengjiaLiang - thanks for the question. This is a known issue with Envoy which I have just added docs for, I think that should fix it for you

https://github.com/wasilibs/nottinygc#using-with-envoy

For context, it is the same approach we use here

https://github.com/corazawaf/coraza-proxy-wasm/blob/main/init_tinygo.go#L14

Thank you Anuraag for the quick response!
This works great now!

From my load testing result, the memory usage of Istio(that uses the default GC) increases linearly along with the traffic volume.
After replacing the gc and malloc with nottinygc, I didn't see too much CPU increment, but the memory usage will be stable at some level no matter how much the traffic volume is. This is brilliant!

Appreciate your help again!