- I am uploading data to Google cloud storage bucket using n processes parallelly, egress data rate is ~16Gbps.
- For only downloading data from gcp storage bucket using n processes parallelly, ingress traffic is ~26Gbps.
- But when I execute upload and download at the same time with same no. of processes, ingress rate reduces to ~7Gbps and egress to ~11/12Gbps.
- Using different buckets for upload and download. Instance and buckets are in the same region. Using Windows Server 2012 r2 OS and configuration is n1-standard-32 (32 vCPUs, 120 GB memory). Upload and download api's are in C# REST api using httprequests. GCP documention doesn't mentioned regarding any bandwidth cap: https://cloud.google.com/vpc/docs/quota#per_instance.
- LinkSpeed for the adapter is 100 Gbps
- If only upload and only download takes full bandwidth, then I am assuming executing both at the same time should scale each to ~16Gbps.
- Is there any cap for overall traffic per gcp instance? what is the maximum bandwidth gcp instance can use with single network interface?
GCP does not cap the ingress or egress traffic - but it all depends on what the machine can handle and how much network can take (it will vary depending on network conditions).
The documentation you linked to says that there's no cap but what it says is that
egress and ingress bandwidth depends on machine type
It also states (under "Maximum ingress data rate" in the "Notes" column that you should plan only 10Gbps for one machine:
For purposes of capacity planning, you should assume that each VM instance can handle no more than 10 Gbps of external Internet traffic.
You can look up the max bandwidth for various machine types in the documentation. You have N1 32cpu for which limit is 32Gbps (
32 Gbps for Skylake or later CPU platforms. 16 Gbps for all other platforms
Considering that you do achieved about 26 Gbps effectively I would say you're it's very good result - furthermore under non ideal network conditions.
Network bandwidth is up to the specified limit. Actual performance depends on factors such as network congestion or protocol overhead.
Depending on the measuring method - in my opinion you almost reached the arbitrary bandwidth limit of a single GCP VM.
If I were you I would just stick with that number and plan accordingly. If you want more speed then you can write GCP support and ask.
There is one error at the beginning of Wojciech's answer. Google does apply an egress cap/throttle to a VM's traffic.
When you are running the various tests, have you been looking at the per-vCPU utilization in your VM? Not just the overall CPU utilization, but per-vCPU. You want to see if any individual vCPU(s) are saturating. Also, are these uploads/downloads from/to storage in the VM or simply memory? You may want to look at the utilization of your VM's storage while your running your tests.
You might also look to see what the depth of the vNIC receive queues happens to be and if it is already at the maximum.
Edit: If you have not already, you might consider enabling one of the private access to Google services options: https://cloud.google.com/vpc/docs/private-access-options
© 2022 - 2024 — McMap. All rights reserved.