colaboratoryとGCSのregionを一致させる

https://jsapachehtml.hatenablog.com/entry/2021/04/25/142900
こちらの書いたことの補足として調べたことをメモ

サーバの位置を割り出すipinfo.ioを参照するのが簡単そうだった。
モダンなIPアドレス表示サービス「ipinfo.io」 - ソフトアンテナブログ

colabでも curl するだけでわかりやすく表示されるためよい

https://colab.research.google.com/notebooks/empty.ipynb
こちらから使い捨てのcolab notebookを2つ開いて位置を確認してみた

!curl ipinfo.io
{
  "ip": "35.238.215.102",
  "hostname": "102.215.238.35.bc.googleusercontent.com",
  "city": "Council Bluffs",
  "region": "Iowa",
  "country": "US",
  "loc": "41.2619,-95.8608",
  "org": "AS15169 Google LLC",
  "postal": "51502",
  "timezone": "America/Chicago",
  "readme": "https://ipinfo.io/missingauth"
}
!curl ipinfo.io
{
  "ip": "35.186.165.109",
  "hostname": "109.165.186.35.bc.googleusercontent.com",
  "city": "Washington",
  "region": "Washington, D.C.",
  "country": "US",
  "loc": "38.8951,-77.0364",
  "org": "AS15169 Google LLC",
  "postal": "20045",
  "timezone": "America/New_York",
  "readme": "https://ipinfo.io/missingauth"
}

アイオワとワシントンだった

ちなみに何度か試してみたところ上記以外のregionも出てきたが、us以外から割り当てられたことはなかった。ただし、この部分は各地域のインスタンス稼働率に依ってくると思うのでasiaが出てくることがないとは言えない

gcpのregionのリストはこちら
https://cloud.google.com/compute/docs/regions-zones?hl=ja#available

アイオワgcpのregionとしてあるのでわかりやすくus-central1、ワシントンというregionはgcpにはないものの、地図で調べればバージニア州のすぐ東隣なのでus-east4であろうことが推測できる

ちょうどus-centralにバケットを作ってあり2.5GBのzipファイルを上げてあったのでそれぞれ一回ずつgsutilでダウンロードしてみた結果がこちら

# アイオワ
[1 files][  2.5 GiB/  2.5 GiB]   45.4 MiB/s  
# ワシントン
[1 files][  2.5 GiB/  2.5 GiB]   51.8 MiB/s 

ほぼ同じ速度だった。当然ネットワーク環境に応じてブレがあるはずなので一回だけでは確かなことは何も言えないものの、同一であれば桁違いに速いとかではなさそう

この日はこれしかgcsにアクセスしなかったので後日課金額を調べてみたところ2.7円くらいとなっていた。おそらくこちらの料金体系だろうと考えていたのと一致する
https://cloud.google.com/storage/pricing?hl=ja#network-buckets

アイオワは同一regionなので無料、ワシントンはregion違いだが同一大陸なので$0.01/GBが課金されたと考えられる

ということで

  • ipinfo.ioで位置を調べることでregionを特定することができる
  • 同一regionだからといって桁違いに速いわけではなさそう
  • 同一regionのインスタンスを使うことでgcsからのネットワーク料金を無料にできる

巨大なデータセットを使いたい場合(とはいってもcolabの場合は最大でもストレージが225GBだが)は同一のインスタンスに合わせて使うことでネットワーク料金を節約できる。

また、無料の範囲で活用する場合でもgoogle driveの容量を空けるのに役立ちそう。driveに5GB弱のデータセットを置いておくと他のものを置く余地が減って出力ファイルの整理を頻繁にやる必要が出てくるので意外と面倒。gcsのalways free分(5GB)を移すことでdriveの容量を空けられるのはなかなかありがたい。