Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nerves on Cloud (Japanese edition)

Nerves on Cloud (Japanese edition)

Nerves on Cloud は,次の理由で二酸化炭素を減らす効果的な解決策になると考えている: (1) Nerves はシステムを再現可能にすることで,十分にスケーラビリティと再起動時の同一の挙動を保証することができる (2) Nervesはシステムを最小化することで,十分に計算資源と消費電力を減らすことができる (3) Nerves はI/Oを制御できるので,デバイスの電源をオンオフできる.この事例では,Nervesカーネル上のそれぞれのNervesアプリケーションを仮想化することで,Nerves on Cloud を実現する試行を詳細に説明する.

Nerves on Cloud will be an effective solution to reduce carbon dioxide, because (1) Nerves makes a system be reproducible enough to ensure scalability and the same behavior when restarted; (2) Nerves enables a system be minimized enough to reduce computer resources and electricity; and (3) Nerves can control I/O that enables power of devices turn on and off. This case study explains a trial to realize Nerves on Cloud by virtualizing each Nerves application on a Nerves kernel, in detail.

Susumu Yamazaki (ZACKY)

November 13, 2020
Tweet

More Decks by Susumu Yamazaki (ZACKY)

Other Decks in Programming

Transcript

  1. ࢁ࡚ਐ ;"$,: w 5XJUUFS(JU)VC(NBJM;"$,: w ๺۝भࢢཱେֶࠃࡍ؀ڥ޻ֶ෦ w ।ڭत w φοδࣾձ࣮૷ݚڀηϯλʔ

    ηϯλʔ௕ w 1FMFNBZΛݚڀ։ൃ w &MJYJSͷฒྻωΠςΟϒίʔυੜ੒ܥ w ݱঢ়Ͱ͸4*.%໋ྩΛੜ੒ w কདྷ͸ෳ਺ͷίΞ΍(16ΛۦಈͰ͖Δ Α͏ʹ͢Δ༧ఆ  ˜4VTVNV:BNB[BLJ
  2. ίϯϐϡʔλσόΠεͷిྗফඅྔ <"OESBFBOE&EMFS> w ௨৴ٕज़ʹؔ࿈͢Δίϯϐϡʔλ σόΠε౳ʹ͔͔Δిྗফඅྔ w ೥࣌఺ͷ༧૝ฏۉέʔεͰ ੈքͷిྗڙڅྔͷˋ w ೥࣌఺ͷ༧૝࠷ѱέʔεͰ

    ੈքͷిྗڙڅྔͷ w ΄͔ͷࢿྉͱ߹ΘͤΔͱ ೥࣌఺Ͱ͸ӈਤͷ&YQFDUFE γφϦΦͰਪҠ͍ͯ͠Δʁ  ˜4VTVNV:BNB[BLJ © "OESBFBOE&EMFS
  3. /FSWFT w *P5σόΠε܈Λਝ଎͔ͭେن໛ʹߏஙɼσϓϩΠ͠ɼ҆શʹ؅ཧ͢ΔͨΊʹඞཁͳΦʔϓϯιʔ εͷϓϥοτϑΥʔϜͰ͋Γιϑτ΢ΣΞج൫Ͱ͋Δ</FSWFT> w &MJYJSͱ-JOVYΛ࠾༻͓ͯ͠Γɼ3BTQCFSSZ1JγϦʔζΛ͸͡Ίͱ͢Δ༷ʑͳ*P5ϘʔυͰಈ࡞͢Δ w ϑοτϓϦϯτ͕খ͍͞ w ಡࠐΈઐ༻γεςϜ༻ύʔςΟγϣϯηοτͱɼಡॻ͖Մೳͳσʔλ༻ύʔςΟγϣϯηοτ

    ʹ۠੾͍ͬͯΔ w γεςϜ༻ύʔςΟγϣϯ͸ɼͲͪΒ͔ҰํͷΈΛΞΫςΟϒʹ͢Δ w Ξοϓσʔτ࣌ʹඇΞΫςΟϒͳύʔςΟγϣϯΛॻ͖׵͑Δ w /FSWFT)VC w ৽͍͠ϑΝʔϜ΢ΣΞΛΞοϓϩʔυ͢Δͱɼ/FSWFT͕ࣗಈΞοϓσʔτͯ͠࠶ىಈ͢Δ 8 ˜4VTVNV:BNB[BLJ © UIF/FSWFT1SPKFDUEFWFMPQFST
  4. લఏ௿ফඅిྗίϯϐϡʔλɾϢχοτͷ࢖༻ w +FUTPO"(99BWJFSͷΑ͏ͳ௿ফඅిྗߴੑೳ ͳίϯϐϡʔλɾϢχοτͰɼίϯϐϡʔλɾ ΫϥελΛߏ੒͢Δ w "3.WίΞ (16 7PMUB ίΞ

     5FOTPSίΞ .-޲͚  7-*87JTJPOϓϩηο α w ୆͋ͨΓ8Iఔ౓໿ສԁ w ࠷େిྗ͸΋͏গ͠ଟ͍ʁ w ୆ଋͶͯ΋L8Iఔ౓ສԁن໛ w ফඅిྗ͸ۀ຿༻ͷྫྷஆ๪ఔ౓ w ݱঢ়Ͱ͸+FUTPOγϦʔζ্Ͱ/FSWFT͸ಈ͔ͳ͍ w ଱ٱੑ͕՝୊ʁ  ˜4VTVNV:BNB[BLJ © /7*%*"
  5. ߟ͑ΒΕΔΞϓϩʔν  ͦΕͧΕͷ/FSWFTΛ࣮ϚγϯʹΠϯετʔϧ͢Δ  ͦΕͧΕͷ/FSWFTΛɼ7JSUVBM#PYͷΑ͏ͳϑϧԾ૝Խͨ͠Ծ૝ػ ցʹΠϯετʔϧ͢Δ  ͦΕͧΕͷ/FSWFTΛɼ%PDLFSͷΑ͏ͳ04ϨϕϧԾ૝Խͨ͠Ծ૝ ػցʹΠϯετʔϧ͢Δ 

    γϯάϧϢʔβͷ/FSWFT্Ͱɼ%PDLFSʹΑΔԾ૝ػցΛߏங͢Δ  ఏҊख๏ .VPO5SBQΛ༻͍ͯίϯτϩʔϧάϧʔϓͱDISPPUΛ ࢦఆͯ͠ࢠσʔϞϯϓϩηεΛىಈ͢Δ 14 ˜4VTVNV:BNB[BLJ
  6. ߟ͑ΒΕΔΞϓϩʔν  ͦΕͧΕͷ/FSWFTΛ࣮ϚγϯʹΠϯετʔϧ͢Δ ‎࣮ݱ͕༰қͰ͋Δ ‎Ϣʔβʔ਺ͱಉ਺ͷ࣮ϚγϯΛ༻ҙ͢Δඞཁ͕͋ΓɼҰରҰʹରԠͤ͞Δඞཁ͕͋Δ ‎Ϋϥ΢υͷར఺ͷͭͰ͋ΔεέʔϥϏϦςΟ͕ଛͳΘΕΔ  ͦΕͧΕͷ/FSWFTΛɼ7JSUVBM#PYͷΑ͏ͳϑϧԾ૝Խͨ͠Ծ૝ػցʹΠϯετʔϧ͢Δ ‎ରԠ͢ΔΠϝʔδϑΝΠϧΛ༻ҙ͢Δඞཁ͕͋Δ͕ɼݱঢ়Ͱ͸ఏڙ͞Ε͍ͯͳ͍ ‎͔ͭͯ͸ఏڙ͞Ε͍͕ͯͨɼύϑΥʔϚϯε͕ѱ͔ͬͨͷͰɼݱঢ়Ͱ͸ఏڙ͍ͯ͠ͳ͍

    ‎$16ɼϝϞϦɼετϨʔδͷޮ཰ͷ໘Ͱɼ೉఺͕͋Δ͜ͱ͕૝૾ʹ೉͘ͳ͍  ͦΕͧΕͷ/FSWFTΛɼ%PDLFSͷΑ͏ͳ04ϨϕϧԾ૝Խͨ͠Ծ૝ػցʹΠϯετʔϧ͢Δ  γϯάϧϢʔβͷ/FSWFT্Ͱɼ%PDLFSʹΑΔԾ૝ػցΛߏங͢Δ  ఏҊख๏ .VPO5SBQΛ༻͍ͯίϯτϩʔϧάϧʔϓͱDISPPUΛࢦఆͯ͠ࢠσʔϞϯϓϩηεΛىಈ͢Δ 15 ˜4VTVNV:BNB[BLJ
  7. ߟ͑ΒΕΔΞϓϩʔν  ͦΕͧΕͷ/FSWFTΛ࣮ϚγϯʹΠϯετʔϧ͢Δ  ͦΕͧΕͷ/FSWFTΛɼ7JSUVBM#PYͷΑ͏ͳϑϧԾ૝Խͨ͠Ծ૝ػցʹΠϯετʔϧ͢Δ  ͦΕͧΕͷ/FSWFTΛɼ%PDLFSͷΑ͏ͳ04ϨϕϧԾ૝Խͨ͠Ծ૝ػցʹΠϯετʔϧ͢Δ ‎࣮ݱͰ͖Δ͔ෆ෼໌ ‎͜ͷख๏ʹର͢ΔఏҊख๏ͷ༏Ґੑ͕͋Δͷ͔Ͳ͏͔Λٞ࿦͍ͯ͘͠ඞཁ͕͋Δ 

    γϯάϧϢʔβͷ/FSWFT্Ͱɼ%PDLFSʹΑΔԾ૝ػցΛߏங͢Δ ‎طʹ࣮ݱͰ͖͍ͯΔ ‎͜ͷख๏ʹର͢ΔఏҊख๏ͷ༏Ґੑ͕͋Δͷ͔Ͳ͏͔Λٞ࿦͍ͯ͘͠ඞཁ͕͋Δ  ఏҊख๏ .VPO5SBQΛ༻͍ͯίϯτϩʔϧάϧʔϓͱDISPPUΛࢦఆͯ͠ࢠσʔϞϯϓϩηε Λىಈ͢Δ 16 ˜4VTVNV:BNB[BLJ
  8. ఏҊख๏ͷ֓ཁ w .VPO5SBQͰίϯτϩʔϧάϧʔϓΛࢦఆ͢Δ͜ͱͰɼϝϞϦ΍$16ͷར༻Λ੍ݶͰ͖Δ w ͜ΕΛར༻ͯ͠ɼϝϞϦ΍$16ͷར༻Λద੾ʹ੍ݶͨ͠ɼϢʔβʔ͝ͱͷσʔϞϯϓϩη εΛىಈ͢Δ w .VPO5SBQͰ͸ɼ͜ͷσʔϞϯϓϩηεͷ؂ࢹ΍ɼෆ۩߹࣌ͷ࠶ىಈΛߦ͑Δ w .VPO5SBQͰੜ੒ͨ͠σʔϞϯϓϩηεʹDISPPUΛ༻͍ͯϑΝΠϧγεςϜͷϧʔτΛ༩͑Δ

    ͜ͱͰɼσʔϞϯϓϩηεʹࣄ্࣮ͷݸผͷϑΝΠϧγεςϜΛ༩͑Δ w ͜ͷࡍʹ0WFSMBZ'4Λ࢖༻͢Δ͜ͱͰɼڞ௨ϑΝΠϧ܈ͱࠩ෼ϑΝΠϧ܈ΛͦΕͧΕผͷ σΟϨΫτϦʹ֨ೲͨ͠ঢ়ଶͰɼ݁߹ͨ͠Ծ૝తͳϑΝΠϧγεςϜΛ࡞Δ͜ͱ͕Ͱ͖Δͷ Ͱɼޮ཰͕ྑ͍ϑΝΠϧγεςϜΛߏஙͰ͖Δ w /FSWFT44)Λ༻͍Δ͜ͱͰɼϙʔτ൪߸Λࢦఆͯ͠44)σʔϞϯΛ࡞Δ͜ͱ͕Ͱ͖Δ w ͜ΕΛ௨ͯ͠ɼϢʔβʔ͝ͱ΁ͷσʔϞϯϓϩηε΁ͷΞΫηεखஈΛઃ͚Δ͜ͱ͕Ͱ͖Δ 18 ˜4VTVNV:BNB[BLJ
  9. .VPO5SBQ w &SMBOH΍&MJYJS͔Βىಈ͢ΔϓϩάϥϜ΍σʔϞϯɼΞϓϦ έʔγϣϯΛִ཭ͯ͠ਖ਼ৗʹಉͤ͞ΔͨΊͷػߏ w ίϯτϩʔϧάϧʔϓΛઃఆͯ͠ࢠϓϩηεΛىಈ͠ɼىಈ ͨ͠&SMBOH΍&MJYJSͱ͸ҟͳΔϢʔβʔ΍άϧʔϓͰ04ϓϩ ηεΛىಈͰ͖Δ w ίϯτϩʔϧάϧʔϓ

    DHSPVQ ͸ɼ-JOVYΧʔωϧ͔ Βαϙʔτ͞ΕΔΑ͏ʹͳͬͨɼϓϩηεάϧʔϓ͕$16ɼ ϝϞϦɼσΟεΫ*0ͳͲͷϦιʔεΛར༻͢Δ͜ͱΛ੍ݶ ͨ͠Γִ཭ͨ͠Γ͢Δ-JOVYΧʔωϧͷػೳ 19 ˜4VTVNV:BNB[BLJ
  10. SPPUGT@PWFSMBZʹΑΔσΟϨΫτϦͷෳ੡ w NLEJSQSPPUGT@PWFSMBZTIBSFCJO ͱͯ͠λʔήοτͰ࣮ߦ͢Δͱɼ TIBSFCJOͱ͍͏σΟϨΫτϦ͕Ͱ͖Δ w λʔήοτ্Ͱ DNElNPVOUŠCJOECJOTIBSFCJOz Λ࣮ߦ͢ΔͱɼCJOͷΫϩʔϯ͕TIBSFCJOʹͰ͖Δ w

    ͜ΕΛར༻ͯ͠DISPPUΛ࣮ߦ͍͕ͨ͠ɼॳظঢ়ଶͰ͸DISPPU͸/FSWFTʹΠϯετʔϧ͞Ε͍ͯͳ͍ w ͜ͷखॱͰΠϯετʔϧͰ͖Δ IUUQTHJUIVCDPNOFSWFTQSPKFDUOFSWFTCMPCNBJOEPDT $VTUPNJ[JOH4ZTUFNTNECVJMESPPUQBDLBHFDPOpHVSBUJPO w ·ͨɼUBSHFUFYTʹԼهͷΑ͏ͳઃఆΛ͢Ε͹NPVOUͰ͖Δ͕ɼΦϓγϣϯ౳ͷࢦఆ͕͏·͍ͬ͘ ͍ͯͳ͍Α͏Ͱɼਖ਼ৗʹ࣮ݱͰ͖͍ͯͳ͍ͷͰɼཁௐࠪ DPOpHOFSWFT FSMJOJU  NPVOUlCJOTIBSFCJOTRVBTIGTSP SFMBUJNFCJOE 23 ˜4VTVNV:BNB[BLJ
  11. JFY@TTI@TIFMMΛར༻ͨ͠γΣϧϓϩηεͷ࡞੒ w /FSWFT44)͔Β೿ੜͨ͠ɼJFY@TTI@TIFMMΛར༻͢Δ͜ͱͰɼ TTIͰϩάΠϯͰ͖Δϙʔτͷ௥Ճʹ੒ޭͨ͠ w NJYFYTͷEFQTʹ࣍ͷઃఆΛ଍͠ɼ \JFY@TTI@TIFMM d UBSHFUT!BMM@UBSHFUT^ 

    UBSHFUFYTʹ࣍ͷΑ͏ͳઃఆΛ͢Δ͜ͱͰɼ DPOpHJFY@TTI@TIFMM  QPSU  BVUIPSJ[FE@LFZT"QQMJDBUJPOHFU@FOW OFSWFT@TTI BVUIPSJ[FE@LFZT  ඪ४ͷϙʔτͷଞʹTTIͰϩάΠϯͰ͖ΔϙʔτΛఆٛͰ͖Δ w JFY@TTI@TIFMMΛࢀߟʹɼΧελϜγΣϧϋϯυϥΛ࡞੒͢Ε͹ɼ ೚ҙͷϩάΠϯϙʔτΛ࡞੒Ͱ͖ͦ͏ 24 ˜4VTVNV:BNB[BLJ
  12. ఏҊख๏·ͱΊ w SPPUGT@PWFSMBZͱFSMJOJUΛ༻͍ͯɼDISPPU͢ΔઌͱͳΔΧελϜϧʔτϑΝΠϧ γεςϜͷσΟϨΫτϦΛ࡞੒͢Δ w JFY@TTI@TIFMMͱ/FSWFT44)ΛࢀߟʹΧελϜγΣϧϋϯυϥΛ࣮૷͢Δ w ͦͷதͰ.VPO5SBQΛ༻͍ͯϝϞϦͱ$16ͷར༻Λద੾ʹ੍ݶͨ͠ϓϩηεΛ ىಈ͢Δ w

    ͦͷϓϩηεͰDISPPUΛ࣮ߦ͔ͯ͠ΒɼγΣϧͳΓJFYͳΓΛىಈ͢Δ w ࢒՝୊ w FSMJOJUΛ༻͍ͯNPVOUŠCJOE͢Δ΍Γํͷௐࠪ w ্هͷΑ͏ͳΧελϜγΣϧϋϯυϥͷ࣮૷ 25 ˜4VTVNV:BNB[BLJ
  13. ϑΝΠϧγεςϜͷઃܭʹؔ͢Δߟ࡯ w /FSWFT͸EBUB چ໊শSPPU ʹಡΈॻ͖ՄೳͳϑΝΠϧΛஔ͘ w UNQ͸Ұ࣌ϑΝΠϧΛஔ͘ ཁ֬ೝ  w

    TZT QSPD EFWʹ͸γεςϜϑΝΠϧ͕ஔ͔ΕΔ w ͦΕҎ֎ͷ৔ॴͷϑΝΠϧ FUD CJOͳͲ ͸ϦʔυΦϯϦʔͰ͋Δ w UNQͱEBUB͸7.͝ͱʹҟͳΔϑΝΠϧγεςϜʹͳ͍ͬͯΔͱ޷౎߹ w ίϚϯυ౳͸ϢʔβʔʹΑͬͯՄࢹੑ͕ҟͳΔ͔΋͠Εͳ͍ w 7.͝ͱʹݸผͷϧʔτΛ࡞ΓɼFUD CJOͳͲͷڞ༗͍ͨ͠ϑΝΠϧ܈ ΛNPVOUŠCJOEͯ͠ɼͦΕҎ֎͸ݸผʹͳΔΑ͏ʹߏ੒͢Δ 26 ˜4VTVNV:BNB[BLJ
  14. ఏҊख๏ͷ੍໿ w Ϣʔβʔ͝ͱͷσʔϞϯϓϩηε͚͕ͩ࢖༻͢ΔϑΝΠϧ܈Λมߋ͠ ͚ͨͩͷ৔߹Ͱ΋ɼϑΝʔϜ΢ΣΞશମͷߋ৽ͱγεςϜ࠶ىಈΛඞ ཁͱ͢Δ w ͦͷͨΊɼϢʔβʔΞϓϦέʔγϣϯΛॻ͖׵͑Δ౓ʹɼଞͷϢʔβʔ ϓϩηε΋ר͖ࠐΜͰ࠶ىಈ͢Δ͜ͱʹͳͬͯ͠·͍ɼ͔ͭμ΢ϯλ ΠϜ͕ੜͯ͡͠·͏ w

    ͜ΕΛճආ͢ΔͨΊʹ͸ɼγεςϜΛଟॏԽͯ͠࠶ىಈͷλΠϛϯά ΛͣΒ͢͜ͱͰɼμ΢ϯλΠϜΛͳ͘͢ඞཁ͕͋Δ w ݱঢ়Ͱ͸ɼσόΠεʹλάΛ͚ͭͯɼλά͝ͱʹॱ࣍/FSWFT)VC ʹΞοϓσʔτ͢Δ͜ͱͰΞυϗοΫʹ࣮ݱ͍ͯ͠Δͱͷ͜ͱ 27 ˜4VTVNV:BNB[BLJ
  15. ·ͱΊͱকདྷ՝୊ w Ϋϥ΢υ্ͷίϯϐϡʔλγεςϜͷফඅిྗΛݮΒ͠ɼ؅ཧΛ͠΍͘͢ ͢ΔͨΊʹɼ/FSWFTPO$MPVEΛఏҊͨ͠ w ຊൃදͰ͸.VPO5SBQΛ༻͍ͯϢʔβʔ͝ͱʹԾ૝ԽͰ͖Δ͜ͱΛࣔͨ͠ w কདྷ՝୊ w %PDLFSͳͲͷ04ϨϕϧԾ૝ԽʹΑΔԾ૝ػցʹ/FSWFTΛΠϯετʔ

    ϧͨ͠৔߹ͱൺ΂ͨ࣌ͷ༏Ґੑʹ͍ͭͯݟۃΊΔඞཁ͕͋Δ w ۩ମతʹ࣮૷ͯ͠ϥΠϒϥϦΛఏڙ͢Δ w ͜ΕΛਓ޻Ӵ੕͔Βͷ๲େͳը૾Λॲཧ͢ΔίϯϐϡʔλɾΫϥελɾγ εςϜ<:BNB[BLJ>ʹԠ༻͢Δ͜ͱΛ໨ࢦ͍ͯ͠Δ 29 ˜4VTVNV:BNB[BLJ
  16. "QQMF4JMJDPO౥ࡌ.BDͷൃද w .BDͷ$16͕*OUFM͔Β"3.ʹҠߦ w $16ҠߦظͰ͋Δ͜ͱɼ౥ࡌϝϞϦྔͷ໰୊ͳͲͰɼҰൠʹ͸͓קΊͰ͖ͳ͍ w $16(16ີ݁߹ΞʔΩςΫνϟͳͷͰɼ$16ͱ(16ͷؒͷσʔλసૹ͕ۃΊͯߴ଎ͩΖ͏ͱ༧ଌ͞ΕΔ w ը૾ॲཧੑೳ͕ͱͯ΋ߴͦ͏ʂ w

    Ձ֨͋ͨΓͷը૾ॲཧੑೳ͕+FUTPO"(99BWJFSΑΓߴ͍ͱࢥΘΕΔ w +FUTPO"(99BWJFSͷՁ֨ ԁ ετϨʔδ(#F..$  w .BDNJOJͷՁ֨ ԁ ετϨʔδ(#/7.F44%૬౰  w ফඅిྗ͋ͨΓͷը૾ॲཧੑೳ͸Ͳ͏͔ʁ w +FUTPO"(99BWJFSͷ࠷େফඅిྗ8I ͦΕΑΓଟ͘ফඅ͢ΔϞʔυ΋͋Δ  w .BDNJOJͷ࠷େফඅిྗ8I ఆৗ࣌ͷফඅిྗ͸ͦΕΑΓ௿͍ͱࢥΘΕΔ 32 ˜4VTVNV:BNB[BLJ
  17. "QQMF4JMJDPO౥ࡌ.BDͷൃද w Ձ֨͋ͨΓͷը૾ॲཧੑೳ͕+FUTPO"(99BWJFSΑΓߴ͍ͱࢥΘΕΔ w ফඅిྗ͋ͨΓͷը૾ॲཧੑೳ͸Ͳ͏͔ʁ w ݒ೦ը૾ॲཧʹؔ࿈͢Δ"1*ମܥ͕·ΔͰҟͳΔ w +FUTPO"(99BWJFS$6%" DV%//

    71* 7JTPO8PSLT w .BDNJOJ.FUBM $PSF.- $PSF*NBHF 7JTJPO w ΋ͪΖΜ0QFO$7͸ڞ௨ͯ͠࢖͑Δ͕ɼύϑΥʔϚϯεʹ೉͕͋Δ໛༷ ཁௐࠪ  w ந৅Խ͢ΔϨΠϠʔΛઃ͚Δඞཁ͕͋Δ͔ͱࢥ͏ w ͋ͨ͞͠Γ&MJYJS͔Β4XJGUͷ"1*Λݺͼग़͢खஈʹ͍ͭͯ͸ௐࠪͨ͠ IUUQTRJJUBDPN[BDLZJUFNTDCCFDCE 33 ˜4VTVNV:BNB[BLJ