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

はてなにおけるLinuxネットワークスタックパフォーマンス改善 / Linux network performance improvement at hatena

はてなにおけるLinuxネットワークスタックパフォーマンス改善 / Linux network performance improvement at hatena

はてな・ペパボ技術大会〜インフラ技術基盤〜@京都

Yuuki Tsubouchi (yuuk1)

July 02, 2016
Tweet

More Decks by Yuuki Tsubouchi (yuuk1)

Other Decks in Technology

Transcript

  1. ͸ͯͳʹ͓͚Δ
    -JOVYωοτϫʔΫελοΫ
    ύϑΥʔϚϯεվળ
    JEZ@VVLJ
    ͸ͯͳɾϖύϘٕज़େձ
    ʙΠϯϑϥٕज़ج൫ʙ!ژ౎

    View Slide

  2. !Z@VVL
    JEZ@VVLJ
    ΢ΣϒΦϖϨʔγϣϯΤϯδχΞ
    !͸ͯͳ
    ೖࣾ೥໨

    View Slide

  3. ৽ଔ೥໨ͷ࢓ࣄ
    Λ঺հ

    View Slide

  4. 1
    ΢ΣϒγεςϜͷ
    ύϑΥʔϚϯε

    View Slide

  5. ΢ΣϒγεςϜͷయܕߏ੒
    LB
    Proxy
    Application
    Database

    View Slide

  6. ϘτϧωοΫ͸
    Ͳ͔͜ʹ͋Δ

    View Slide

  7. LB
    Proxy
    Web App
    Database
    ϘτϧωοΫʢϩʔϧʣ

    View Slide

  8. LB
    Proxy
    Web App
    Database
    ϘτϧωοΫʢϦιʔεʣ
    $16 .FN %JTL /8
    $16 .FN %JTL
    $16 .FN %JTL
    /8
    /8
    $16 .FN %JTL /8

    View Slide

  9. ϘτϧωοΫʢϦιʔεৄࡉʣ
    $16
    .FN
    %JTL
    /8
    )PTU
    VTFS TZT JPXBJU ʜ
    VTFE DBDIFE CVGGFS ʜ
    XSJUF
    *014
    SFBE
    *014
    SFBE
    MBUFODZ
    ʜ
    UY
    CQT
    SY
    CQT
    UY
    QQT ʜ

    View Slide

  10. $16VTSOJDFTZTJPXBJUJSRTPGUTUFBMHVFTUJEMF
    BMM




    ιϑτׂΓࠐΈʢύέοτड৴ʣ
    ෛՙ͕ߴ͍

    View Slide

  11. CPU
    %irq %softirq

    View Slide

  12. େྔύέοτ
    ͱͷઓ͍

    View Slide

  13. 2
    ωοτϫʔΫ
    ελοΫ

    View Slide

  14. ωοτϫʔΫελοΫ
    w ωοτϫʔΫ*0Λ࣮ݱ͢ΔͨΊʹඞཁ
    ͳཁૉ܈
    w /*$ɺΧʔωϧͷ/*$υϥΠόɺΧʔ
    ωϧͷ5$1*1ελοΫɺιέοτͳͲ
    w ύέοτૹड৴ɺύέοτόοϑΝ؅ཧɺ
    ϓϩτίϧॲཧͳͲΛؚΉ
    w ड৴ଆͷෛՙ͕ߴ͍͜ͱ͕ଟ͍

    View Slide

  15. ωοτϫʔΫ*0ߴ଎Խ
    w (C&ͳͲʹΑΔωοτϫʔΫଳҬ෯޲্ʹ
    ΑΓɺҰఆ࣌ؒʹॲཧ͢Δύέοτ਺͕૿େ
    w (CQT.QQT #ZUFTQBDLFU

    w ωοτϫʔΫελοΫॲཧͷ$16ෛՙ͕ߴ͘
    ͳΔ
    w $16ΫϩοΫ͸্͕ΒͣϚϧνίΞ࣌୅ʹ
    ಥೖ
    w ͞·͟·ͳߴ଎Խख๏͕࣮૷͞Ε͍ͯΔ

    View Slide

  16. NIC Kernel Process
    ύέοτड৴ϑϩʔ ؆қ

    View Slide

  17. NIC Kernel Process
    ύέοτड৴
    ύέοτసૹ
    ϓϩτίϧॲཧ
    σʔλίϐʔ
    SFBE
    SFDW

    ύέοτड৴ϑϩʔ ؆қ

    5$1*1ͷύέοτϔομղੳɺνΣοΫαϜܭࢉͳͲ
    ΞϓϦέʔγϣϯϓϩηε͸γεςϜίʔϧͰ଴ͪड͚

    View Slide

  18. NIC Process
    ύέοτड৴ϑϩʔ ৄղ

    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    ,FSOFM
    3JOH
    #VGGFS
    4PDLFU
    #VGGFS
    ΧʔωϧͷॲཧΛ෼ղ

    View Slide

  19. NIC Process
    ύέοτड৴ϑϩʔ ৄղ

    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    ,FSOFM
    3JOH
    #VGGFS
    4PDLFU
    #VGGFS
    ϋʔυ
    ׂΓࠐΈ
    ιϑτ
    ׂΓࠐΈ
    ࢒Γͷॲཧ͸ιϑτׂΓࠐΈͰඇಉظॲཧ ஗Ԇॲཧ

    ϋʔυׂΓࠐΈͰ͸ϦϯάόοϑΝʹύέοτΛੵΉ·Ͱ

    View Slide

  20. ͳͥछྨͷׂΓࠐΈʁ
    w ड৴ύέοτ૿ׂΓࠐΈ૿ίϯςΩ
    ετεΠον૿ߴ$16ෛՙ
    w ϋʔυׂΓࠐΈ͚ͩͩͱύέοτड৴ͷͨͼ
    ʹϓϩτίϧॲཧ·Ͱଈ࣮ߦ͞ΕΔ
    w ϋʔυׂΓࠐΈͰ͸ύέοτΛόοϑΝʹੵ
    Ή͚ͩʹͯ͠ɺճͷׂΓࠐΈॲཧͷ$16ෛ
    ՙΛԼ͛Δ
    w ιϑτׂΓࠐΈʹΑΓɺϝΠϯͷϓϩτίϧ
    ॲཧΛඇಉظॲཧ

    View Slide

  21. /"1* /FX"1*

    w ޙճ͠ʹͯ͠΋ड৴ύέοτ͕૿͑Ε͹ιϑτׂΓࠐΈ
    ͷ਺͸૿͑Δ
    w ෳ਺ͷύέοτΛ·ͱΊͯͭͷιϑτׂΓࠐΈͰॲཧ
    ͍ͨ͠
    w ϋʔυׂΓࠐΈΛҰ୴ͱΊͯɺϙʔϦϯάʹΑΓϦϯά
    όοϑΝ͔Βಉ࣌ʹύέοτΛऔΓग़͢
    w ͨͩ͠ύέοτ਺͕গͳ͍৔߹ʹಛʹϨΠςϯγ͕େ͖
    ͘ͳͬͯ͠·͏ͷͰɺड৴ύέοτ͕ଟ͍ͱ͖ͷΈ༗ޮ

    View Slide

  22. NIC Process
    /"1*
    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    ,FSOFM
    3JOH
    #VGGFS
    4PDLFU
    #VGGFS
    ϋʔυׂΓࠐΈΛͱΊͯɺϙʔϦϯά
    QPMMJOH

    View Slide

  23. ͜͜·Ͱ͸
    -JOVYωοτϫʔΫ
    ελοΫͷجຊతͳ࿩

    View Slide

  24. 3
    ͸ͯͳͰͷࣄྫ

    View Slide

  25. )"1SPYZͷ୆਺૿໰୊
    w )"1SPYZΛ&$Ͱͷϩʔυόϥϯαͱͯ͠࢖༻
    w ιϑτׂΓࠐΈෛՙʹΑΓίΞͰ཯଎
    w $16ίΞ͸༨͍ͬͯΔͷʹɺ)"1SPYZͷεέʔϧ
    Ξ΢τ͕ඞཁ
    w %/4ϥ΢ϯυϩϏϯʹΑΓɺෳ਺ͷ)"1SPYZ΁
    ࢀরΛৼΓ෼͚
    w ϩʔυόϥϯαΛϩʔυόϥϯε͠ͳ͍ͱ͍͚ͳ
    ͍ࣄଶ

    View Slide

  26. )"1SPYZ
    ʜʜ
    EC
    ʜʜ
    BQQ
    ʜʜ

    TVHPJIBQSPYZQSJWBUF

    View Slide

  27. ʜʜ
    EC
    ʜʜ
    BQQ
    ʜʜ


    )"1SPYZ

    View Slide

  28. ׂΓࠐΈ͕ଟ͍ͳΒ
    ׂΓࠐΈࣗମΛݮΒ͢

    View Slide

  29. NIC Process
    *OUFSSVQU$PBMFTDJOH
    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    ,FSOFM
    3JOH
    #VGGFS
    4PDLFU
    #VGGFS
    /*$͕ͭͷϋʔυׂΓࠐΈͰෳ਺ͷύέοτΛ·ͱΊͯసૹ
    ϋʔυ
    ׂΓࠐΈ
    ෳ਺ύέοτἧ͏·Ͱ౸ணΛ଴ͭͨΊϨΠςϯγ͸্͕Δ

    View Slide

  30. /*$υϥΠόͷύϥϝʔλݕূ
    w ࢖༻/*$͸*OUFMͷJYHCF*OUFSSVQU5ISPUUMF3BUFΦ
    ϓγϣϯ
    w DYMBSHF୆͔ΒDYMBSHF୆ʹ5$1઀ଓ
    w σϑΥϧτͰ͸΢ΣϒαʔϏεͷΑ͏ͳγϣʔτύ
    έοτ͕ࢧ഑తͳঢ়گͰ͸ɺׂΓࠐΈ਺͕ߴ͘ͳΔ
    w ΢ΣϒαʔϏεͰ͸ͦ͜·ͰϨΠςϯγʹγϏΞͰ
    ͸ͳ͍
    w ݕূͷ݁ՌɺιϑτׂΓࠐΈͷ$16ར༻཰ TPGU

    ͕࠷େ·Ͱվળ
    l&$Ͱ43*07Λ࢖͏ͱ͖ͷ/*$υϥΠόύϥϝʔλݕূz IUUQCMPHZVVLJPFOUSZ

    View Slide

  31. ׂΓࠐΈॲཧΛෳ਺ͷ
    ίΞʹ෼ࢄͤ͞Δ

    View Slide

  32. NIC Process
    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    ͳͥෳ਺ͷίΞΛ࢖͑ͳ͍ͷ͔
    $16
    ϋʔυׂΓࠐΈ͕͔͔ͬͨ$16ίΞͱಉ͡$16ίΞ͕
    ιϑτׂΓࠐΈΛ࣮ߦ͢ΔͨΊ
    ϋʔυ
    ׂΓࠐΈ
    ιϑτ
    ׂΓࠐΈ

    View Slide

  33. NIC Process
    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    $16
    314 3FDFJWF1BDLFU4UFFSJOH

    NIC Process
    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    $16
    NIC Process
    ύέοτ
    ड৴
    ϓϩτίϧ
    ॲཧ
    σʔλड৴
    ॲཧ
    $16
    ίΞׂؒΓࠐΈ

    View Slide

  34. 314 3FDFJWF1BDLFU4UFFSJOH

    w ௨ৗ͸ϋʔυׂΓࠐΈ͕͔ͬͨ$16ͱಉ͡$16Ͱ
    ιϑτׂΓࠐΈΛ࣮ߦ
    w 314͸ɺଞͷ$16ʹίΞׂؒΓࠐΈͯ͠ɺϓϩτ
    ίϧॲཧΛଞͷ$16ʹ೚ͤΔ
    w 5$1ϔομͷ TBEES TQPSU EBEES EQPSU
    ͷ૊ʹ
    ର͠$POTJTUFOU)BTIJOHʹΑΔ෼ࢄ
    w ݪଇಉ͡5$1ϑϩʔͳΒ͹ಉ͡$16ʹ෼ࢄ͞Ε
    ΔΑ͏ʹ
    w $16Ωϟογϡώοτ཰ΛߴΊͨ3'4 3FDFJWF
    'MPX4UFFSJOH
    ͱ͍͏ͷ΋͋Δ
    l-JOVYͰϩʔυόϥϯα΍ΩϟογϡαʔόΛϚϧνίΞεέʔϧͤ͞ΔͨΊͷΧʔωϧνϡʔχϯάz IUUQ
    CMPHZVVLJPFOUSZMJOVYOFUXPSLTUBDLUVOJOHSGT

    View Slide

  35. ࣾ಺ͷ࠷ۙͷ
    ωοτϫʔΫαʔόʹ
    ޿͘ద༻ࡁ

    View Slide

  36. 314Ͱ3FEJTνϡʔχϯά
    w 3FEJT͸εϨουಈ࡞͢ΔͨΊɺϚϧν
    ίΞεέʔϧ͠ͳ͍
    w ΧʔωϧͷωοτϫʔΫ*0ॲཧ͢ΔεϨο
    υͱɺ3FEJTεϨουͷ෼ࢄ͸Ͱ͖Δ
    w 314͸෼ࢄઌ$16൪߸ΛࢦఆͰ͖Δ
    w $16 ʹ෼ࢄͤ͞Δ
    w UBTLTFUͰ$16ΞϑΟχςΟΛઃఆ͠ɺ
    3FEJTεϨουΛ$16 Ҏ֎ʹݻఆ
    IUUQSFEJTJPUPQJDTCFODINBSLT

    View Slide

  37. $16ˋݮ

    View Slide

  38. ଞʹ΋਺ଟ͘ͷ
    ߴ଎Խख๏͕͋Δ
    νΣοΫαϜΦϑϩʔυ
    540 5$14FHNFOUBUJPO0⒐PBE

    -30 -BSHF3FDFJWF0⒐PBE

    50& 5$10⒐PBE&OHJOF

    344 3FDFJWF4JEF4DBMJOH

    "DDFMFSBUFE3'4
    914
    1$*QBTTUISPVHI
    43*07
    *OUFM%BUB%JSFDU*0

    View Slide

  39. 4
    ωοτϫʔΫελο
    Ϋͷઌ୺ٕज़

    View Slide

  40. ͦ΋ͦ΋Χʔωϧʹ
    ॲཧͤ͞ͳ͍
    protocol
    process
    NIC process
    hardirq
    packet
    receive
    consistent
    hashing
    forward

    View Slide

  41. Ϣʔβϥϯυ΁θϩίϐʔ
    w ύέοτΛ/*$͔ΒϢʔβϥϯυ΁όΠύε
    w ࣮૷
    w OFUNBQ
    w *OUFM%1%,
    w ϢʔβϥϯυͰ5$1*1࣮૷
    w ஌ΔݶΓͰ͸࣮༻ஈ֊ͷωοτϫʔΫαʔό͸
    ·ͩͳ͍

    View Slide

  42. ιέοτ"1*ͷݶք
    w େ఍ͷωοτϫʔΫαʔόͷ࣮૷͸104*9ͷι
    έοτ"1*ϕʔε
    w ιέοτ"1*Ͱ͸θϩίϐʔʹͰ͖ͳ͍
    w ΧʔωϧͷιέοτόοϑΝʹੵΉඞཁ͕͋Δ
    w طଘͷωοτϫʔΫαʔόͷιέοτ"1*Λஔ͖
    ׵͑Δͷ͸େม
    w Χʔωϧ͕ϋʔυͷਐԽʹ௥͍͔ͭͳ͘ͳΕ͹ɺ
    ීٴ͢Δ͔΋͠Εͳ͍

    View Slide

  43. 5
    ·ͱΊ

    View Slide

  44. ·ͱΊ
    w ΢ΣϒγεςϜʹ͓͚ΔωοτϫʔΫ*0ෛՙͷҐஔ͚ͮ
    w -JOVYͷωοτϫʔΫελοΫͷ࢓૊ΈΛ঺հ
    w ͸ͯͳͰ࣮ફͨ͠ωοτϫʔΫελοΫͷߴ଎Խख๏
    w ׂΓࠐΈΛ·ͱΊΔ*OUFSSVQU$PBMFTDJOH
    w ϓϩτίϧॲཧΛϚϧνίΞεέʔϧͤ͞ΔͨΊͷ
    3143'4
    w )"1SPYZɺ3FEJTͷྫ
    w ઌ୺ٕज़ͱͯ͠ɺ/*$͔ΒϢʔβϥϯυ΁όΠύε͢Δ
    ٕज़͕͋Δ

    View Slide

  45. 04͸
    ΞΠσΞͷๅݿ

    View Slide

  46. 04಺෦ͷٕज़ͷ֎ग़͠
    w ιϑτׂΓࠐΈʹΑΔ஗Ԇॲཧ
    w δϣϒΩϡʔͷΑ͏ͳඇಉظॲཧ
    w ׂΓࠐΈͱϙʔϦϯά
    w ϑϩϯτΤϯυʹ͓͚ΔϩϯάϙʔϦϯά΍
    4FSWFS4FOU&WFOUT
    w ϓϩηεεέδϡʔϥ
    w ྲྀߦΓͷ7.΍ίϯςφͷΦʔέετϨʔγϣ
    ϯ

    View Slide

  47. 04ͷٕज़Λ
    ࣗ෼ͷιϑτ΢ΣΞʹ
    ͱΓ͍Ε͍ͨ

    View Slide

  48. 04΍γεςϜιϑτ΢ΣΞ
    ͕޷͖ͳਓ΁
    IUUQIBUFOBDPSQKQSFDSVJUGSFTIPQFSBUJPOFOHJOFFS

    View Slide