DOI: 10.5281/zenodo.6907619
title: Benchmarking on Microservices Configurations and the Impact on the Performance in Cloud Native Environments

description: <strong>The peer reviewed publication for this dataset has been published in LCN 2022, 47th Annual IEEE Conference on Local Computer Networks. Please cite this paper when referring to the dataset: https://www.eurecom.fr/publication/6971.</strong> Cloud-native and containerization have changed the way to develop and deploy applications. Cloud-native rethinks the application architecture by embracing a microservice approach, where each microservice is packaged into containers to run in a centralized or an edge cloud. When deploying the container running the micro-service, the tenant has to specify the needed computing resources to run their workload in terms of the amount of CPU and memory limit. However, it is not straightforward for a tenant to know in advance the computing amount that allows running the microservice optimally. This will have an impact not only on the service performances but also on the infrastructure provider, particularly if the resource overprovisioning approach is used. To overcome this issue, we conduct an experimental study aiming to detect if a tenant's configuration allows running its service optimally. We run several experiments on a cloud-native platform, using different types of applications under different resource configurations. The obtained results are presented in the accepted IEEE LCN paper (https://www.eurecom.fr/publication/6971) and are shared in this dataset. The datasets are collected for 3 types of applications: Web servers written in python and Golang, RabbitMQ data broker and the OpenAirInterface 5G Core network function AMF (Access and Mobility Management Function). <br> <strong>Web Servers:</strong> <strong>files: </strong>golang-web-server-performance.csv, python-web-server-performance.csv We used Golang and Python-based web servers for the test. Each request to the web server returns a video of a size 43 MB. For testing we used ApacheBench, a command-line program used for benchmarking HTTP web servers. ApacheBench allows parallel requests from multiple clients. For each web server instance we send a number of requests ranging from 100 to 1000 and a concurrency level between 1 and 100, representing the number of parallel clients performing the requests. The information available in the dataset are as follows: <strong>time:</strong> timestamp of collection of metrics. <strong>ram_limit:</strong> the memory allocated to the container in megabytes. <strong>cpu_limit:</strong> the CPU allocated to the container. <strong>ram_usage:</strong> the amount of memory used by the container at the time of the metrics collection in byte. <strong>cpu_usage:</strong> the amount of CPU used by the container at the time of the metrics collection. <strong>n:</strong> the number of requests sent to the container. <strong>c:</strong> the concurrency level in the requests. <strong>lat50:</strong> the least response time for the best 50% requests in microseconds. <strong>lat66:</strong> the least response time for the best 66% requests in microseconds. <strong>lat75:</strong> the least response time for the best 75% requests in microseconds. <strong>lat80:</strong> the least response time for the best 80% requests in microseconds. <strong>lat90:</strong> the least response time for the best 90% requests in microseconds. <strong>lat95:</strong> the least response time for the best 95% requests in microseconds. <strong>lat98:</strong> the least response time for the best 98% requests in microseconds. <strong>lat99:</strong> the least response time for the best 99% requests in microseconds. <strong>lat100:</strong> the least response time in microseconds. <strong>5G Core network’s AMF:</strong> <strong>file: </strong>amf-performance.csv For testing we use my5G-RANTester, a tool for emulating control and data planes of the UE and gNB (5G base station). The number of simultaneous registration requests that are sent to each instance of the AMF varies between 10 and 400. The information available in the dataset are as follows: <strong>time:</strong> timestamp of collection of metrics. <strong>ram_limit:</strong> the memory allocated to the container in megabytes. <strong>cpu_limit:</strong> the CPU allocated to the container. <strong>ram_usage:</strong> the amount of memory used by the container at the time of the metrics collection in byte. <strong>cpu_usage:</strong> the amount of CPU used by the container at the time of the metrics collection. <strong>n:</strong> the number of parallel registration requests sent to the AMF. <strong>mean:</strong> the mean registration time for all the registration requests in microseconds. <strong>lat50:</strong> the median registration time for registration requests in microseconds. <strong>lat75: </strong>the least registration time for the best 75% registration requests in microseconds. <strong>lat80:</strong> the least registration time for the best 80% registration requests in microseconds. <strong>lat90:</strong> the least registration time for the best 90% registration requests in microseconds. <strong>lat95:</strong> the least registration time for the best 95% registration requests in microseconds. <strong>lat98:</strong> the least registration time for the best 98% registration requests in microseconds. <strong>lat99:</strong> the least registration time for the best 99% registration requests in microseconds. <strong>lat100:</strong> the least registration time in microseconds. <strong>RabbitMQ data broker:</strong> <strong>file: </strong>rabbitmq-performance.csv For testing we used RabbitMQ PerfTest which is a throughput testing tool that simulates basic workloads and provides the throughput and the time that a message takes to be consumed by a consumer. For each deployed RabbitMQ server we used a number of producers and consumers that ranges from 50 to 500. Each producer sends messages to the broker with a rate of 100 messages per second for a period of time of 90 seconds. The information available in the dataset are as follows: <strong>time:</strong> timestamp of collection of metrics. <strong>ram_limit:</strong> the memory allocated to the container in megabytes. <strong>cpu_limit:</strong> the CPU allocated to the container. <strong>ram_usage:</strong> the amount of memory used by the container at the time of the metrics collection in byte. <strong>cpu_usage:</strong> the amount of CPU used by the container at the time of the metrics collection. <strong>n:</strong> the number of producers sending messages to the RabbitMQ server. <strong>Min:</strong> the minimum consumption time for the producer messages. <strong>lat50:</strong> the median consumption time for the producer messages. <strong>lat75:</strong> the least consumption time for the best 75% messages in microseconds. <strong>lat95:</strong> the least consumption time for the best 95% messages in microseconds. <strong>lat99:</strong> the least consumption time for the best 99% messages in microseconds.
description: {"references": ["Mohamed Mekki, Nassima Toumi, and Adlen Ksentini. \"Microservices Configurations and the Impact on the Performance in Cloud Native Environments\". In: LCN 2022, 47th Annual IEEE Conference on Local Computer Networks, 26-29 September 2022, Edmonton, Canada."]}