Jeongchul Kim, Jungae Park and Kyungyong Lee, 'Network in Serverless Cloud Function Service', AMGCC 2019, 06/2019 pdf
iperf3 is widely used as a network micro-benchmark.
- Start your EC2 instance, Configure EC2 Network and Subnet(same Lambda functions)
- Configure your Security Group(5201 port - iperf3 server default port)
- Check your EC2 internal-ip (ex : 172.31.XX.XX)
- Install iperf3
- $ sudo yum -y install iperf3
- Server start
- $ iperf3 -s
- If you want to multiple test(concurrent exeuction), executed this code
- Check your Lambda VPC Permission AWSLambdaVPCAccessExecutionRole
- Config your Lambda Network(VPC, Subnet)
- Using iperf3 command, we can let a client (function run-time) work as either a data uploader (default option) or downloader (with -R oprtion).
- Lambda code(single test) : iperf3_client
- Lambda Invocation code(concurrent test) : invoke_iperf3_concurrent_execution
- Lambda input :
{
"server_ip": [SERVER_IP],
"server_port": [SERVER_PORT],
"test_time": [NUMBER_OF_TEST_TIME],
"reverse" : [REVERSE_OPTION]
}
Evaluation with iperf3 provides an easy way to investigate the network bandwidths available for a function run-time, but it does not represent a realistic scenario for data application that may downloading or uploadingof files from a shared block storage(S3). To understand the network performance of FaaS under realistic scenario, we performed download and upload experiments using blocks of data.
- code : s3_get_object_download_network_bandwidth
- Lambda input
{
"object": [S3_BUCKET_NAME],
"key": [DOWNLOAD_OBJECT_KEY]
}
- code : s3_put_object_upload_network_bandwidth
- Lambda input
{
"src_object": [SOURCE_S3_BUCKET_NAME],
"dst_object": [DESTINATION_S3_BUCKET_NAME],
"key": [UPLOAD_OBJECT_KEY]
}
- Start your EC2 instance
- Install Docker
- $ sudo yum -y install docker
- $ sudo service docker start
- $ sudo usermod -aG docker ec2-user
- Start Network Orchestrator
- Copy downloader and uploader to tmp filesystem(/tmp/)
- Start orchestrator $ node orchestrator.js
- Start driver $ node driver.js [NUMBER_OF_DOWNLOADER_CONTAINER] [NUMBER_OF_FILE]