$30 off During Our Annual Pro Sale. View Details »

高集積コンテナホスティングにおけるボトルネックとその解法

 高集積コンテナホスティングにおけるボトルネックとその解法

話し手の所属するGMOペパボではロリポップ!マネージドクラウドというコンテナホスティングサービスを提供しており、1台のサーバに数千のコンテナを起動します。

コンテナはプロセスであるという認識は一般的になりつつありますが、コンテナプロセスを起動するにはネームスペースの作成や、マウントなどいくつもの処理が行われてプロセスを起動する必要があり、通常のプロセス起動と違う箇所にボトルネックが現れます。またコンテナ技術はLinuxのカーネルレイヤに近い領域で実装されているためそのボトルネックの解消には深いLinuxに対する理解が必要です。

本セッションにおいては話し手が1台のサーバで数千のコンテナを起動する際に直面したボトルネック、その調査方法、そして解決する方法を共有したいと思います。

昨今k8sの台頭により、あらゆるサービスでコンテナ技術が利用されつつありますが、コンテナ技術の深い理解は、今後のエンジニアのあらゆる開発において有用な知識となるはずです。ぜひ本セッションに足を運んでいただき、一歩進んだコンテナ利用をしていきましょう。

Kazuhiko Yamashita

September 08, 2018
Tweet

More Decks by Kazuhiko Yamashita

Other Decks in Technology

