SlideShare a Scribd company logo
関数型言語Elixirの
IoTシステムへの導入に
向けた基礎評価
高瀬 英希 (京都大学)
上野 嘉大 ((有)デライトシステムズ)
山崎 進 (北九州市立大学)
takasehideki/EEloT
Agenda
• 研究背景:IoTとElixir
• 研究目的
• 基礎評価のIoTボード環境
• 用意したベンチマークアプリケーションおよび
基礎評価の結果と考察
• まとめと今後の展望
• おまけ:「ElixirでIoT」の世界
2
takasehideki/EEloT
Agenda
• 研究背景:IoTとElixir
• 研究目的
• 基礎評価のIoTボード環境
• 用意したベンチマークアプリケーションおよび
基礎評価の結果と考察
• まとめと今後の展望
• おまけ:「ElixirでIoT」の世界
3
takasehideki/EEloT
IoT: Internet of Things
• あらゆるモノやコトにヒトを
インターネットに!
• デバイス/エッジ/クラウドの
連携・集結で社会的価値を創出
→ 特にデバイスとエッジにて
開発生産性の向上が不可欠
4https://dzone.com/articles/what-is-an-iot-platform
takasehideki/EEloT
Elixirとは?
• 2012年に登場した新たな関数型言語
− Erlang VM上で動作する
− Rubyを参考にした言語設計
→ 習得が容易で記述性に優れる
• データを直接的に操作する
− 変数はイミュータブル性を持つ → 並列処理に優れる
• WebフレームワークPhoenixを持つ
− RoRと同等以上の生産性でレスポンス性が極めて高い
• 耐障害性が高い
− プロセスごとにGCを含む堅牢なメモリ管理がなされる
− 障害時にはプロセス単位で再起動を高速に行える
5
1..1000
|> Flow.from_enumerable()
|> Flow.map(foo)
|> Flow.map(bar)
|> Enum.to_list
takasehideki/EEloT
組込み分野から見たElixir
• 読み書きしやすい/生産性が高い
• 関数型/並行処理プログラミング
• 分散システム対応/スケールしやすい
• 耐障害性が高い
• 軽量プロセスで動作する
6
IoTシステム開発における開発生産性の
向上有効となる可能性がある
takasehideki/EEloT
研究目的
本研究におけるIoTボードの定義は
“きびきびとLinuxが動いて
さくっとネットに繋がる”モノ
7
IoTへのElixir/Phoenix導入に
向けた足がかりとして,IoTボード上に
おける基礎性能を評価する
コストは?
発熱は?
性能は?
メモリ量は?
takasehideki/EEloT
Agenda
• 研究背景:IoTとElixir
• 研究目的
• 基礎評価のIoTボード環境
• 用意したベンチマークアプリケーションおよび
基礎評価の結果と考察
• まとめと今後の展望
• おまけ:「ElixirでIoT」の世界
8
takasehideki/EEloT
整備したIoTボード
9
• マイクロアーキやOS,ネットワーク接続形態に
よる性能の違いは?
Board OS Core Memory Network
RP3B/Raspbian Raspbian 4.9 4x 1.2GHz
Cortex-A53
1GB
LPDDR2
150Mbps
WiFiRP3B/Ubuntu Ubuntu 16.04
ODROID-XU3 Ubuntu 16.04 4x 2.0GHz
Cortex-A15
4x 1.4GHz
Cortex-A7
2GB
LPDDR3
300Mbps
WiFi
ZYBO Xillinux-2.0 2x 650MHz
Cortex-A9
512MB
DDR3
1GBit
Ethernet
takasehideki/EEloT
Raspberry Pi 3 Model B
使いやすさが自慢のIoT時代の風雲児!!
• 4-Core 1.2GHz Cortex-A53 (64bit)
− Broadcom BCM2837
• 1GB LPDDR2 RAM
• BCM43438 WLAN & BLE on board
• Raspbian sketch with Desktop 4.9
− Raspbian GNU/Linux 9 n l
• Ubuntu MATE 16.04
− Ubuntu 16.04.2 LTS n l
10
takasehideki/EEloT
ODROID-XU3
big.LITTLE&DVFSで
省電力スケジューリングを実現!
• 4-Core 2.0GHz Cortex-A15 (32bit) &&
4-Core 1.4GHz Cortex-A7 (32bit)
− Samsung Exynos5422
• 2GB LPDDR3 RAM
• WLI-UC-G301N USB-WiFi adaptor
• ubuntu-16.04-mate-odroid-xu3-20170731
− Ubuntu 16.04.4 LTS n l
11
takasehideki/EEloT
ZYBO
時代はやわらかFPGA!
ARM密結合で新アプリを創出!
• 2-Core 650MHz Cortex-A9 (32bit)
− Xilinx XC7Z010-1CLG400C
− FPGA: 28k LUTs / 240KB BRAM
• 512MB DDR3 RAM
• Trimode (1Gbit/100Mbit/
10Mbit) Ethernet PHY
• Xillinux-2.0
− Ubuntu 16.04 LTS n l
12
takasehideki/EEloT 13
takasehideki/EEloT
Agenda
• 研究背景:IoTとElixir
• 研究目的
• 基礎評価のIoTボード環境
• 用意したベンチマークアプリケーションおよび
基礎評価の結果と考察
• まとめと今後の展望
• おまけ:「ElixirでIoT」の世界
14
takasehideki/EEloT
評価用ツールキット
15
https://github.com/takasehideki/EEloT
Evaluation toolkit for Elixir on IoT board
• 自動インストールスクリプト
• 評価環境設定スクリプト:コンパイル・ビルド等
• 基本的にはMIT Licenseですが,
*.ex や git repos の著作権は各作者に帰属します
takasehideki/EEloT
評価用ツールキット
− Elixir&Erlangをbrew, apt等で自動インストール
OS環境を自動検知 (macOS, Raspbian, ubuntu, ...)
− cleanモード:パッケージインストールをremove
− sourceモード:ソースからErlang/Elixirをビルド
ソースビルドはErlang OTP 20.3 / Elixir 1.6.5
− *.exコンパイル,git repoのpullとビルド
− cleanモード:.beamとgit dirsを削除
16
$ ./install.sh
$ ./setup.sh
takasehideki/EEloT
用意したベンチマークアプリ
• ライプニッツ級数
− 小数点演算の性能評価
• フィボナッチ数列(シングルプロセス版)
− 整数演算およびスタック使用時の性能評価
• フィボナッチ数列の複数プロセス処理
− 並列性能の評価
• 大規模データのストリーム処理
− CSVデータの処理時の性能評価
• ロジスティック写像
− 他言語モジュール(Rustler)を用いるNIF機能の性能評価
• Phoenixサーバの接続負荷
− サーバのレイテンシとスループットの評価
17
takasehideki/EEloT
評価方法と評価指標
• Elixirバージョン
− Elixir 1.6.5 (compiled with OTP 20)
− Erlangビルド時にHiPE(High Performance Erlang)を導入
• アプリ実行時間の測定方法
− :timer.tc 関数によって取得
• Phoenixサーバの性能評価
− ラップトップから wrk コマンドによって取得
− 4スレッド 同時100コネクション 負荷30秒
18
takasehideki/EEloT
leibniz_formula.ex
• ライプニッツ級数
19
takasehideki/EEloT
fibonacci_simple.ex
• フィボナッチ数列の単純版
− シングルプロセス実行
20
takasehideki/EEloT
fibonacci_process.ex
• フィボナッチ数列のマルチプロセス版
− サーバクライアントモデルによる並列化
− Section 14.5 in Programming Elixir 1.2
21
takasehideki/EEloT
ライプニッツ級数・フィボナッチ数列
22
Board leibniz fib_sim fib_mul
RP3B/Raspbian 114.470 1.076 14.474
RP3B/Ubuntu 118.107 1.223 15.558
ODROID-XU3 48.475 1.471 6.943
ZYBO 161.342 2.957 41.789
• パラメータの設定
− leibniz:和の上限10^8
− fib_sim:数列の項数50_000
− fib_mul:項数37までを6個同時に10プロセス並列で
[単位:秒]
takasehideki/EEloT
ライプニッツ級数・フィボナッチ数列
23
• 小数点演算はXU3,整数演算はRPi3Bが有位
• マイクロアーキのハンデをコア数が凌駕する
− Elixir/Erlangの並列性能を発揮できている
• ZYBOはやはり劣っているが,MIPS性能比ほど悪くはない
Board leibniz fib_sim fib_mul
RP3B/Raspbian 114.470 1.076 14.474
RP3B/Ubuntu 118.107 1.223 15.558
ODROID-XU3 48.475 1.471 6.943
ZYBO 161.342 2.957 41.789
[単位:秒]
takasehideki/EEloT
パラメータ変更時の評価結果
• leibniz の級数を変更
− 縦横軸ともに対数表記
− 綺麗な相関関係がみられた
24
takasehideki/EEloT
パラメータ変更時の評価結果
• fib_sim の項数を変更
− 相関関係にややばらつきがある
− ZYBOの 100_000 ではメモリ不足のエラー
25
takasehideki/EEloT
パラメータ変更時の評価結果
• fib_multi の並列プロセス数を変更
− RP3BとZYBOはコア数で並列性能が頭打ち
− ODROID-XU3では6並列で頭打ち(コア数は8)
26
takasehideki/EEloT
コア動作周波数固定時の結果
27
• RP3BとODROID-XU3を600MHzに固定している
− ZYBOは650MHzのまま パラメータはP.22表と同じ
• 単一プロセスのアプリではZYBOが最も性能が良くなる
• コア数による並列性能の差がみられる
• 64-bitコア/命令セットの違いが性能に大きく影響する
Board leibniz fib_sim fib_mul
RP3B/Raspbian 226.617 2.478 28.906
RP3B/Ubuntu 240.612 2.723 31.856
ODROID-XU3 160.609 5.032 19.737
ZYBO 161.342 2.957 41.789
[単位:秒]
takasehideki/EEloT
elixir_agg_csv
• 巨大CSVデータのストリーミング並列処理
− fukuoka.ex の定番アプリ
28
defmodule ElixirFlow do
def run( filename ) do
result =
filename
|> File.stream!
|> Flow.from_enumerable()
|> Flow.map( &( String.replace(&1, ",", "t")
|> String.replace("rn", "n")
|> String.replace(""", "")))
|> Flow.map(&(&1 |> String.split("t")))
|> Flow.map(&Enum.at(&1, 2 - 1))
|> Flow.partition
|> Flow.reduce(
fn -> {} end, fn(name, acc)
-> Map.update(acc, name, 1, &(&1 + 1)) end)
|> Enum.sort(&(elem(&1, 1) > elem(&2, 1)))
IO.inspect(result)
end
end
takasehideki/EEloT
elixir_agg_csvの結果
29
$ cd elixir_agg_csv/ ; iex -S mix
iex(1)> ElixirFlow.run(“test_300000.csv”)
iex(2)> ElixirFlow.run(“test_3_000_000.csv”)
Board 300000 3_000_000
RP3B/Raspbian 11.128 81.776
RP3B/Ubuntu 9.326 82.487
ODROID-XU3 4.828 46.956
ZYBO 34.380 284.712
• Flowによる並列性能の積極活用の効果が出ている
• 高性能コアを配置するよりもコア数を増やしたほうが
並列性能を発揮することができる
• RPi3BのOS差はみられない
[単位:秒]
takasehideki/EEloT
LogisticMap
• ロジスティック写像
− 生物の個体数の時系列に対する変遷のモデル
− 単純な式でありながら解が複雑な振る舞いをする
• NIF機能の有効性の評価に使用
− Rustler:Rustモジュールを呼び出すライブラリ
30
takasehideki/EEloT
LogisticMap
31
• Rustler不使用はbenchmarks3, 使用時はbenchmarks8
• 並列数が小さい場合はNIF機能が性能向上に寄与できる
Rustler不使用 1 2 4 8
RP3B/Raspbian 46.989 23.486 14.020 14.370
RP3B/Ubuntu 49.799 25.134 14.821 15.200
ODROID-XU3 23.884 12.726 8.895 6.865
ZYBO 87.184 2.957 41.789 48.387
[単位:秒]
Rustler使用 1 2 4 8
RP3B/Raspbian 24.318 21.584 13.745 14.550
RP3B/Ubuntu 24.065 21.550 14.613 14.948
ODROID-XU3 13.769 9.922 7.619 6.920
ZYBO 50.701 40.436 38.454 39.290
takasehideki/EEloT
phoenix-showdown
• Phoenixのshowdownページに対して,
同NW内のPCから接続負荷を掛ける
32
$ wrk -t4 -c100 -d30S --timeout 2000 
"http://<localhost or BoardIP>:4000/showdown"
takasehideki/EEloT
phoenix-showdownの結果
33
$ cd phoenix-showdown/phoenix/benchmarker/
$ mix phoenix.server
Board Throughput [req/s] Latency [ms] Consistency [σms]
RP3B/Raspbian 785.25 351.47 771.85
RP3B/Ubuntu 878.89 113.30 31.68
ODROID-XU3 859.60 112.67 25.82
ZYBO 459.28 216.72 83.10
• ボード構成・接続形態よりもコア性能が重要とみられる
− ODROID-XU3はUSB-WiFiアダプタで接続
− ZYBOは有線接続だが性能を出すことはできない
• RP3BのOS間で明らかな差が見られる
takasehideki/EEloT
Agenda
• 研究背景:IoTとElixir
• 研究目的
• 基礎評価のIoTボード環境
• 用意したベンチマークアプリケーションおよび
基礎評価の結果と考察
• まとめと今後の展望
• おまけ:「ElixirでIoT」の世界
34
takasehideki/EEloT
まとめ
• 関数型言語Elixirの可能性に着目
− 習熟が容易で開発生産性に優れる
− 高い並列性能と耐障害性を発揮する
• IoTボード上での基礎性能の評価
− マイクロアーキよりコア数を重視すべき
− プロセス単位の処理性能はコア動作周波数に依存する
− Phoenix性能についてもコア性能も重視すべき
− OSの違いによって差がみられることもあった
− MIPS性能比・電力効率の観点からは
ZYBOにもある程度の価値はある
35
takasehideki/EEloT
今後の展望
• 短期的な展望
− 他言語との性能比較
− 消費電力・メモリ消費量等の観点からの評価
• 長期的な展望
− 組込み/IoT環境に適したElixir実行環境の構築
− 異種混載デバイス向けの実行環境・ライブラリの整備
36
takasehideki/EEloT
ところでこれってIoT??
37
コストは?
発熱は?
性能は?
メモリ量は?
エッジサーバに
使うってなら
分かるけど,,,
ただのアーキ
比較じゃね??
IoTデバイスで
Linux動かせるなら
苦労しないよ!!
Zynqなら
FPGA/PL部
使わな損や!!
センサとかモータ繋ぎたい!
でもGPIOとかデバドラどうしよ??
takasehideki/EEloT
世界の「ElixirでIoT」
38
• HWもSWもセットでご提供!!
• Erlang VMがbare metalで動く
• 300MHz Cortex-M7 & 64MB Flash
• On-board WLAN & Pmodコネクタ
• ラズパイ等が(限定)対象
• メモリサイズ数10MB!
• クロス開発はツラい,,,
takasehideki/EEloT
「ElixirでIoT」アプリ
39
takasehideki/EEloT
「ElixirでIoT」アプリ
40

More Related Content

What's hot

FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
Hideki Takase
 
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
Mori Ken
 
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
Mori Ken
 
ROSCon2019 Macau 参加報告 Akihiko Tsukuda
ROSCon2019 Macau 参加報告 Akihiko TsukudaROSCon2019 Macau 参加報告 Akihiko Tsukuda
ROSCon2019 Macau 参加報告 Akihiko Tsukuda
AkihikoTsukuda1
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
Mori Ken
 
[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...
[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...
[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...
Deep Learning JP
 
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo FallTOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
Center for Embedded Computing Systems, Nagoya Univ.
 
Klab expert camp 成果発表
Klab expert camp 成果発表Klab expert camp 成果発表
Klab expert camp 成果発表
teruyaono1
 
Mishimasyk141025
Mishimasyk141025Mishimasyk141025
Mishimasyk141025
Kazufumi Ohkawa
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution Guide
Kenta Oono
 
ChEMBLを使おう
ChEMBLを使おうChEMBLを使おう
ChEMBLを使おう
Kazufumi Ohkawa
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
RealSenseを使ってCrazyflieを自律飛行させてみた
RealSenseを使ってCrazyflieを自律飛行させてみたRealSenseを使ってCrazyflieを自律飛行させてみた
RealSenseを使ってCrazyflieを自律飛行させてみた
Katsunori Kanda
 
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
No Bu
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
Hideki Takase
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended Library
Akio Tajima
 

What's hot (18)

FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
 
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)03 第3.6節-第3.8節 ROS2の基本機能(2/2)
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
 
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
 
ROSCon2019 Macau 参加報告 Akihiko Tsukuda
ROSCon2019 Macau 参加報告 Akihiko TsukudaROSCon2019 Macau 参加報告 Akihiko Tsukuda
ROSCon2019 Macau 参加報告 Akihiko Tsukuda
 
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
06 第5.1節-第5.7節 ROS2に対応したツール/パッケージ
 
[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...
[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...
[DL Hacks]BERT: Pre-training of Deep Bidirectional Transformers for Language ...
 
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo FallTOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
 
Klab expert camp 成果発表
Klab expert camp 成果発表Klab expert camp 成果発表
Klab expert camp 成果発表
 
Mishimasyk141025
Mishimasyk141025Mishimasyk141025
Mishimasyk141025
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution Guide
 
ChEMBLを使おう
ChEMBLを使おうChEMBLを使おう
ChEMBLを使おう
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
RealSenseを使ってCrazyflieを自律飛行させてみた
RealSenseを使ってCrazyflieを自律飛行させてみたRealSenseを使ってCrazyflieを自律飛行させてみた
RealSenseを使ってCrazyflieを自律飛行させてみた
 
C++ Now 2012 report
C++ Now 2012 reportC++ Now 2012 report
C++ Now 2012 report
 
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Not...
 
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォームZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
ZytleBot:ROS対応自動走行ロボットへのFPGA活用を加速化する統合開発プラットフォーム
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended Library
 

Similar to 関数型言語ElixirのIoTシステムへの導入に向けた基礎評価

[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
Insight Technology, Inc.
 
お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介
お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介
お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介
Mizuno Osamu
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
7shi
 
講習2日目
講習2日目講習2日目
講習2日目
Yuki Takahashi
 
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
CODE BLUE
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
 
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
Takahiro Shinagawa
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
uchan_nos
 
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi200918166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009Muhammad Ali
 
東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」
NoriakiAndo
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
信之 岩永
 
コンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべてコンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべて
VirtualTech Japan Inc.
 
rosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテック
rosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテックrosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテック
rosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテック
Tatsuya Fukuta
 
FIWARE Lab, a service platform based on a large distributed OpenStack environ...
FIWARE Lab, a service platform based on a large distributed OpenStack environ...FIWARE Lab, a service platform based on a large distributed OpenStack environ...
FIWARE Lab, a service platform based on a large distributed OpenStack environ...
FIWARE
 
Build an iOS app with ConcourseCI
Build an iOS app with ConcourseCIBuild an iOS app with ConcourseCI
Build an iOS app with ConcourseCI
健仁 天沼
 
Hello world make
Hello world makeHello world make
Hello world make
mitsu1119
 
Code igniter + ci phpunit-test
Code igniter + ci phpunit-testCode igniter + ci phpunit-test
Code igniter + ci phpunit-test
ME iBotch
 
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccampクラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
Masahiro NAKAYAMA
 
Orb oracle
Orb oracleOrb oracle
Orb oracle
Masa Nakatsu
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
Orb, Inc.
 

Similar to 関数型言語ElixirのIoTシステムへの導入に向けた基礎評価 (20)

[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
 
お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介
お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介
お手軽マイコンを用いた
水槽管理システム
あくあたんの紹介
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
講習2日目
講習2日目講習2日目
講習2日目
 
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
あなたのAppleにもEFIモンスターはいませんか? by Pedro Vilaça - CODE BLUE 2015
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi200918166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009
 
東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」
 
C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1
 
コンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべてコンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべて
 
rosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテック
rosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテックrosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテック
rosjp10 itとrt(ネットワーク技術と時々、仮想化) 株式会社インテック
 
FIWARE Lab, a service platform based on a large distributed OpenStack environ...
FIWARE Lab, a service platform based on a large distributed OpenStack environ...FIWARE Lab, a service platform based on a large distributed OpenStack environ...
FIWARE Lab, a service platform based on a large distributed OpenStack environ...
 
Build an iOS app with ConcourseCI
Build an iOS app with ConcourseCIBuild an iOS app with ConcourseCI
Build an iOS app with ConcourseCI
 
Hello world make
Hello world makeHello world make
Hello world make
 
Code igniter + ci phpunit-test
Code igniter + ci phpunit-testCode igniter + ci phpunit-test
Code igniter + ci phpunit-test
 
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccampクラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
クラウドセキュリティ基礎 @セキュリティ・ミニキャンプ in 東北 2016 #seccamp
 
Orb oracle
Orb oracleOrb oracle
Orb oracle
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
 

More from Hideki Takase

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
Hideki Takase
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
Hideki Takase
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
Hideki Takase
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Hideki Takase
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
Hideki Takase
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Hideki Takase
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
Hideki Takase
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
Hideki Takase
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
Hideki Takase
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
Hideki Takase
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYAN
Hideki Takase
 
ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?
Hideki Takase
 
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
Hideki Takase
 
mROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみるmROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみる
Hideki Takase
 
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
Hideki Takase
 
Design Concept of a Lightweight Runtime Environment for Robot Software Compo...
Design Concept of a LightweightRuntime Environment for Robot SoftwareCompo...Design Concept of a LightweightRuntime Environment for Robot SoftwareCompo...
Design Concept of a Lightweight Runtime Environment for Robot Software Compo...
Hideki Takase
 
mROS:組込みデバイス向けのROS1ノード軽量実行環境
mROS:組込みデバイス向けのROS1ノード軽量実行環境mROS:組込みデバイス向けのROS1ノード軽量実行環境
mROS:組込みデバイス向けのROS1ノード軽量実行環境
Hideki Takase
 
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 KyotoTOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
Hideki Takase
 
BeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzBeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorz
Hideki Takase
 
ElixirでIoT 第2回 「環境センシングとデータ表示を サクっと?やってみた」
ElixirでIoT 第2回「環境センシングとデータ表示をサクっと?やってみた」ElixirでIoT 第2回「環境センシングとデータ表示をサクっと?やってみた」
ElixirでIoT 第2回 「環境センシングとデータ表示を サクっと?やってみた」
Hideki Takase
 

More from Hideki Takase (20)

Rclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet ElixirRclex: A Library for Robotics meet Elixir
Rclex: A Library for Robotics meet Elixir
 
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
 
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
 
Elixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/NervesはナウでヤングなcoolなすごいやつElixir/Nervesはナウでヤングなcoolなすごいやつ
Elixir/Nervesはナウでヤングなcoolなすごいやつ
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
Nerves!? Elixir!?? 関数型言語でれっつIoT開発!!
 
ElixirでFPGAを設計する
ElixirでFPGAを設計するElixirでFPGAを設計する
ElixirでFPGAを設計する
 
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けてZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
ZytleBot: ROSベースの自律移動ロボットへのFPGAの統合に向けて
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
TOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYANTOPPERSプロジェクトのご紹介@IoT ALGYAN
TOPPERSプロジェクトのご紹介@IoT ALGYAN
 
ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?ElixirでFPGAハードウェアが作れちゃう,かも!!?
ElixirでFPGAハードウェアが作れちゃう,かも!!?
 
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
オースティンから見えてきた「ElixirでIoT」の世界  ~「Nerves」が拓くElixirでのデバイスコントロールを総レビュー~
 
mROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみるmROSをクラウド/仮想環境に連携させてみる
mROSをクラウド/仮想環境に連携させてみる
 
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介Elixirでハードウェアが作れちゃう,かも!!?データフロー型ハードウェア設計環境Cockatriceのご紹介
Elixirでハードウェアが作れちゃう,かも!!? データフロー型ハードウェア設計環境Cockatriceのご紹介
 
Design Concept of a Lightweight Runtime Environment for Robot Software Compo...
Design Concept of a LightweightRuntime Environment for Robot SoftwareCompo...Design Concept of a LightweightRuntime Environment for Robot SoftwareCompo...
Design Concept of a Lightweight Runtime Environment for Robot Software Compo...
 
mROS:組込みデバイス向けのROS1ノード軽量実行環境
mROS:組込みデバイス向けのROS1ノード軽量実行環境mROS:組込みデバイス向けのROS1ノード軽量実行環境
mROS:組込みデバイス向けのROS1ノード軽量実行環境
 
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 KyotoTOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
TOPPERSプロジェクトの紹介&GR-PEACH on TOPPERS高速デモ@OSC2018 Kyoto
 
BeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorzBeerLoverTank!! (を作りたかったorz
BeerLoverTank!! (を作りたかったorz
 
ElixirでIoT 第2回 「環境センシングとデータ表示を サクっと?やってみた」
ElixirでIoT 第2回「環境センシングとデータ表示をサクっと?やってみた」ElixirでIoT 第2回「環境センシングとデータ表示をサクっと?やってみた」
ElixirでIoT 第2回 「環境センシングとデータ表示を サクっと?やってみた」
 

関数型言語ElixirのIoTシステムへの導入に向けた基礎評価

Editor's Notes

  1. まぁバズワード ヒトによってドメインと捉え方が違うので注意が必要 デバイス屋とクラウド屋の間には超えられない壁,,,
  2. このプログラムでは,1 から1000 までのリストを生成し,各コアにリストの要素を分配した後,各要素について関数foo とbar を順番に適用してから結果をリストに戻す.パイプライン演算子とMapReduceモデルのFlowライブラリで並列処理を直接的に記述できる. 図1のプログラムコードを記述すると,各コアにリスト要素を分配して実行される. 10.63倍のスループットを達成できるという報告も
  3. Android使ってもよかった?
  4. Board | leibniz | fib_sim | fib_pro RPi3B-R | 147.527 | 8.316 | 14.658 RPi3B-U | 163.528 | 4.893 | 15.193 ODROID-XU3 | 59.377 | 6.873 | 5.459 ZYBO | 226.399 | (><) | 35.929 MacBook Pro | 7.584 | 2.260 | 3.065
  5. 図4 CSV 形式で記録されたファイルデータをストリームで受け付け,前処理したのちに 2 列目のデータの出現数を集計して多い順でソートする. Elixir における代表的な並列プログラミングのためのライブラリであるFlow を用いており,より実用的なアプリケーションとなっている.
  6. 4スレッド 同時100コネクション 負荷30秒
  7. Craft and deploy bulletproof embedded software in Elixir 公式では12MB Create amazing Internet of Things designs without soldering or dropping down to C.