-
Notifications
You must be signed in to change notification settings - Fork 439
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Basic performance testing #22
Comments
Setting up in |
Setup notesCreate an instance with a built-in key that can access GCS:
Copy in key file:
ssh in and set up the shell:
Install and set up fuse:
Log out and back in so the group change takes effect:
Install Go:
Install Git:
Install gcsfuse:
Test notesGenerate some data:
gcsfuseMount gcsfuse:
Copy in the file:
gsutil
|
Results from a few runs100 MiBgcsfuse
gsutil
1 GiBgcsfuse
gsutil
|
So pretty slow, but not as terribly slow as I had feared. Some things to look at:
|
Trying with dd:
which gives:
which is not much different. Only slightly better with a block size of 10x that, on a single run:
|
Confirmed: writes are 4 KiB. |
Hacked together a binary that uses New results for 1 GiB:
Better. Surprisingly,
|
Hacked in some logging that shows that with 32 KiB most of the time is spent in ObjectProxy.Sync, which is doing the network write:
Now that's actually a bit odd to me. What is our |
FWIW, here is the CPU profile while calling CreateObject:
|
Although gcsfuse CPU usage hovers at about 50%, so that's probably not the bottleneck. |
To do for alpha: Document these numbers, set performance expectations. |
Switched to resumable object uploads in jacobsa/gcloud@3b1af22, which seems to make a bit of a difference to upload speed. As far as I can tell, this effect is responsible for most of the remaining delta with gsutil. (Ignoring the unavoidable double-copy overhead when staging the temporary file in gcsfuse.) |
To do:
|
Issue #27 is fixed. Tried again with 1 GiB:
Much much better, and proabably good enough for now. Let's document that performance is comparable with gsutil, and wait for specific complaints. |
We should do some performance testing to identify completely obvious bottlenecks.
time cp
to measure wall time taken to copy from local disk to GCS.gsutil cp
. (Both can be measured here by just usingtime gsutil cp
, I think.)The text was updated successfully, but these errors were encountered: