On the Measurement of io_uring Performance: a Strategy and Experience in the Envoy Service Mesh

Authors

  • Luca Octavio Martínez DEI - Universidad Católica "Nuestra Señora de la Asunción"
  • Raúl Gutierrez DEI - Universidad Católica "Nuestra Señora de la Asunción"
  • Luca Cernuzzi Universidad Católica Nuestra Señora de la Asunción

DOI:

https://doi.org/10.19153/cleiej.27.2.3

Keywords:

Service Mesh, io_uring, Envoy, Performance

Abstract

A growing number of projects from various areas have recently incorporated support for io_uring, a novel technique to reduce system calls and accelerate processing capabilities in network services. This new approach promises to yield benefits within the context of modern infrastructure patterns, such as those embracing the service mesh paradigm. Among these projects, Envoy Proxy has been in the process of gaining io_uring support. An initial experimental trial using Envoy with io_uring reports a 10% increase in bandwidth along with a 10% reduction in latency. Unfortunately there is scarce companion data to support the results and the corresponding communication protocols that were used, all of which would have been quite useful to facilitate the reproducibility of these experiences. Therefore, the main contribution of the present study aims to measure and systematise the impact of io_uring in an Envoy-based service mesh using our proposed matrix of operations and protocols. We have also designed a measurement strategy which is composed of key metrics to assess the impact of io_uring. Our test results show improvements reducing latency and increasing bandwidth. More specifically, for HTTP/1 the obtained results are on par with the initial claims whereas for HTTP/2 they are better than the previous study.

References

Z. Bin, J. Qing Chao, Y. Ling Xiao and C. Xiao Guang, "Research and limitation of system call based on Linux platform," in 2011 International Conference on Electric Information and Control Engineering, Wuhan, China, 2011, pp. 1592-1595, https://ieeexplore.ieee.org/document/5777226

R. Norris, “io_uring is not an event system”, 2021 -

https://despairlabs.com/posts/2021-06-16-io-uring-is-not-an-event-system/

Z. Brown (Oracle), “Asynchronous System Calls”, 2007 -

https://www.kernel.org/doc/ols/2007/ols2007v1-pages-81-86.pdf

D. McCall, “Asynchronous I/O and event notification on linux”, 2017 -

http://davmac.org/davpage/linux/async-io.html

“Reentrancy, thread safe, asynchronous signal safe, interrupt safe and cancellation safe”, 2020 -

https://sites.google.com/site/embeddedmonologue/home/c-programming/reentrancy-thread-safe-asynchronou s-signal-safe-interrupt-safe-and-cancellation-safe

Oracle Documentation, “Signal Handlers and Async-Signal Safety” -

https://docs.oracle.com/cd/E19455-01/806-5257/gen-26/index.html

Jens Axboe, “Efficient IO with io_uring”, 2019 - https://kernel.dk/io_uring.pdf

A. De Sarker, “Getting Hands on with io_uring using Go”, 2020 -

https://developers.mattermost.com/blog/hands-on-iouring-go/

S. Hussain, “What is io_uring?”, 2020 - https://unixism.net/loti/what_is_io_uring.html

T. Endo and S.M. Saleh Al-Mashni, “Comparative Evaluation of Asynchronous IO Interface between io_uring and libaio implemented in a NoSQL DB for SSD”, 2019 - https://jglobal.jst.go.jp/en/detail?JGLOBAL_ID=202002249376629901

G. Costa, “How io_uring and eBPF Will Revolutionize Programming in Linux”, April2021 -

https://thenewstack.io/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/

E.D. Berger, C. Hollenbeck, P. Maj, O. Vitek and J. Vitek, “On the Impact of Programming Languages on Code Quality”, in ACM Transactions on Programming Languages and Systems, 2019, pp 1–24, https://dl.acm.org/doi/10.1145/3340571

S. Nanz, C. A. Furia, “A comparative study of programming languages in Rosetta code”, in ICSE '15: Proceedings of the 37th International Conference on Software Engineering, 2015, pp. 778–788, https://dl.acm.org/doi/10.5555/2818754.2818848

J. Iry, “Types à la Chart”, 2010 - http://james-iry.blogspot.com/2010/05/types-la-chart.html

A. Gaynor, “Introduction to Memory Unsafety for VPs of Engineering”, 2019 -

https://alexgaynor.net/2019/aug/12/introduction-to-memory-unsafety-for-vps-of-engineering/

E. D. Berger and B. G. Zorn, “DieHard: probabilistic memory safety for unsafe languages”, in ACM SIGPLAN Notices, 2006, pp. 158-168, https://dl.acm.org/doi/abs/10.1145/1133255.1134000

W. Li, Y. Lemieux, J. Gao, Z. Zhao and Y. Han, “Service Mesh: Challenges, State of the Art, and Future Research Opportunities,” in 2019 IEEE International Conference on Service-Oriented System Engineering (SOSE), 2019, pp. 122-1225, https://ieeexplore.ieee.org/document/8705911

R. Gutiérrez Segalés, 2021, “Implementando una Malla de Servicios”, tésis de grado, DEI - Universidad Católica “Nuestra Señora de la Asunción”

P. Jamshidi, C. Pahl, N. C. Mendonça, J. Lewis and S. Tilkov, "Microservices: The Journey So Far and Challenges Ahead," in IEEE Software, vol. 35, no. 3, pp. 24-35, May/June 2018, https://ieeexplore.ieee.org/document/8354433

