Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

AWS LambdaのCPUを見てみる

More than 3 years have passed since last update.

昔は使えなかったんですが、いつの間にかmultiprocessingモジュールがサポートされていますね。

さて、とあるサービスの速度改善でシリアル処理をパラレルにしてみたのですが、殆ど改善が見られませんでした。
プロセス起動周りでオーバーヘッドが増えたりして、改善できたかと言えば微妙な結果、、

FAQには

AWS Lambda のリソースモデルでは、お客様が関数に必要なメモリ量を指定するとそれに比例した CPU パワーとその他のリソースが割り当てられます。たとえば、256 MB のメモリを指定すると約 2 倍の CPU パワーが Lambda 関数に割り当てられます。128 MB のメモリを指定した場合と比較すると CPU パワーは倍となり、512 MB のメモリを指定した場合と比較すると半分になります。メモリは 128 MB から 3 GB まで、64 MB ごとに増加できます。

とあるのですが、ある一定のところまではメモリ増やして改善したのですが、それ以降はどうも改善せず。。
ということで、メモリを128MB、3008MBにして、それぞれ以下のコードをPython3.6ランタイムで実行してみました。

import os
import multiprocessing

def lambda_handler(event, context):
    print(os.cpu_count())
    print(len(os.sched_getaffinity(0)))
    print(multiprocessing.cpu_count())
    return 

結果はこちら。

  • 128MB

Function Logs:
START RequestId: b65302db-e2b9-11e7-b501-371c5856c559 Version: $LATEST
2
2
2
END RequestId: b65302db-e2b9-11e7-b501-371c5856c559
REPORT RequestId: b65302db-e2b9-11e7-b501-371c5856c559 Duration: 0.27 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 23 MB

  • 3008MB

Function Logs:
START RequestId: a9ce5c14-e2b9-11e7-b543-f9c99b5b752f Version: $LATEST
2
2
2
END RequestId: a9ce5c14-e2b9-11e7-b543-f9c99b5b752f
REPORT RequestId: a9ce5c14-e2b9-11e7-b543-f9c99b5b752f Duration: 15.75 ms Billed Duration: 100 ms Memory Size: 3008 MB Max Memory Used: 26 MB

一緒すね(´・ω・`)

今度は以下のソースを実行

import subprocess

def lambda_handler(event, context):
    output = subprocess.run(['cat','/proc/cpuinfo'], check=True, stdout=subprocess.PIPE).stdout
    print(output.decode('utf8'))
    return
  • 128MB

Function Logs:
START RequestId: 844d00c4-e2bb-11e7-89f4-eb5f7d799335 Version: $LATEST
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
stepping : 4
microcode : 0x42a
cpu MHz : 2793.168
cache size : 25600 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
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 mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm fsgsbase smep erms xsaveopt
bugs :
bogomips : 5586.69
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 : 62
model name : Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
stepping : 4
microcode : 0x42a
cpu MHz : 2793.168
cache size : 25600 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
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 mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm fsgsbase smep erms xsaveopt
bugs :
bogomips : 5586.69
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

END RequestId: 844d00c4-e2bb-11e7-89f4-eb5f7d799335
REPORT RequestId: 844d00c4-e2bb-11e7-89f4-eb5f7d799335 Duration: 10.90 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 23 MB

  • 3008MB

Function Logs:
START RequestId: af26164d-e2bb-11e7-8023-c7679992e57f Version: $LATEST
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
stepping : 2
microcode : 0x3b
cpu MHz : 2899.936
cache size : 25600 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
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 mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 5800.06
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 : 63
model name : Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
stepping : 2
microcode : 0x3b
cpu MHz : 2899.936
cache size : 25600 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
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 mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs :
bogomips : 5800.06
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

END RequestId: af26164d-e2bb-11e7-8023-c7679992e57f
REPORT RequestId: af26164d-e2bb-11e7-8023-c7679992e57f Duration: 5.96 ms Billed Duration: 100 ms Memory Size: 3008 MB Max Memory Used: 25 MB

残念、、予想通りではありますが、どちらもcpu_coreは1ですね。並列処理にはそりゃ効かないか。
ただCPUパワーはどれほど上がるのか、、と期待しましたけども、model nameでは

Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz

と、それほど差を感じない結果。

http://www.cpu-world.com/Compare/416/Intel_Xeon_E5-2666_v3_vs_Intel_Xeon_E5-2680_v2.html

ちなみに上記のCPUモデルが変わるのは1536MBと1600MBが境界みたいです。

多分vCPUは変わってるんでしょうが、コア数が変わらなければ並列処理に速度改善はそれほど望めない、という感じな結果でした。残念!

kurimoto
トレラン大好きエンジニア。
runners
スポーツで世界を良くしたいエンジニアチーム。応援navi、.finisher、run&といった製品開発をしています!
https://www.wantedly.com/projects/167082
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away