Transcript

  1. ʙ࣋ͯ༨ͯ͠ΔϑϥετϨʔγϣϯɺ:PVWFHPUBOFBTZEBZʙ
    !QZBNB(.01FQBCP *OD
    CVJMEFSTDPOUPLZP
    ߴूੵίϯςφϗεςΟϯάʹ
    ͓͚ΔϘτϧωοΫͱͦͷղ๏

    View Slide

  2. γχΞɾϓϦϯγύϧΤϯδχΞ
    ࢁԼ࿨඙!QZBNB
    ϗεςΟϯάࣄۀ෦νʔϑςΫχΧϧϦʔυ

    View Slide

  3. View Slide

  4. IUUQTUFOTOBQPODPNBSDIJWFT

    View Slide

  5. -JOVYͷ౷߹Ϣʔβʔ؅ཧ
    50.-ܗࣜ
    )551+40/
    -%"1΍%#ͷ؅ཧ͕ෆཁ
    ѻ͍΍͍͢ϑΥʔϚοτ
    ൚༻ੑɾ֦ுੑ
    IUUQTTUOTKQ

    View Slide

  6. -JOVY
    MJCOTTTUOT
    JEFYBNQMF
    VJE FYBNQMF
    HJE FYBNQMF
    HSPVQT FYBNQMF

    VTFS OBNFFYBNQMF
    <\
    OBNFFYBNQMF
    JE

    ^>
    γϯϓϧͰࣗ༝౓ͷߴ͍ઃܭ
    αʔό࣮૷΋͍ΘΏΔ3&45GVM෩ɺMJCOTTTUOT͔Β೚ҙͷίϚϯυΛ࣮ߦͨ͠
    ݁ՌΛར༻Ͱ͖Δ࢓૊Έ΋͋ΔͷͰΫϥΠΞϯτଆͷ֦ு΋ࣗ༝ࣗࡏ

    JE
    LFZT<TTI>
    HSPVQ@JE
    TUOTDPOG

    View Slide

  7. EPDLFSSVOOBNFTUOTETUOTTUOTMBUFTU
    EPDLFSFYFDJUTUOTCJOCBTI
    JEFYBNQMF
    VJE FYBNQMF
    HJE FYBNQMF
    HSPVQT FYBNQMF

    ͙͢ʹࢼͤ·͢
    DVSMGT4-IUUQTSFQPTUOTKQTDSJQUTZVNSFQPTIcTI
    DVSMGT4-IUUQTSFQPTUOTKQTDSJQUTBQUSFQPTIcTI
    EPDLFS
    $FOU04
    VCVOUVEFCJBO

    View Slide

  8. ϗεςΟϯάࣄۀ &$ࢧԉࣄۀ ϋϯυϝΠυɾͦͷଞࣄۀ

    View Slide

  9. ೥ ϩϦϙοϓʂϨϯλϧαʔόαʔϏεఏڙ։࢝


    ೥ ϔςϜϧαʔϏεఏڙ։࢝
    1ࢁ͕ϖύϘʹೖࣾʂʂ̍
    ೥݄೔
    ࣛࣇౡݝग़ਫࢢʹ͓͍ͯ1ࢁര஀ʂʂ̍
    ೥ ݱࡏɾ૑ۀ೥໨
    ϜʔϜʔυϝΠϯαʔϏεఏڙ։࢝

    View Slide

  10. ϨϯλϧαʔόͱΫϥ΢υͷ͍͍ͱ͜ͲΓ
    ϩϦϙοϓʂϚωʔδυΫϥ΢υ
    IUUQTNDMPMJQPQKQ

    View Slide

  11. ίϯςφΤϯδϯʹIBDPOJXBΛ࠾༻
    wNSVCZ੡ίϯςφΤϯδϯ
    w3VCZ%4-ͰίϯςφఆٛՄೳ
    wϑΥʔΫલޙͳͲ೚ҙͷϑοΫ

    ࣮૷͕Մೳ
    IUUQTHJUIVCDPNIBDPOJXBIBDPOJXB

    View Slide

  12. ࠓ೔࿩͢͜ͱ
    w ෼Ͱ͋ͳͨ΋ίϯςφϚΠελʔߨ࠲
    w ϝϞϦঢ়ଶىҼͷίϯςφ཯଎໰୊
    w γεςϜ্ݶͱਓྨͷر๬ʹ͍ͭͯ
    w ωοτϫʔΫίϚϯυىҼͷίϯςφ཯଎໰୊
    w γεςϜௐࠪίϚϯυອஊ
    w ετϨʔδͷເͱల๬

    View Slide

  13. ෼Ͱ͋ͳͨ΋
    ίϯςφϚΠελʔߨ࠲

    View Slide

  14. ίϯςφͷߏ੒ཁૉ
    OBNFTQBDF
    DISPPU
    DHSPVQ
    DBQBCJMJUZ

    View Slide

  15. ͦ΋ͦ΋
    ίϯςφ

    View Slide

  16. ίϯςφʹϓϩηε

    View Slide

  17. OBNFTQBDF
    IUUQTMJOVYKNPTEOKQIUNM-%1@NBOQBHFTNBOVOTIBSFIUNM
    SPPU!MPDBMIPTUdJQB
    MP-001#"$, 61 -08&3@61NUVREJTDOPRVFVF
    MJOLMPPQCBDLCSE
    JOFUTDPQFIPTUMP
    FOQT#30"%$"45 .6-5*$"45 61 -08&3@61
    MJOLFUIFSBCSE⒎⒎⒎⒎⒎⒎
    JOFUCSETDPQFHMPCBMFOQT
    SPPU!MPDBMIPTUdCBTI
    SPPU!MPDBMIPTUdVOTIBSFOFU
    SPPU!MPDBMIPTUdJQB
    MP-001#"$,NUVREJTDOPPQTUBUF%08/HSPVQEFGBVMURMFO
    MJOLMPPQCBDLCSE

    View Slide

  18. DISPPU
    IUUQTMJOVYKNPTEOKQIUNM-%1@NBOQBHFTNBODISPPUIUNM
    NLEJSDPOUBJOFS
    SPPU!MPDBMIPTUIPNFWBHSBOUDPOUBJOFSDQSCJOMJCMJCDPOUBJOFS
    DISPPUDPOUBJOFS
    CBTIMTMUS
    ESXYSYSY4FQCJO
    ESXYSYSY4FQMJC
    ESXYSYSY4FQMJC

    View Slide

  19. DHSPVQ
    IUUQNBOPSHMJOVYNBOQBHFTNBODHSPVQTIUNM
    wDQVDGT@QFSJPE@VT
    w$16Ϧιʔεͷׂ౰ִؒϚΠΫϩඵ
    wDQVDGT@RVPUB@VT
    wׂ౰ִؒͷ಺ɺλεΫ͕࣮ߦ͞ΕΔϚΠΫϩඵ
    ϓϩηε͝ͱʹ$16΍ϝϞϦͳͲͷ

    ϦιʔεΛ੍ݶ
    DGT@QFSJPE@VT ඵ

    DGT@RVPUB@VT ඵ

    ˋ

    View Slide

  20. DBQBCJMJUZ
    IUUQTMJOVYKNPTEOKQIUNM-%1@NBOQBHFTNBODBQBCJMJUJFTIUNM
    -JOVYͷݖݶ؅ཧͷ࢓૊Έɻϓϩηε΍
    ϑΝΠϧ୯ҐͰ෇༩͢Δ͜ͱ͕Ͱ͖Δ
    QTFGcHSFQBQBDIF
    SPPU VTSTCJOBQBDIFLTUBSU
    XXXEBUB VTSTCJOBQBDIFLTUBSU
    XXXEBUB VTSTCJOBQBDIFLTUBSU
    SPPUQUTHSFQDPMPSBVUPBQBDIF
    SPPU!MPDBMIPTUdHFUQDBQT
    $BQBCJMJUJFTGPSA
    DBQ@DIPXO
    DBQ@EBD@PWFSSJEF
    DBQ@OFU@CJOE@TFSWJDF

    View Slide

  21. ܰྔԾ૝Խ؀ڥΛ࣮ݱ͢Δٕज़
    -9$ͰֶͿίϯςφೖ໳!UFO@GPSXBSE
    IUUQHJIZPKQBENJOTFSJBMMJOVY@DPOUBJOFST

    View Slide

  22. 'BTU$POUBJOFSΞʔΩςΫνϟ

    View Slide

  23. ֮͑ͯ·͔͢ʁ
    'BTU$(*

    View Slide

  24. EJTQBUDIFS
    OHJOY

    DPOUBJOFS
    ίωΫγϣϯ
    νΣοΫ
    DPOUBJOFS
    ىಈ
    τϥϑΟοΫ
    ϦΫΤετΛܖػʹίϯςφΛىಈ͠
    Ұఆ࣌ؒॲཧޙɺࣗಈతʹఀࢭ͢Δ
    'BTU$POUBJOFS
    IUUQTICNBUTVNPUPSKQFOUSZ

    View Slide

  25. ϢʔβʔσʔλΛετϨʔδʹ࣋ͭ͜ͱͰ
    εςʔτϑϧͳಈతίϯςφΞʔΩςΫνϟΛ࣮ݱ
    Ϣʔβʔσʔλ͸ετϨʔδʹ
    4FSWFS 4FSWFS
    4UPSFHF
    6TFS%BUB
    DPOUBJOFS DPOUBJOFS

    View Slide

  26. աෛՙ࣌ͳͲ΋ࣗಈͰ࣍ͷϦΫΤετ͔Β
    Φʔτεέʔϧ
    Φʔτεέʔϧ΋଎
    4FSWFS 4FSWFS
    4UPSFHF
    6TFS%BUB
    DPOUBJOFS DPOUBJOFS
    4FSWFS
    DPOUBJOFS

    View Slide

  27. ϋʔυ΢ΣΞো֐͕ى͖ͯ΋࣍ͷϦΫΤετ͔Β
    ۭ͍ͯΔϗετͰىಈ
    ϋʔυো֐΋ࣗಈͰҠಈ
    4FSWFS 4FSWFS
    4UPSFHF
    6TFS%BUB
    DPOUBJOFS DPOUBJOFS
    4FSWFS
    DPOUBJOFS
    DPOUBJOFS

    View Slide

  28. 'BTU$POUBJOFSͷ
    ίΞόϦϡʔ
    ίϯςφΛ͍͔ʹ଎͘
    ىಈͤ͞Δ͔ʁ

    View Slide

  29. 'BTU$POUBJOFSʹ͓͚Δ
    ίϯςφͷߴ଎ىಈͱ
    ىಈ਺্ݶͱͷ
    ઓ͍ͷه࿥

    View Slide

  30. ίϯςφىಈ؀ڥ
    w $16ίΞ
    w ϝϞϦ(#
    w "QBDIF)551%ϓϩηεNBTUFS
    Ͱίϯςφىಈ͍ͨ͠

    View Slide

  31. ϝϞϦঢ়ଶىҼͷ
    ίϯςφ཯଎໰୊

    View Slide

  32. ࣄ৅ɿ؂ࢹίϯςφͷμ΢ϯ
    w ֎ܗ؂ࢹΛߦ͍ͬͯΔίϯςφͷ
    )551ϨεϙϯελΠϜ͕ᮢ஋௒ӽ

    View Slide

  33. OFUOTBEE
    BQQMZ@OBNFTQBDF
    .PVOUJOH
    0,BQQMZ@pMFTZTUFN
    0,BQQMZ@SMJNJU
    0,BQQMZ@DHSPVQ
    0,BQQMZ@SFNPVOU
    0,BQQMZ@VTFS@OBNFTQBDF
    0,EP@DISPPU
    0,BQQMZ@DBQBCJMJUZ
    0,BQQMZ@TFDDPNQ
    0,TXJUDI@HVJE
    $POUBJOFSGPSLTVDDFTT
    ϩάͰ͸OFUOTͷ௥Ճ͕཯଎

    View Slide

  34. JQOFUOTBEEYYYY
    JQOFUOTFYFDYYYYZZZZ
    JQίϚϯυ
    -JOVYͷ*'पΓͷػೳ͚ͩͰͳ͘ɺOFUOTͷ௥Ճ΍ɺ
    OFUOTʹର͢Δૢ࡞Λ࣮ݱ͍ͯ͠Δ

    View Slide

  35. ௐࠪํ๏

    View Slide

  36. ೔ຊݹདྷΑΓ఻ΘΔ
    ఻౷ܳೳ
    ʮצʯ

    View Slide

  37. View Slide

  38. wϓϩηεͷൃߦ͢ΔγεςϜίʔϧΛτϨʔε
    TUSBDF
    SPPU!MPDBMIPTUdTUSBDFUU5T4UJNFJQOFUOTBEEFYBNQMF
    FYFDWF TCJOJQ <JQ OFUOT BEE FYBNQMF> <WBST>


    CSL /6--
    YF
    BDDFTT FUDMETPOPIXDBQ '@0,
    &/0&/5 /PTVDIpMFPS
    EJSFDUPSZ

    NNBQ /6-- 1305@3&"%c1305@83*5& ."1@13*7"5&c
    ."1@"/0/:.064
    YGCBD
    ʜ

    View Slide

  39. TUSBDFUU5TJQOFUOTBEEFYBNQMF

    View Slide

  40. wγεςϜίʔϧͷϘτϧωοΫΛγϯϘϧϨϕϧ·Ͱಛఆ
    QFSG
    QFSGUPQ
    QFSGSFDPSEDBMMHSBQIEXBSGQQJE
    QFSGSFQPSUH(TUEJP

    View Slide

  41. JQFOUSZ@4:4$"--@@GBTUQBUI
    c
    FOUSZ@4:4$"--@@GBTUQBUI
    c
    cTZT@VOTIBSF
    cVOTIBSF@OTQSPYZ@OBNFTQBDFT
    cDSFBUF@OFX@OBNFTQBDFT
    cDPQZ@OFU@OT
    cc
    ccTFUVQ@OFU
    ccPQT@JOJU
    ccc
    cccJQUBCMF@pMUFS@OFU@JOJU
    cccJQU@SFHJTUFS@UBCMF
    cccc
    ccccYU@SFHJTUFS@UBCMF
    ccccYU@SFQMBDF@UBCMF
    cccc@@LNBMMPD@OPEF
    cccc@@TMBC@BMMPD
    ccccc
    ccccc@@@TMBC@BMMPD
    cccccEFBDUJWBUF@TMBC
    cccccc
    cccccc@@DNQYDIH@EPVCMF@TMBCJTSB
    ccccccVOTIBSF
    ccccccYB

    View Slide

  42. 4MBC
    DBUQSPDNFNJOGPcHSFQJTMBC
    4MBCL#
    (ʘ ?P?
    ʗ

    View Slide

  43. NNTMVCD
    ָ͘͠ಡΜͰֶͿ-JOVY
    IUUQTHJUIVCDPNUPSWBMETMJOVY

    View Slide

  44. ͍͑ͬʂ
    TZODFDIPQSPDTZTWNESPQ@DBDIFT
    TMBCUPQͰ֬ೝͨ͠ͱ͜ΖɺEFOUSZΩϟογϡ͕
    ଟ͔ͬͨͨΊɺΩϟογϡͷΫϦΞ͕༗ޮͱߟ͑ͨ

    View Slide

  45. ߋʹ͜͏͡Όʂʂ̍
    CBTIDTZODFDIPa
    QSPDTZTWNESPQ@DBDIFT

    View Slide

  46. 4MBC͸ංେԽ͢Δͱ
    ϘτϧωοΫͱͳΔ
    Ұൠతʹ͸4MBCͷංେԽʹىҼͯ͠4XBQϝϞϦ͕ར༻͞Ε
    γεςϜશମ͕཯଎ʹͳΔ͜ͱ͕ଟ͍͕ɺ୯७ʹ࢖༻ྔ͕
    ଟ͍ͱॳظԽॲཧ࣌ͷϩοΫͰϘτϧωοΫͱͳΔ͜ͱ͕͋Δɻ
    ·ͨ͜ΕΒͷ04ϨΠϠͷ࢓૊Έͷௐࠪʹ͓͍ͯ͸TUSBDF΍
    QFSGΛར༻͢Δ͜ͱͰ͋ͨΓΛ͚ͭɺιʔεΛಡΈࠐΉ͜ͱͰ
    ݪҼʹର͢ΔԾઃΛཱͯΔ͜ͱ͕Ͱ͖Δɻ

    View Slide

  47. γεςϜ্ݶͱ
    ਓྨͷر๬ʹ͍ͭͯ

    View Slide

  48. ࣄ৅ɿίϯςφ͕ىಈ͠ͳ͍
    w ίϯςφىಈ਺ෛՙݕূதʹ
    ίϯςφ͕ىಈ͠ͳ͘ͳͬͨ

    View Slide

  49. ίϯςφͷน

    View Slide

  50. DBOUBEEFUI@I@W(MW(W[UPCSJEHFIBDPOJXB&YDIBOHFGVMM
    SPPU!DPNQVUFdCSDUMTIPXcXDM

    CSJEHFͷγεςϜ্ݶʁ

    View Slide

  51. ίϯςφωοτϫʔΫ
    -JOVY#SJEHF OFUOT DPOUBJOFS
    WFUIQBJS BQQMZOFUOT
    IBDPOJXB FUI@I@YYYYYYY DPOUBJOFS@YYYY

    View Slide

  52. ίϯςφωοτϫʔΫ
    -JOVY#SJEHF OFUOT DPOUBJOFS
    WFUIQBJS BQQMZOFUOT
    IBDPOJXB FUI@I@YYYYYYY DPOUBJOFS@YYYY
    ্ݶ

    View Slide

  53. EFpOF#3@1035@#*54
    EFpOF#3@."9@10354 #3@1035@#*54

    OFUCSJEHFCS@QSJWBUFI
    wఆ਺Λมߋ͠ɺΧʔωϧίϯύΠϧ͢Ε͹γεςϜ্ݶ͸
    มߋՄೳɻ

    View Slide

  54. ϒϦοδΛ෼ࢄ
    -JOVY#SJEHF OFUOT DPOUBJOFS
    WFUIQBJS BQQMZOFUOT
    IBDPOJXB FUI@I@ DPOUBJOFS@
    -JOVY#SJEHF
    IBDPOJXB999
    OFUOT
    FUI@I@
    DPOUBJOFS
    DPOUBJOFS@
    BQQMZOFUOT
    OFUOT DPOUBJOFS
    WFUIQBJS BQQMZOFUOT
    FUI@I@ DPOUBJOFS@



    View Slide

  55. View Slide

  56. -JOVY#SJEHF͸্ݶ͕͋Δ
    -JOVY#SJEHFʹ௥ՃͰ͖Δ*'͸ݸ͕γεςϜ্ݶͰ͋Δɻ
    ճආ͢Δʹ͸ఆ਺ͷ஋Λม͑ͯΧʔωϧίϯύΠϧ͢ΔɺϒϦοδΛ
    ෼ׂ͢Δɺ0QFOW4XJUDIʹஔ͖׵͑Δͱ͍͏खஈ͕͋Δɻ

    View Slide

  57. ωοτϫʔΫίϚϯυىҼͷ
    ίϯςφ཯଎໰୊

    View Slide

  58. ࣄ৅
    ɿ
    $16ɾϝϞϦ͸༨༟͕͋Δ͕
    -"͚͕ͩߴ͍
    w ίϯςφىಈ਺ෛՙݕূதʹίϯ
    ςφͷىಈ͕஗͘ͳΓɺ-"͕ߴಅ

    View Slide

  59. 1*%64&313/*7*353&44)34$16.&.5*.&$0.."/%
    SPPUHH4DBEWJTPS
    SPPU3UPQ
    VCVOUV3BQBDIF
    SPPU%SPVUF
    SPPU3IBDPOJXB
    SPPU%SPVUF
    SPPU%SPVUF
    SPPU%JQ
    SPPU%SPVUF
    SPPU%JQ
    SPPU3IBDPOJXB
    SPPU3IBDPOJXB
    SPPU3IBDPOJXB
    SPPU3IBDPOJXB
    SPPU%SPVUF
    SPPU3IBDPOJXB
    UPQ

    View Slide

  60. ༨ஊDBEWJTPS
    IUUQTHJUIVCDPNHPPHMFDBEWJTPS

    View Slide

  61. UJNFJQOFUOTBEEUFTU
    35/&5-*/,BOTXFST*OWBMJEBSHVNFOU
    35/&5-*/,BOTXFST*OWBMJEBSHVNFOU

    35/&5-*/,BOTXFST*OWBMJEBSHVNFOU
    35/&5-*/,BOTXFST*OWBMJEBSHVNFOU
    SFBMNT
    VTFSNT
    TZTNT
    JQOFUOTBEE͕ࢗ͞Δ

    View Slide

  62. QFSGSFDPSEDBMMHSBQIEXBSGJQOFUOTBEEFYBNQMF
    QFSGSFQPSUH(TUEJP
    JQFOUSZ@4:4$"--@@GBTUQBUI
    c
    FOUSZ@4:4$"--@@GBTUQBUI
    c
    cTZT@PQFO
    cc
    ccEP@TZT@PQFO
    ccc
    cccEP@pMQ@PQFO
    cccc
    ccccQBUI@PQFOBU
    ccccc
    TZT@PQFO͕ࢧ഑త

    View Slide

  63. TUSBDFJQOFUOTBEEFYBNQMF

    PQFO WBSSVOOFUOTOFUOT@BECB 0@3%0/-:

    TFOENTH \NTH@OBNF
    \TB@GBNJMZ"'@/&5-*/, QJE
    HSPVQT^
    SFDWNTH \NTH@OBNF
    \TB@GBNJMZ"'@/&5-*/, QJE
    HSPVQT^
    DMPTF

    PQFO WBSSVOOFUOTOFUOT@DGDGEBC 0@3%0/-:

    TFOENTH \NTH@OBNF
    \TB@GBNJMZ"'@/&5-*/, QJE
    HSPVQT^
    SFDWNTH \NTH@OBNF
    \TB@GBNJMZ"'@/&5-*/, QJE
    HSPVQT^
    DMPTF

    طଘͷOFUOT͢΂ͯʹ
    ໰͍߹Θ͍ͤͯΔ

    View Slide

  64. GSFF
    UPUBMVTFEGSFFTIBSFECV⒎DBDIFBWBJMBCMF
    .FN˒
    4XBQUPUBM
    Ϧιʔεঢ়ଶ
    wखݩͷ7JSUVBM#PYͰ࠶ݱͤͨ͞ͱ͜ΖϝϞϦ͕

    ރׇঢ়ଶͰ͋ͬͨ

    View Slide

  65. ௐ͔ࠪΒಘΒΕΔԾઆͱଧͪख
    wϝϞϦ͕ރׇঢ়ଶͰ͋ΔͱPQFO͕ࢧ഑త
    wTFOENTHͷ಺༰͕ෆཁͰ͋Ε͹ɺطଘͷOFUOTʹ

    ର͢ΔॲཧΛ࡟আ͢Ε͹ɺOFUOTͷϘτϧωοΫ͕֎ͤΔ

    View Slide

  66. HEC͔Β͋ͨΓΛ͚ͭΔ
    HECJQ
    HEC
    CTFOENTH
    HEC
    SVOOFUOTBEEUFTU@
    4UBSUJOHQSPHSBNTCJOJQOFUOTBEEUFTU@

    #SFBLQPJOU TFOENTH
    BUTZTEFQTVOJYTZTDBMMUFNQMBUF4
    TZTEFQTVOJYTZTDBMMUFNQMBUF4/PTVDIpMFPSEJSFDUPSZ
    HEC
    CU
    TFOENTH
    BUTZTEFQTVOJYTZTDBMMUFNQMBUF4
    YDCJOSUOM@UBML

    YCEJO

    YGJOOFUOT@NBQ@JOJU

    YDFJOEP@OFUOT

    YJO

    View Slide

  67. શͯ͸ιʔεʹॻ͍ͯ͋Δ

    View Slide

  68. OFUMJOLΛར༻ͨ͠/4*%औಘ
    XIJMF FOUSZSFBEEJS EJS

    /6--
    \
    JG TUSDNQ FOUSZE@OBNF


    DPOUJOVF
    JG TUSDNQ FOUSZE@OBNF


    DPOUJOVF
    OTJEHFU@OFUOTJE@GSPN@OBNF FOUSZE@OBNF

    JG OTJE

    OFUOT@NBQ@BEE OTJE FOUSZE@OBNF

    ^
    JQJQOFUOTD

    View Slide

  69. ࠷৽ͷιʔεͰ͸͢Ͱʹύον

    View Slide

  70. OFUOTͷ௥Ճ͕ര଎ʹʂʂ̍
    TUSBDFUUTPTUSBDF@JQOFUOTBEEUFTU@
    IFBETUSBDF@
    FYFDWF TCJOJQ <JQ OFUOT BEE UFTU@> <WBST>


    UBJMTUSBDF@
    FYJUFEXJUI
    ύοέʔδόʔδϣϯൺֱͰඵ͔ΒඵʹͳΓ
    ഒ͘Β͍ૣ͘ͳͬͨ
    TUSBDFUUTPTUSBDF@JQOFUOTBEEUFTU@
    IFBETUSBDF@
    FYFDWF TCJOJQ <JQ OFUOT BEE UFTU@> <WBST>


    UBJMTUSBDF@
    FYJUFEXJUI
    CFGPSF
    BGUFS

    View Slide

  71. IBDPOJXBTPGUJJ[VLBMPMJQPQJPDEQBSFOU<>JQMJOLTFU
    FUIDE@IVQ
    TZTUFNEVEFWE<>$PVMEOPUHFOFSBUFQFSTJTUFOU."$BEESFTTGPS
    FUIDE@I/PTVDIpMFPSEJSFDUPSZ
    ϘτϧωοΫ͕ભҠ͢Δ
    IUUQTHJUIVCDPNTZTUFNETZTUFNEJTTVFT

    View Slide

  72. ."$"EESFTT1PMJDZͷมߋ
    FUDTZTUFNEOFUXPSLEFGBVMUMJOL
    ."$"EESFTT1PMJDZQFSTJTUFODF
    ."$"EESFTT1PMJDZSBOEPN
    ."$"EESFTT1PMJDZOPOF
    ࠶ىಈޙ΋ಉ͡.BDΞυϨεΛ෷͍ग़͢
    σόΠε௥Ճ࣌ʹɺϥϯμϜͳ.BDΞυϨεΛ෷͍ग़͢
    ΧʔωϧʹΑͬͯ෷͍ग़͞Εͨ.BDΞυϨεΛར༻͢Δ

    View Slide

  73. HECJTศར
    wطଘͷϓϩηεɺίϚϯυʹ͓͍ͯ͋ͨΓΛ͚ͭΔͱ͖

    όοΫτϨʔε͸େ͖ͳख͕͔ΓʹͳΔ
    w-JOVYʹࠝแ͞Ε͍ͯΔίϚϯυ͸ͦΕͳΓʹ։ൃ͕

    ଓ͍͓ͯΓɺίϛοτಡΉͱ࠷దԽ͕ਐΜͰ͍Δɻ
    wNSVCZJQSPVUFཉ͍͠

    View Slide

  74. ίϯςφ

    View Slide

  75. IBDPOJXBXJOUFSLVSPTBLJ<>JQOFUOTBEEOFUOT@BEF
    IBDPOJXBXJOUFSLVSPTBLJ<>JQMJOLBEEFUIBEF@IUZQF
    WFUIQFFSOBNFFUIBEF@D
    ࠶ͼɺJQOFUOTBEE͕཯଎
    OFUOTͷ௥Ճʹඵ͘Β͍͔͔Δ

    View Slide

  76. JQFOUSZ@4:4$"--@@GBTUQBUI
    c
    FOUSZ@4:4$"--@@GBTUQBUI
    c
    cTZT@NPVOU
    cc
    ccEP@NPVOU
    ccc
    cccHSBGU@USFF
    cccBUUBDI@SFDVSTJWF@NOU
    cccc
    ccccQSPQBHBUF@NOU
    ccccc
    cccccQSPQBHBUF@POF
    cccccc
    ccccccDPQZ@USFF
    ccccccDMPOF@NOU
    ccccccc
    cccccccBMMPD@WGTNOU
    DPQZ@USFF͕ࢧ഑త

    View Slide

  77. DPQZ@USFF 

    GTOBNFTQBDFD

    Ϛ΢ϯτ࣌ͷϑϥά͕.4@#*/%ͳͱ͖ʹMPPQCBDLϚ΢ϯτ
    ͯ͠ɺϚ΢ϯτͷπϦʔߏ଄Λίϐʔ͢Δ

    View Slide

  78. XIJMF NPVOU /&5/4@36/@%*3 OPOF .4@4)"3&%c.4@3&$ /6--

    \
    'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU
    JG FSSOP&*/7"-ccNBEF@OFUOT@SVO@EJS@NPVOU
    \
    GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/4@36/@%*3 TUSFSSPS FSSOP


    SFUVSO
    ^
    6QHSBEF/&5/4@36/@%*3UPBNPVOUQPJOU
    JG NPVOU /&5/4@36/@%*3 /&5/4@36/@%*3 OPOF .4@#*/%c.4@3&$ /6--

    \
    GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/4@36/@%*3 /&5/4@36/@%*3
    TUSFSSPS FSSOP


    SFUVSO
    ^
    NBEF@OFUOT@SVO@EJS@NPVOU
    ^
    JQJQOFUOTD

    View Slide

  79. XIJMF NPVOU /&5/4@36/@%*3 OPOF .4@4)"3&%c.4@3&$ /6--

    \
    'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU
    JG FSSOP&*/7"-ccNBEF@OFUOT@SVO@EJS@NPVOU
    \
    GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/4@36/@%*3 TUSFSSPS FSSOP


    SFUVSO
    ^
    6QHSBEF/&5/4@36/@%*3UPBNPVOUQPJOU
    JG NPVOU /&5/4@36/@%*3 /&5/4@36/@%*3 OPOF .4@#*/%c.4@3&$ /6--

    \
    GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/4@36/@%*3 /&5/4@36/@%*3
    TUSFSSPS FSSOP


    SFUVSO
    ^
    NBEF@OFUOT@SVO@EJS@NPVOU
    ^
    JQJQOFUOTD
    WBSSVOOFUOTΛ࠶ؼతʹ
    4)"3&%Ϛ΢ϯτ

    View Slide

  80. XIJMF NPVOU /&5/4@36/@%*3 OPOF .4@4)"3&%c.4@3&$ /6--

    \
    'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU
    JG FSSOP&*/7"-ccNBEF@OFUOT@SVO@EJS@NPVOU
    \
    GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/4@36/@%*3 TUSFSSPS FSSOP


    SFUVSO
    ^
    6QHSBEF/&5/4@36/@%*3UPBNPVOUQPJOU
    JG NPVOU /&5/4@36/@%*3 /&5/4@36/@%*3 OPOF .4@#*/%c.4@3&$ /6--

    \
    GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/4@36/@%*3 /&5/4@36/@%*3
    TUSFSSPS FSSOP


    SFUVSO
    ^
    NBEF@OFUOT@SVO@EJS@NPVOU
    ^
    JQJQOFUOTD
    WBSSVOOFUOTΛ
    ࣗ෼ࣗ਎ʹ#*/%Ϛ΢ϯτ͢Δ͜
    ͱͰ4)"3&%Մೳʹ͢Δ

    View Slide

  81. JG VOTIBSF $-0/&@/&8/&5

    \
    GQSJOUG TUEFSS 'BJMFEUPDSFBUFBOFXOFUXPSLOBNFTQBDFaTaTaO
    OBNF TUSFSSPS FSSOP


    HPUPPVU@EFMFUF
    ^
    #JOEUIFOFUOTMBTUTP*DBOXBUDIGPSJU
    JG NPVOU QSPDTFMGOTOFU OFUOT@QBUI OPOF .4@#*/% /6--

    \
    GQSJOUG TUEFSS #JOEQSPDTFMGOTOFUTGBJMFETaO
    OFUOT@QBUI TUSFSSPS FSSOP


    HPUPPVU@EFMFUF
    ^
    JQJQOFUOTD
    ͜ͷϓϩηεͷOFUOTΛ෼཭͢Δ

    View Slide

  82. JG VOTIBSF $-0/&@/&8/&5

    \
    GQSJOUG TUEFSS 'BJMFEUPDSFBUFBOFXOFUXPSLOBNFTQBDFaTaTaO
    OBNF TUSFSSPS FSSOP


    HPUPPVU@EFMFUF
    ^
    #JOEUIFOFUOTMBTUTP*DBOXBUDIGPSJU
    JG NPVOU QSPDTFMGOTOFU OFUOT@QBUI OPOF .4@#*/% /6--

    \
    GQSJOUG TUEFSS #JOEQSPDTFMGOTOFUTGBJMFETaO
    OFUOT@QBUI TUSFSSPS FSSOP


    HPUPPVU@EFMFUF
    ^
    JQJQOFUOTD
    OFUOT@QBUIWBSSVOOFUOTOFUOT໊
    ʹ෼཭ͨ͠OFUOTͷ'%Λ#*/%Ϛ΢ϯτ͢Δ
    ͜ͱͰϓϩηε͕ͳ͘ͳͬͯ΋OFUOT͕࢒Δ

    View Slide

  83. XIJMF NPVOU /&5/4@36/@%*3 OPOF .4@4)"3&%c.4@3&$ /6--

    \
    'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU
    JG FSSOP&*/7"-ccNBEF@OFUOT@SVO@EJS@NPVOU
    \
    GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/4@36/@%*3 TUSFSSPS FSSOP


    SFUVSO
    ^
    6QHSBEF/&5/4@36/@%*3UPBNPVOUQPJOU
    JG NPVOU /&5/4@36/@%*3 /&5/4@36/@%*3 OPOF .4@#*/%c.4@3&$ /6--

    \
    GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/4@36/@%*3 /&5/4@36/@%*3
    TUSFSSPS FSSOP


    SFUVSO
    ^
    NBEF@OFUOT@SVO@EJS@NPVOU
    ^
    JQJQOFUOTD
    .4@3&$͸࠶ؼతʹߦ͏ͷͰ
    0 O
    ͷ͕͔͔࣌ؒΔ

    View Slide

  84. զʑͷ༻్Ͱ͸.4@3&$ෆཁ
    SPPUOBNFTQBDF
    OFUOTBEE
    OFUOTEFM
    GPSL
    XBJUQJE
    VOTIBSF
    DPOUBJOFSOBNFTQBDF
    QSPDFTT
    EPOF

    View Slide

  85. QZBNBJQ
    ίϚϯυര஀

    View Slide

  86. QJQίϚϯυ͸΍Ίͨ΄͏͕͍͍

    View Slide

  87. ίϯςφ

    View Slide

  88. IBDPOJXBUJHIUJJ[VLB<>JQOFUOTBEEOFUOT@BEF
    IBDPOJXBUJHIUJJ[VLB<>JQMJOLTFUFUIBEF@DOFUOT
    OFUOT@BEFVQ
    IBDPOJXBUJHIUJJ[VLB<>JQOFUOTFYFDOFUOT@BEFJQBEESBEE
    EFWFUIBEF@D
    IBDPOJXBUJHIUJJ[VLB<>JQOFUOTFYFDOFUOT@BEFJQMJOLTFU
    MPVQ
    IBDPOJXBUJHIUJJ[VLB<>JQOFUOTFYFDOFUOT@BEFTCJOSPVUF
    BEEEFGBVMUHX
    JQOFUOTFYFD͕཯଎
    ௨৴Ͱ͖ΔΑ͏ʹͳΔ·Ͱඵ͘Β͍͔͔Δ

    View Slide

  89. JQFOUSZ@4:4$"--@@GBTUQBUI
    c
    FOUSZ@4:4$"--@@GBTUQBUI
    c
    cTZT@VOTIBSF
    cVOTIBSF@OTQSPYZ@OBNFTQBDFT
    cDSFBUF@OFX@OBNFTQBDFT
    cDPQZ@NOU@OT
    cc
    ccDPQZ@USFF
    ccc
    cccDMPOF@NOU
    cccc
    ccccBMMPD@WGTNOU
    ccccc
    ccccc@@BMMPD@QFSDQV
    cccccc
    ccccccQDQV@BMMPD
    ccccccc
    cccccccQDQV@BMMPD@BSFB
    cccccccc
    ccccccccVOTIBSF
    ccccccccOFUOT@TXJUDI

    View Slide

  90. TOQSJOUG OFU@QBUI TJ[FPG OFU@QBUI
    TT /&5/4@36/@%*3 OBNF

    OFUOTPQFO OFU@QBUI 0@3%0/-:c0@$-0&9&$

    JG OFUOT
    \
    GQSJOUG TUEFSS $BOOPUPQFOOFUXPSLOBNFTQBDFaTaTaO
    OBNF TUSFSSPS FSSOP


    SFUVSO
    ^
    JG TFUOT OFUOT $-0/&@/&8/&5

    \
    GQSJOUG TUEFSS TFUUJOHUIFOFUXPSLOBNFTQBDFaTaGBJMFETaO
    OBNF TUSFSSPS FSSOP


    DMPTF OFUOT

    SFUVSO
    ^
    MJCOBNFTQBDFD

    View Slide

  91. TOQSJOUG OFU@QBUI TJ[FPG OFU@QBUI
    TT /&5/4@36/@%*3 OBNF

    OFUOTPQFO OFU@QBUI 0@3%0/-:c0@$-0&9&$

    JG OFUOT
    \
    GQSJOUG TUEFSS $BOOPUPQFOOFUXPSLOBNFTQBDFaTaTaO
    OBNF TUSFSSPS FSSOP


    SFUVSO
    ^
    JG TFUOT OFUOT $-0/&@/&8/&5

    \
    GQSJOUG TUEFSS TFUUJOHUIFOFUXPSLOBNFTQBDFaTaGBJMFETaO
    OBNF TUSFSSPS FSSOP


    DMPTF OFUOT

    SFUVSO
    ^
    MJCOBNFTQBDFD
    ࡞੒ࡁΈͷOFUOTʹ
    VOTIBSF

    View Slide

  92. JG VOTIBSF $-0/&@/&8/4

    \
    GQSJOUG TUEFSS VOTIBSFGBJMFETaO TUSFSSPS FSSOP


    SFUVSO
    ^
    %POUMFUBOZNPVOUTQSPQBHBUFCBDLUPUIFQBSFOU
    JG NPVOU OPOF .4@4-"7&c.4@3&$ /6--

    \
    GQSJOUG TUEFSS aNPVOUNBLFSTMBWFaGBJMFETaO
    TUSFSSPS FSSOP


    SFUVSO
    ^
    MJCOBNFTQBDFD
    NPVOUOTΛ෼཭͢Δ

    View Slide

  93. JG VOTIBSF $-0/&@/&8/4

    \
    GQSJOUG TUEFSS VOTIBSFGBJMFETaO TUSFSSPS FSSOP


    SFUVSO
    ^
    %POUMFUBOZNPVOUTQSPQBHBUFCBDLUPUIFQBSFOU
    JG NPVOU OPOF .4@4-"7&c.4@3&$ /6--

    \
    GQSJOUG TUEFSS aNPVOUNBLFSTMBWFaGBJMFETaO
    TUSFSSPS FSSOP


    SFUVSO
    ^
    MJCOBNFTQBDFD
    .4@4-"7&ʹΑͬͯ͜ͷ/4ʹ
    ͓͚Δ͋ΒΏΔϚ΢ϯτͷมߋΛ
    ਌ʹ఻ൖ͠ͳ͍

    View Slide

  94. JG NPVOU OBNF TZT TZTGT NPVOUqBHT /6--

    \
    GQSJOUG TUEFSS NPVOUPGTZTGBJMFETaO TUSFSSPS FSSOP


    SFUVSO
    ^
    MJCOBNFTQBDFD
    TZTGTΛϚ΢ϯτ͢Δ͜ͱͰ
    ࣮࣭ίϯςφԽ

    View Slide

  95. VOTIBSF
    OFUOT
    VOTIBSF
    NPVOUOT
    TMBWF
    SPPUTZTUFN
    TZT
    NPVOU
    JQOFUOTFYFD͸
    ίϯςφͰ͋Δ

    View Slide

  96. VOTIBSF
    OFUOT
    VOTIBSF
    NPVOUOT
    TMBWF
    SPPUTZTUFN
    TZT
    NPVOU
    JQOFUOTFYFD͸
    ίϯςφͰ͋Δ
    OFUOTͷ*'ʹ*1௥ՃͷΈ΍Γ͍ͨ
    ͷͰίϯςφͷػೳ͸͍Βͳ͍

    View Slide

  97. View Slide

  98. ίϯςφऑͰϝϞϦރׇ
    ͭ·ΓɺϦιʔε࢖͍੾Εͨ

    View Slide

  99. γεςϜௐࠪίϚϯυອஊ

    View Slide

  100. w HEC5IF(/6%FCVHHFS
    w TUSBDF5SBDFTZTUFNDBMMTBOETJHOBMT
    w QFSG1FSGPSNBODFBOBMZTJTUPPMTGPS-JOVY
    w WBMHSJOEBTVJUFPGUPPMTGPSEFCVHHJOHBOEQSPpMJOHQSPHSBNT

    View Slide

  101. NSVCZ
    ͷ"1*ΫϥΠΞϯτ͕
    ΊͬͪΌϝϞϦ࢖͏
    NSVCZ
    DMJFOU
    "1*4FSWFS
    SFTPVSDFFYBNQMF
    NSVCZͷ$MJFOU͔Β͋Δ"1*Λ࣮ߦͯ͠
    .#ͷϨεϙϯεΛऔಘ͢Δ
    +40/

    View Slide

  102. ॠؒతʹ(CZUF͘Β͍
    ϝϞϦ͕ར༻͞ΕΔ

    View Slide

  103. WBMHSJOEͰϝϞϦͷΞϩέʔγϣϯΛݟΔ
    # valgrind curl http://localhost/resource/example > /dev/null

    ==18619== HEAP SUMMARY:
    ==18619== in use at exit: 0 bytes in 0 blocks
    ==18619== total heap usage: 1,863 allocs, 1,863 frees, 211,125 bytes allocated
    # valgrind /home/pyama/mruby test.rb

    ==12811== HEAP SUMMARY:
    ==12811== in use at exit: 0 bytes in 0 blocks
    ==12811== total heap usage: 51,721 allocs, 51,721 frees, 12,028,345,116 bytes
    allocated

    View Slide

  104. ʗ ?P?
    ʘ(

    View Slide

  105. TUSBDFͰγεςϜίʔϧͷ౷ܭΛऔΔ
    # strace -fc /home/pyama/mruby test.rb
    % time seconds usecs/call calls errors syscall
    ------ ----------- ----------- --------- ---------
    ----------------
    73.00 0.006317 2 3361 munmap
    23.27 0.002014 11 183 brk
    2.62 0.000227 0 1734 read
    1.11 0.000096 0 3380 mmap
    0.00 0.000000 0 3 write
    0.00 0.000000 0 16 open
    0.00 0.000000 0 23 close
    NVONBQ͕ࢧ഑త
    IUUQTMJOVYKNPTEOKQIUNM-%1@NBOQBHFTNBONNBQIUNM

    View Slide

  106. QFSGΛར༻ͯ͠ίʔϧάϥϑΛऔಘ͢Δ
    # perf record --call-graph dwarf -- /home/pyama/mruby test.rb
    # perf report -g -G —stdio
    94.35% 0.03% mruby mruby [.] mrb_str_plus
    |
    ---mrb_str_plus
    |
    --20.06%-- mrb_vm_exec
    mrb_vm_run

    NSC@TUS@QMVT͕ࢧ഑త
    IUUQNSVCZPSHEPDTBQJIFBEFSTNSVCZ@'TUSJOHIIUNMNSC@TUS@QMVTGVODUJPO

    View Slide

  107. πʔϧΛར༻ͯ͠ूΊͨ৘ใ͔Β
    ԾઃΛཱͯΔ
    w ॲཧ͸)551ϦΫΤετͰϨεϙϯεϘσΟ͸αΠζ͕େ͖͍
    w ϝϞϦ(#࢖ͬͯΔΦϫλ
    w NVONBQ͕ࢧ഑తͰճ਺΋ଟ͍͜ͱ͔ΒɺϝϞϦͷ֬อɺղ์͕

    ଟ͍ͷͰ͸ͳ͍͔ʁ
    w NSC@TUS@QMVT͕ࢧ഑తͰ͋Δ͜ͱ͔Βɺจࣈྻ݁߹͕ଟ͍͜ͱ͕ݪҼʁ
    NSC@TUS@QMVTSVCZFbDlBzlCz`

    View Slide

  108. NSVCZTJNQMFIUUQ
    while (t = socket.read(1024))
    if block_given?
    yield t
    next
    end
    response_text += t
    end
    CPEZΛCZUFͣͭಡΈɺ
    จࣈྻ݁߹͍ͯ͠Δ

    View Slide

  109. NSVCZTJNQMFIUUQ
    while (t = socket.read(4096))
    if block_given?
    yield t
    next
    end
    response_text += t
    end
    ୯७ʹ͸όοϑΝαΠζΛ֦ு͠ɺ
    ಡΈࠐΈճ਺ΛݮΒͤ͹ϧʔϓ͸ݮΔ

    View Slide

  110. NSC@TUS@QMVT
    MRB_API mrb_value mrb_str_plus(mrb_state *mrb, mrb_value a,
    mrb_value b)
    {
    struct RString *s = mrb_str_ptr(a);
    struct RString *s2 = mrb_str_ptr(b);
    struct RString *t;
    t = str_new(mrb, 0, RSTR_LEN(s) + RSTR_LEN(s2));
    memcpy(RSTR_PTR(t), RSTR_PTR(s), RSTR_LEN(s));
    memcpy(RSTR_PTR(t) + RSTR_LEN(s), RSTR_PTR(s2), RSTR_LEN(s2));
    return mrb_obj_value(t);
    }
    ݁߹ޙจࣈྻͷϝϞϦΛ
    Ξϩέʔτ

    View Slide

  111. NSC@TUS@QMVT
    B
    C
    BC
    BC
    D BCD

    BCD E
    BCDE
    ϧʔϓ໨
    όΠτ
    ϧʔϓ໨
    όΠτ
    ϧʔϓ໨
    όΠτ
    ݁ՌจࣈྻͷྖҬ͸৽ن࡞੒

    View Slide

  112. BC

    View Slide

  113. NSC@TUS@DBU
    MRB_API mrb_value mrb_str_cat(mrb_state *mrb, mrb_value str, const char *ptr,
    size_t len)
    {
    struct RString *s = mrb_str_ptr(str);
    size_t capa;
    size_t total;
    ptrdiff_t off = -1;
    ...
    resize_capa(mrb, s, capa);
    memcpy(RSTR_PTR(s) + RSTR_LEN(s), ptr, len);
    mrb_assert_int_fit(size_t, total, mrb_int, MRB_INT_MAX);
    RSTR_SET_LEN(s, total);
    RSTR_PTR(s)[total] = '\0'; /* sentinel */
    return str;
    }
    ͍ΘΏΔSFBMMPDͰ
    طଘͷྖҬΛ֦ு͍ͯ͠Δ

    View Slide

  114. NSC@TUS@DBU
    B
    C
    BC
    BC
    D BCD

    BCD E
    BCDE
    ϧʔϓ໨
    όΠτ
    ϧʔϓ໨
    όΠτ
    ϧʔϓ໨
    όΠτ
    ݁ՌจࣈྻͷྖҬ͸ݩจࣈྻΛ֦ு

    View Slide

  115. NSC@TUS@QMVT
    TUSJOHlBCz
    TUSJOHlBz TUSJOHlCz

    NSC@TUS@DBU
    TUSJOHlBCz
    TUSJOHlBz TUSJOHlCz

    View Slide

  116. ͲΕ͘Β͍͕ࠩ͋Δͷ͔ʁ
    a = "aaa"
    b = "bbb"
    100000.times do |n|
    a += b
    end
    a = "aaa"
    b = "bbb"
    100000.times do |n|
    a << b
    end
    TVEPWBMHSJOENSVCZOFXSC

    )&"146.."3:
    JOVTFBUFYJUCZUFTJOCMPDLT
    UPUBMIFBQVTBHF CZUFTBMMPDBUFE
    TVEPWBMHSJOENSVCZDPODBUSC

    )&"146.."3:
    JOVTFBUFYJUCZUFTJOCMPDLT
    UPUBMIFBQVTBHF CZUFTBMMPDBUFE
    NSC@TUS@QMVT
    NSC@TUS@DPODBU
    ສϧʔϓͩͱ
    ϝϞϦΞϩέʔγϣϯഒ

    View Slide

  117. ଟ֯తͳௐࠪΛ͠Α͏
    wखʹೃછΉπʔϧΛ͍͔ͭ࣋͘ͱ͏
    wϓϩάϥϛϯάݴޠ΋ʮ࣮૷ʯ͕͋ΔͳΒ͹ɺݪҼ͸
    ɹΘ͔Δ͜ͱ͕Ͱ͖Δ

    View Slide

  118. w HEC5IF(/6%FCVHHFS
    w TUSBDF5SBDFTZTUFNDBMMTBOETJHOBMT
    w QFSG1FSGPSNBODFBOBMZTJTUPPMTGPS-JOVY
    w WBMHSJOEBTVJUFPGUPPMTGPSEFCVHHJOHBOEQSPpMJOHQSPHSBNT

    View Slide

  119. ετϨʔδͷເͱల๬

    View Slide

  120. ʁʁʁʮຊ൪ͷXPSEQSFTTαΠτʹ
    BC͔͚ͨΒؔ܎ͳ͍αΠτ͕མͪ·ͨ͠ʯ

    View Slide

  121. ίϯςφͩΑͶʁ
    w DHSPVQΛར༻ͯ͠$16ɺϝϞϦͱ΋ʹϦιʔε੍ݶঢ়ଶ
    w Ұͭͷίϯςφͷෛՙ͕γεςϜϫΠυͰӨڹΛٴ΅͢͜ͱ͸ߟ͑ͮΒ͍

    View Slide

  122. QTFGcHSFQBQBDIFcHSFQ9
    OTDE BQBDIF%'03&(306/%9
    QFSGSFDPSEDBMMHSBQIEXBSGQ
    QFSGSFQPSUH(TUEJP
    BQBDIFJPODVCF@MPBEFS@MJO@TP<>YCGD
    c
    YGEGGD
    c
    c;&/%@*/$-6%&@03@&7"-@41&$@$0/45@)"/%-&3
    cFYFDVUF@FY
    cYGEGGD
    cc
    cc;&/%@*/$-6%&@03@&7"-@41&[email protected]"3@)"/%-&3
    ccFYFDVUF@FY
    ccYGEGGD
    cc;&/%@*/$-6%&@03@&7"-@41&[email protected]"3@)"/%-&3
    ccFYFDVUF@FY
    ccYGEGGD
    cc;&/%@*/$-6%&@03@&7"-@41&[email protected]"3@)"/%-&3
    ccFYFDVUF@FY
    "QBDIF)551%͸9Λ͚ͭΔͱ
    γϯάϧϞʔυͰىಈ͢Δ

    View Slide

  123. TUSBDFGDQ
    UJNFTFDPOETVTFDTDBMMDBMMTFSSPSTTZTDBMM

    PQFO
    GTUBU
    SFBE
    MTUBU
    SFDWGSPN
    XSJUF
    DMPTF
    TUBU
    QPMM
    TUSBDFͰ͸PQFO͕ଟ͍

    View Slide

  124. TUSBDFGDQ
    UJNFTFDPOETVTFDTDBMMDBMMTFSSPSTTZTDBMM

    PQFO
    MTUBU
    XSJUFW
    SFBE
    XSJUF
    DMPTF
    TUBU
    ͨ·ʹΊͬͪΌ஗͍͕࣌͋Δ
    IUUQTMJOVYKNPTEOKQIUNM-%1@NBOQBHFTNBOTUBUIUNM

    View Slide

  125. ͦ΋ͦ΋1)1ͱετϨʔδ͸
    ૬ੑ͕ѱ͍
    w 1)1͸௨ৗϑΝΠϧΛ౎౓։͍ͯɺίϯύΠϧ࣮ͯ͠ߦ͢Δ
    w /"4 /'4
    ʹ͓͍ͯখ͍͞ϑΝΠϧΛଟ͘։͘ͱ͍͏ͷ͸

    ύϑΥʔϚϯεతʹͱͯ΋ۤख

    View Slide

  126. Զͨͪͷ1)1ʹ͸
    01DBDIF͕͋Δ

    View Slide

  127. View Slide

  128. ݴ͏ͯ΋ɺѱҙʹऑ͍
    w XIJMFʙpOEʙFYFDͱ͔΍ΒΕΔͱ฼؋ϫΠυͰ཯଎ʹͳΔ
    w TFDDPNQ #1'
    Λར༻͢ΔͳͲ੍ݶΛݕ౼ SMJNJUͰ΋͍͍͔΋

    View Slide

  129. ࠓޙɺQZBNB͕
    ΍͍͖͍ͬͯͨ͜ͱ
    ͕࣌ؒ͋Ε͹࿩͢

    View Slide

  130. IBDP3%4

    View Slide

  131. %)BDP

    View Slide

  132. ֵ৽తεέδϡʔϥ

    View Slide

  133. ·ͱΊ

    View Slide

  134. ࠓ೔࿩ͨ͜͠ͱͨͪ
    w ίϯςφͷϘτϧωοΫ͸-JOVYίϚϯυΛۦ࢖ͯ͠ɺݪ
    Ҽʹ͋ͨΓΛ෇͚ͯɺιʔεΛಡΉͷ͕Ԧಓ
    w ͦͷγεςϜίʔϧ͕ԿΛ͢Δͷ͔جૅతֶश͕ඞཁ
    w ίϯςφ͸͋͘·ͰϓϩηεͰ͋Δ

    View Slide

  135. w TMVCɿTMBCPCKFDUͷ࡞੒ॲཧΛݟ͍ͯ͘ IUUQT
    LFSOIBDLIBUFOBCMPHDPNFOUSZ


    w 4ZTUFNEೖ໳
    1SJWBUF5NQͷ࣮૷ΛݟΔ IUUQ
    FOBLBJIBUFOBCMPHDPNFOUSZ


    ࢀߟจݙ

    View Slide

  136. 5IBOLZPV
    ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

    View Slide

  137. 2"

    View Slide