[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