Slide 1

Slide 1 text

ʲଓฤʳͦͷ IONICE ɺ ΄Μͱʹޮ͍ͯ·͔͢ʁ גࣜձࣾϋʔτϏʔπ @nari_ex ߴଜ੒ಓ

Slide 2

Slide 2 text

͓͞Β͍ ionice ͸ҎԼͷ ̎৚݅Λຬͨͨ࣌͠ʹͪΌΜͱ ಈ͘ I/O Scheduler ͕ CFQ ಛఆͷI/Oॲཧ Ωϟογϡ͞Ε͍ͯͳ͍ϑΝΠϧ΁ͷRead ಛघϑϥάͷཱͬͨ Write

Slide 3

Slide 3 text

ΜɺͳΜͰ(ɾ΁ɾ)ʁ

Slide 4

Slide 4 text

CFQ ͡Όͳ͍ͱޮ͔ͳ͍ཧ༝

Slide 5

Slide 5 text

VFS Χʔωϧۭؒ γεςϜίʔϧ Ϣʔβۭؒ ෺ཧ σόΠε ϑΝΠϧγεςϜ σΟεΫΩϟογϡ ൚༻ϒϩοΫ૚ ෺ཧ σόΠε ϓϩηε I/Oεέδϡʔϥ σόΠε υϥΠό σόΠε υϥΠό I/Oεέδϡʔϥ I/O ͷ֓೦ਤ

Slide 6

Slide 6 text

I/O εέδϡʔϥ֓ཁ I/O

Slide 7

Slide 7 text

I/O εέδϡʔϥͷ αϒΩϡʔʹ஫໨

Slide 8

Slide 8 text

݁࿦: CFQ Ҏ֎ɺ༏ઌ౓Λߟྀͯ͠ ࣮૷͞Εͯͳ͍

Slide 9

Slide 9 text

୅දతͳI/Oεέδϡʔϥ • NOOP • DEADLINE • CFQʢCompletely Fair Queuingʣ

Slide 10

Slide 10 text

• ཁٻΛσΟεύονΩϡʔʹಥͬࠐΉ͚ͩ • No Operation NOOP I/O εέδϡʔϥ

Slide 11

Slide 11 text

NOOP I/O εέδϡʔϥ I/O શ෦ೖΓͷFIFOΩϡʔ͕͋Δ͚ͩ

Slide 12

Slide 12 text

• ReadͱWriteͰΩϡʔ͕ผ • Read ༏ઌ • ظݶʢdeadlineʣ෇͖Ωϡʔ͕ಛ௃ • ظݶ͕੾Εͨཁٻ͸࠷༏ઌͰॲཧ͢Δ DEADLINE I/O εέδϡʔϥ

Slide 13

Slide 13 text

DEADLINE I/O εέδϡʔϥ I/O READ ͱ WRITE ͷΩϡʔ͕͋Δ͚ͩ

Slide 14

Slide 14 text

• ϓϩηε͝ͱʹαϒΩϡʔΛ༻ҙ • ༏ઌ౓Λߟྀͯ͠Ωϡʔ͝ͱͷॲཧ࣌ؒΛܾఆ • ̍ͭͷαϒΩϡʔΛΞΫςΟϒΩϡʔͱͯ͠ɺͦͷ Ωϡʔ಺ͷཁٻΛॲཧ࣌ؒͷൣғͰॲཧ͢Δ • ॲཧ͕࣌ؒऴΘΔͱΞΫςΟϒΩϡʔ͕੾ΓସΘΔ CFQ I/O εέδϡʔϥ

Slide 15

Slide 15 text

CFQ I/O εέδϡʔϥ ϓϩηε͝ͱʹΩϡʔ͕͋Δ I/O …"

Slide 16

Slide 16 text

CFQ I/O εέδϡʔϥ I/O …" ΞΫςΟϒʹͳͬͨΩϡʔʹ͋Δ ཁٻ͕ॲཧ͞ΕΔ ௿༏ઌ౓ϓϩηεͷαϒΩϡʔ͸ ΞΫςΟϒʹͳ͔ͳ͔ͳΒͳ͍ && ͳͬͯ΋͙͢ʹελϯόΠʹͳΔ

Slide 17

Slide 17 text

ಛఆͷI/O͡Όͳ͍ͱޮ͔ͳ͍ཧ༝

Slide 18

Slide 18 text

σΟεΫΩϟογϡͷޮ͍ͨREAD ϓϩηεۭؒ σΟεΫΩϟογϡ ෺ཧσόΠε σΟεΫΩϟογϡͷ σʔλΛฦ͢

Slide 19

Slide 19 text

σΟεΫΩϟογϡͷͳ͍READ ϓϩηεۭؒ σΟεΫΩϟογϡ ෺ཧσόΠε

Slide 20

Slide 20 text

σΟεΫΩϟογϡͷͳ͍READ ϓϩηεۭؒ σΟεΫΩϟογϡ ෺ཧσόΠε σΟεΫΩϟογϡ࡞੒ σΟεΫΩϟογϡͷ σʔλΛฦ͢

Slide 21

Slide 21 text

ී௨ͷWRITEʢ஗Ԇ WRITEʣ ϓϩηεۭؒ σΟεΫΩϟογϡ ෺ཧσόΠε ޙͰॻ͖ࠐΈ σΟεΫΩϟογϡʹ ίϐʔΛͯ͠ऴྃ

Slide 22

Slide 22 text

ී௨ͷWRITEʢ஗Ԇ WRITEʣ ϓϩηεۭؒ σΟεΫΩϟογϡ ෺ཧσόΠε ޙͰॻ͖ࠐΈ σΟεΫΩϟογϡʹ ίϐʔΛͯ͠ऴྃ ୭͕΍Δͷʁ

Slide 23

Slide 23 text

ఆظతʹLINUX Χʔωϧ͕ॻ͖ࠐΜͰ·͢ɻ ※͔ͩΒ IONICE ͕ޮ͔ͳ͍

Slide 24

Slide 24 text

ఆظతͳಉظॲཧ

Slide 25

Slide 25 text

ಛघͳϑϥάͷཱͬͨI/O ϓϩηεۭؒ σΟεΫΩϟογϡ ෺ཧσόΠε ΩϟογϡΛܦ༝ͤͣ ௚઀σόΠεʹಡΈॻ͖͢Δ

Slide 26

Slide 26 text

࣭໰ίʔφʔ