Item type |
SIG Technical Reports(1) |
公開日 |
2018-07-23 |
タイトル |
|
|
タイトル |
Nodeプログラミングモデルを活用したC<sup>++</sup>およびElixirの実行環境の実装 |
タイトル |
|
|
言語 |
en |
|
タイトル |
Implementation of Runtime Environments of C<sup>++</sup> and Elixir with the Node Programming Model |
言語 |
|
|
言語 |
jpn |
キーワード |
|
|
主題Scheme |
Other |
|
主題 |
マルチコア |
資源タイプ |
|
|
資源タイプ識別子 |
http://purl.org/coar/resource_type/c_18gh |
|
資源タイプ |
technical report |
著者所属 |
|
|
|
北九州市立大学 |
著者所属 |
|
|
|
有限会社デライトシステムズ |
著者所属 |
|
|
|
有限会社デライトシステムズ |
著者所属 |
|
|
|
京都大学 |
著者所属(英) |
|
|
|
en |
|
|
University of Kitakyushu |
著者所属(英) |
|
|
|
en |
|
|
Delight Systems Co., Ltd. |
著者所属(英) |
|
|
|
en |
|
|
Delight Systems Co., Ltd. |
著者所属(英) |
|
|
|
en |
|
|
Kyoto University |
著者名 |
山崎, 進
森, 正和
上野, 嘉大
高瀬, 英希
|
著者名(英) |
Susumu, Yamazaki
Masakazu, Mori
Yoshihiro, Ueno
Hideki, Takase
|
論文抄録 |
|
|
内容記述タイプ |
Other |
|
内容記述 |
Node.js では,コールバックを用いて I / O を非同期的に扱ってノンプリエンプティブなマルチタスクにする機構 Node プログラミングモデルが備わっている.これにより,ウェブサーバーのメモリ使用量を格段に減らすことができ,同時セッション最大数やレイテンシが改善される.我々は C++ と Elixir で同様の機構を実装した.C++ への実装を Zackernel と称し,Elixir への実装を軽量コールバックスレッドと称している.Zackernel は RFID のような極端に小規模で消費電力の少ない IoT システムを組む場合のカーネルとしての用途,軽量コールバックスレッドはクラウドサーバーでの用途をそれぞれ想定している.Zackernel は C++ 11 で採用された匿名関数を利用して,dispatch メソッドにて次に呼び出すべき関数をキューから読み込んで呼び出すという原理で実現する.軽量コールバックスレッドは,関数のリストをキューとして保持し,キューの先頭の関数の実行が終わったら次の関数を呼び出すという原理で実現する.これらと従来のプロセス / スレッドとの 1 プロセス / スレッドあたりのメモリ消費量を比較する評価実験を行なった.その結果,Zackernel は 1 スレッドあたり 204 バイトと最も少なく,軽量コールバックスレッドが 1 スレッドあたり 1332 バイト,Elixir プロセスが 1 プロセスあたり 2835 バイト,C++ 11 スレッドが 1 スレッドあたり約 546 KB であった.今後,プロセス間通信の機能を実装し,ベンチマークプログラムに適用して性能を評価したい. |
論文抄録(英) |
|
|
内容記述タイプ |
Other |
|
内容記述 |
Node.js has the Node programming model, which is a non-preemptive multi-tasking mechanism that processes I / O asynchronously using callbacks. Thus, it improves maximum concurrent sessions and latency of web servers because it requires few memory. We implement it in C++ and Elixir. We call the implementation in C++ and Elixir Zackernel and light-weight callback threads (LCTs), respectively. We assume that Zackernel will be used as a kernel in an extremely small and power-saving IoT system such as an RFID-based IoT, and that LCTs will be used as a cloud server. Zackernel is implemented using anonymous functions, which has been adopted by C++ 11, by the principle that the dispatch method calls back the next process function, with reading from the scheduler queue. LCTs is realized by the priciple that implements the scheduler queue as a function list and call back the next process function after running the function of the head of the queue. We examine and evaluate the consumption of memory a per process or thread of these and the traditional processes and threadsl. Thus, Zackernel, LCTs, Elixir processes and C++ 11 threads consume 204 bytes, 1332 bytes, 2835 bytes and 546KB a per thread or process, respectively. We will implement an inter-process communication mechanism, apply it a benchmark, and evaluate performance of it. |
書誌レコードID |
|
|
収録物識別子タイプ |
NCID |
|
収録物識別子 |
AN10444176 |
書誌情報 |
研究報告システムソフトウェアとオペレーティング・システム(OS)
巻 2018-OS-144,
号 1,
p. 1-6,
発行日 2018-07-23
|
ISSN |
|
|
収録物識別子タイプ |
ISSN |
|
収録物識別子 |
2188-8795 |
Notice |
|
|
|
SIG Technical Reports are nonrefereed and hence may later appear in any journals, conferences, symposia, etc. |
出版者 |
|
|
言語 |
ja |
|
出版者 |
情報処理学会 |