[GoogleCloudFunctions(GCF) Python] GCFのOSや挙動に関するメモ
これは何?
Google Cloud Functionsを触るにあたって、色々と気になったのでPython経由でSystem Commandを叩いてみた結果のメモ
要約
・レスポンス画面で改行させる場合は <br> を付与すること
・OS: Linux 3.11.10 (Distribution 不明)
・CPU: (見かけ上は) 8core (※2GB MEM設定)
・カレントディレクトリは /user_code
・/user_code 配下は main.py と requirements.txt (※GCF定義のものと思われる)
・/user_code 配下は触れない(touch hoge, touch /user_code/hoge を実行してもファイルが生成できない)
・/tmp 配下は触れる(touch /tmp/hoge でファイルが生成できる)
→次回起動時には空っぽになっている。GCF起動時に、毎回テンプレから新規インスタンスを生成しているため?(推測)
※node.jsでも、カレントディレクトリにファイル作成はできないが、/tmp にはファイル作成が可能なことを確認済
・ルートディレクトリ(/)配下は以下の通り
bin
boot
cloudsql
dev
env
etc
gae
home
lib
lib64
logs
media
mnt
opt
proc
root
run
sbin
srv
staging
sys
tmp
user_code
usr
var
worker
検証コード
import subprocess
def chk_info(request):
msg = ""
msg += get_cmd_result("uname -a")
msg += get_cmd_result("cat /proc/cpuinfo")
msg += get_cmd_result("cat /proc/meminfo")
msg += get_cmd_result("pwd")
msg += get_cmd_result("touch foo")
msg += get_cmd_result("touch /user_code/hoge")
msg += get_cmd_result("ls -hl")
msg += get_cmd_result("touch /tmp/fuga")
msg += get_cmd_result("ls -hl /tmp")
msg += get_cmd_result("du -h /tmp")
msg += get_cmd_result("df -h")
msg += get_cmd_result("ls /")
return msg
def get_cmd_result(cmdstr):
msg = cmdstr + "<br>"
p = subprocess.Popen(cmdstr.split(" "), stdout=subprocess.PIPE, stdin=subprocess.PIPE)
for l in p.stdout.readlines():
msg += l.decode('utf-8') + "<br>"
msg += "=" * 50 + "<br>"
return msg
検証結果
uname -a
Linux localhost 3.11.10 #1 SMP Fri Nov 29 10:47:50 PST 2013 x86_64 x86_64 x86_64 GNU/Linux
==================================================
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 4
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 5
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 6
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : unknown
stepping : unknown
cpu MHz : 2200.000
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt rdseed adx smap xsaveopt
bogomips : 2200.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
==================================================
cat /proc/meminfo
MemTotal: 2097152 kB
MemFree: 2060416 kB
MemAvailable: 2060416 kB
Buffers: 0 kB
Cached: 10940 kB
SwapCache: 0 kB
Active: 31252 kB
Inactive: 5472 kB
Active(anon): 25784 kB
Inactive(anon): 0 kB
Active(file): 5468 kB
Inactive(file): 5472 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 25784 kB
Mapped: 10940 kB
Shmem: 0 kB
==================================================
pwd
/user_code
==================================================
touch foo
==================================================
touch /user_code/hoge
==================================================
ls -hl
total 512
-rw-r--r-- 1 root root 823 Oct 19 20:35 main.py
-rw-r--r-- 1 root root 57 Oct 19 20:35 requirements.txt
==================================================
touch /tmp/fuga
==================================================
ls -hl /tmp
total 0
-rw-rw-r-- 1 root root 0 Oct 19 20:35 fuga
==================================================
du -h /tmp
0 /tmp
==================================================
df -h
==================================================
ls /
bin
boot
cloudsql
dev
env
etc
gae
home
lib
lib64
logs
media
mnt
opt
proc
root
run
sbin
srv
staging
sys
tmp
user_code
usr
var
worker
==================================================
おわりに
有料(¥100)にしてるけど、これで内容は全部です。募金してくれる人がいれば、ジュース代としていただけると嬉しい。コードは、インデントくずれが起きたりするようなので、コピペ時には注意してください。
コメント用note(未購入者向け)
干し芋
ここから先は
0字
¥ 100
サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM