Google cloud storage Gsutil在下载多个文件时会使用大量的内存

Google cloud storage Gsutil在下载多个文件时会使用大量的内存,google-cloud-storage,gsutil,Google Cloud Storage,Gsutil,我需要使用gsutil下载多个文件,我注意到gsutil在下载多个文件时使用了大量内存。(下载三个2G文件(每个文件有9个进程)时,内存约为1-2GB)。有没有办法调整gsutil的内存使用率?这对我来说很重要,因为我在GKE中运行gsutil,如果使用太多内存(超过限制),容器将被杀死 另一个问题:gsutil似乎无法在一个命令中下载同名文件(一个命令将覆盖另一个?)。所以我没有使用-m选项。相反,我使用单个gsutil命令下载每个文件: gsutil-o“gsutil:parallel_-t

我需要使用gsutil下载多个文件,我注意到gsutil在下载多个文件时使用了大量内存。(下载三个2G文件(每个文件有9个进程)时,内存约为1-2GB)。有没有办法调整gsutil的内存使用率?这对我来说很重要,因为我在GKE中运行gsutil,如果使用太多内存(超过限制),容器将被杀死

另一个问题:gsutil似乎无法在一个命令中下载同名文件(一个命令将覆盖另一个?)。所以我没有使用-m选项。相反,我使用单个gsutil命令下载每个文件:
gsutil-o“gsutil:parallel_-thread_-count=1”-o“gsutil:sliced_-object_-download_-size=250M”-o“gsutil:sliced_-object_-download_-max_-components=9”-o“gsutil:parallel_-process_-count=9”cp bucket/file desFile

我确实下载了2GB文件并更改了-o“gsutil:parallel-process_-count=X”更改Debian和Ubuntu上的内存消耗:

  • 1个并行进程:85MB
  • 5个并行进程:125MB
  • 10平行 进程:165MB
  • 50个并行进程:310MB
如果您在GKE上使用gsutil和CentOS时出现内核死机问题,切换到Ubuntu映像应该会有所帮助

如果内存消耗太高,3个文件同时下载,你可以考虑只使用1或2下载。


还有一些已知问题

我确实测试下载了2GB文件,并更改了-o“GSUtil:parallel_process_count=X”更改了Debian和Ubuntu上的内存消耗:

  • 1个并行进程:85MB
  • 5个并行进程:125MB
  • 10平行 进程:165MB
  • 50个并行进程:310MB
如果您在GKE上使用gsutil和CentOS时出现内核死机问题,切换到Ubuntu映像应该会有所帮助

如果内存消耗太高,3个文件同时下载,你可以考虑只使用1或2下载。


还有一些已知问题

您使用的是什么GKE?如果您使用的是CentOS,切换到Ubuntu应该会有所帮助。下载同名文件是什么意思?bucket“Folder”中的两个对象不能具有相同的名称。如果将具有相同名称的下一个对象复制到bucket,则旧对象将被覆盖@PawelCzuczwara我实际上是指不同bucket“文件夹”中的文件,例如,gsutil不适用于在单个命令中下载/bucket1/path1/output和/bucket2/path2/output,因为gsutil将下载到这两个文件的输出,并且其中一个将覆盖另一个。我想知道是否有办法解决这个问题,以便我可以在一个命令中下载所有文件。您是否尝试过
gsutil cp-r gs://my bucket/data dir
recursive您也可以尝试使用
gsutil rsync-r data gs://mybucket/data
您使用的GKE是什么?如果您使用的是CentOS,切换到Ubuntu应该会有所帮助。下载同名文件是什么意思?bucket“Folder”中的两个对象不能具有相同的名称。如果将具有相同名称的下一个对象复制到bucket,则旧对象将被覆盖@PawelCzuczwara我实际上是指不同bucket“文件夹”中的文件,例如,gsutil不适用于在单个命令中下载/bucket1/path1/output和/bucket2/path2/output,因为gsutil将下载到这两个文件的输出,并且其中一个将覆盖另一个。我想知道是否有一种方法可以解决这个问题,这样我就可以在一个命令中下载所有文件。您是否尝试过
gsutil cp-r gs://my bucket/data dir
recursive您也可以尝试使用
gsutil rsync-r data gs://mybucket/data
我正在使用ubuntu进行容器映像,并且我的ram使用率是以前的两倍左右使用以下命令下载2G文件时的结果:gsutil-o“gsutil:parallel\u thread\u count=1“-o”gsutil:sliced\u object\u download\u max\u components=X“-o”gsutil:parallel\u process\u count=X”cp bucket/file。我想知道为什么gsutil在不同的环境下消耗不同数量的ram…我的第一个测试是在Debian上,现在我在Ubuntu上进行了测试,得到了非常相似的结果。您使用的是什么Google云SDK?我使用252.0.0和gsutil 4.39Hi,我的环境中没有安装Google Cloud SDK,我的gsutil是4.38。如果您在命令中指定“GSUtil:parallel\u thread\u count=1”,多进程似乎比多线程消耗更多内存,但性能更好。我正在使用ubuntu进行容器映像,与使用命令:GSUtil-o下载2G文件时的结果相比,我的ram使用率大约是您的两倍“GSUtil:parallel\u thread\u count=1”-o“GSUtil:sliced\u object\u download\u max\u components=X”-o“GSUtil:parallel\u process\u count=X”“cp桶/文件。我想知道为什么gsutil在不同的环境下消耗不同数量的ram…我的第一个测试是在Debian上,现在我在Ubuntu上进行了测试,得到了非常相似的结果。您使用的是什么Google云SDK?我使用252.0.0和gsutil 4.39Hi,我的环境中没有安装Google Cloud SDK,我的gsutil是4.38。如果在命令中指定“GSUtil:parallel\u thread\u count=1”,多进程似乎比多线程消耗更多内存,但性能更好。