This is a post to identify what I’ve done in Google Summer of Code 2018. It’s summarized in brief and non-technical, you can refer to more detail in the following links.

Links to what I’ve done:

  1. In-detail post about OpenWhisk performance improvement experiment.
  2. Main repo/branch for experiment.
  3. Invoker agent repo/branch for experiment.
  4. Extended multi-actions wrk peformance bench.
  5. Commits on OpenWhisk main repo during GSoC progress.

The Journey

At first, my original GSoC proposal: OpenWhisk performance improvement - work stealing, priority-based scheduling on load balancer and direct connection for streaming capabilities. is not in the right direction because of less consideration and familiarity with OpenWhisk codebase. During the first period, the performance improvement issues are getting more complex after few proposals raised from folks [1][2][3]; it’s hard to write the real production code without a consistent direction. However, I think communities are nowadays getting closer to future architecture, but it still needs time to clear most of known issues.

Therefore, I’ve proposed a mid-ground prototype experiment aproximate 3000 lines of code changes for exploring any issues on OpenWhisk future architecture: latency gains, performance bottleneck, migration path, resiliency, etc. Not that comprehensive, but hope to stand for exploring what we should further concerned and what we get missed. It’s also nice to make myself to learn from existing codebase and getting more familiar to follow up fast moves from talents in OpenWhisk community.

Future improvement & plans

  1. I’ll do some supplement works on improving existing OpenWhisk codebase by fixing bugs and improve tests, i.e. some issues I’ve found during the experiment progress: tracing support, invoker-agent, kube-related calls, etc.
  2. Improve this experiment (plenty of issues described in the in-detail post) and discuss with community.
  3. Keep join and contributing to make the performance improvement real.