Z. Jory, “The Top 3 Service Mesh Developments in 2020”, 2019 -

https://thenewstack.io/the-top-3-service-mesh-developments-in-2020

D. Rozhkov (Intel) Contribution to Envoy, “Migrate event loops from file events to buffer events” -

https://github.com/envoyproxy/envoy/issues/17922

D. Rozhkov (Intel) Contribution to Envoy, “io: add iohandle backed with io_uring” -

https://github.com/envoyproxy/envoy/pull/19082

T. Fromm, “Performance Benchmark Analysis of Istio and Linkerd”, 2019 -

https://kinvolk.io/blog/2019/05/performance-benchmark-analysis-of-istio-and-linkerd/

L. Calcote, M. Ganguli, S. Ranganath and O. Van Der Schaaf, “Analyzing Service Mesh Performance”, 2021 - https://layer5.io/resources/service-mesh-performance/analyzing-service-mesh-performance

M. Kipper, “Benchmarking Istio & Linkerd CPU”, 2019 -

https://medium.com/@michael_87395/benchmarking-istio-linkerd-cpu-c36287e32781

I. Sim, “Linkerd 2.0 and Istio Performance Benchmark”, 2018 -

https://ihcsim.medium.com/linkerd-2-0-and-istio-performance-benchmark-df290101c2bb

L. O. Martínez, R. Gutierrez and L. Cernuzzi, "A Measurement Strategy for io_uring Performance in the Envoy Service Mesh", 2023 XLIX Latin American Computer Conference (CLEI), La Paz, Bolivia, 2023, pp. 1-10, https://ieeexplore.ieee.org/document/10346093

B. Kitchenham, O. Pearl Brereton, D. Budgen, M. Turner, J. Bailey, S. Linkman, “Systematic literature reviews in software engineering – A systematic literature review”, Information and Software Technology, Volume 51, Issue 1, pp. 7-15, 2009, https://doi.org/10.1016/j.infsof.2010.03.006

L. Larsson, W. Tärneberg, C. Klein, E. Elmroth and M. Kihl, “Impact of etcd deployment on Kubernetes,

Istio, and application performance”. Softw Pract Exper, 2020, pp. 1-22, https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2885

M. R. Saleh Sedghpour, C. Klein and J. Tordsson, “An Empirical Study of Service Mesh Traffic Management Policies for Microservices”, 13th ACM/SPEC International Conference on Performance Engineering, 2022, https://dl.acm.org/doi/10.1145/3489525.3511686

M. Jøsok Nesset, 2021 “Evaluating Performance And Security Characteristics Of Service Mesh Technologies In A Rancher 2.X Environment”, Bac helor thesis, Norwegian University of Science and Technology (NTNU), Trondheim - https://ntnuopen.ntnu.no/ntnu-xmlui/handle/11250/2781191

Z. Sun, “Latency-aware Optimization of the Existing Service Mesh in Edge Computing Environment”, Dissertation, 2019 - https://www.diva-portal.org/smash/record.jsf?pid=diva2%3A1334280&dswid=-3305

N. Dattatreya Nadig, “Testing Resilience of Envoy Service Proxy with Microservices”, Dissertation, 2019 -

https://www.diva-portal.org/smash/get/diva2:1372122/FULLTEXT01.pdf

M. O'Keefe, J. Howard, M. Jog, “Best Practices: Benchmarking Service Mesh Performance”, 2019 -

https://istio.io/latest/blog/2019/performance-best-practices/

Istio Documentation, “Performance and Scalability” -

https://istio.io/latest/docs/ops/deployment/performance-and-scalability/

W. Morgan (Linkerd), “Benchmarking Linkerd and Istio”, 2021 -

https://linkerd.io/2021/05/27/linkerd-vs-istio-benchmarks/

W. Morgan (Linkerd), “Linkerd Benchmarks”, 2019 - https://linkerd.io/2019/05/18/linkerd-benchmarks/

R. Li, “Benchmarking Envoy Proxy, HAProxy, and NGINX Performance on Kubernetes”, 2019 -

https://www.getambassador.io/resources/envoyproxy-performance-on-k8s/

G. Dillon, “Benchmarking 5 Popular Load Balancers: Nginx, HAProxy, Envoy, Traefik, and ALB”, 2018 -

https://www.loggly.com/blog/benchmarking-5-popular-load-balancers-nginx-haproxy-envoy-traefik-and-alb/

Envoy Nighthawk Documentation - https://github.com/envoyproxy/nighthawk/blob/main/README.md

Linux Manual for taskset - https://man7.org/linux/man-pages/man1/taskset.1.html

R. M. Jösch, “Managing Microservices with a Service Mesh”, Degree Project, 2020 -

http://kth.diva-portal.org/smash/get/diva2:1464891/FULLTEXT01.pdf

New Relic Docs, “Request queuing and tracking front-end time” -

https://docs.newrelic.com/docs/apm/apm-ui-pages/features/request-queuing-tracking-front-end-time/

MDN Contributors, “Understanding latency”, 2022 -

https://developer.mozilla.org/en-US/docs/Web/Performance/Understanding_latency

Istio Documentation, “Istio Standard Metrics” - https://istio.io/latest/docs/reference/config/metric

Downloads

Published

2024-07-21