Недавно команда gcloud storage вышла в GA и я решил проверить насколько ее производительность отличается от gsutil. Для тестов нашелся GCS бакет с примерно 21k мелких объектов (средний размер 24kB), которые сжаты gzip.
Запускать тесты буду в e2-standard-2 VM (2 vCPU / 8 GB). Текущая версия Google SDK:
$ gcloud version
Google Cloud SDK 403.0.0
alpha 2022.09.20
beta 2022.09.20
bq 2.0.77
bundled-python3-unix 3.9.12
core 2022.09.20
gcloud-crc32c 1.0.0
gsutil 5.13
Чтобы не зависеть от скорости работы блочного устройства тесты буду выполнять на ramfs.
$ sudo mkdir /mnt/ramdisk
$ sudo mount -t ramfs none /mnt/ramdisk
$ sudo chmod 777 /mnt/ramdisk
$ cd /mnt/ramdisk
$ mkdir test1 test2
Копирование данных через gcloud storage cp
$ cd /mnt/ramdisk/test1/
$ time gcloud storage cp -r gs://BUCKET/SAMPLE/DATA/* .
[skipped output]
Completed files 21000/21000 | 448.9MiB/448.9MiB | 1.5MiB/s
Average throughput: 1.5MiB/s
real 4m54.065s
user 9m4.797s
sys 0m30.854s
Копирование данных через gsutil cp (используется многопоточность)
$ cd /mnt/ramdisk/test2/
$ time gsutil -m cp -r gs://BUCKET/SAMPLE/DATA/* .
[skipped output]
Operation completed over 21.0k objects/448.9 MiB.
real 5m58.861s
user 10m8.143s
sys 1m18.350s
В моем тесте копирование мелких объектов c использованием gcloud storage быстрее gsutil примерно на 18%. Пока что gcloud storage не заменит полностью gsutil, но для простых операций стоит использовать её.