Slide 1

Slide 1 text

ͦͷ IONICE, ΄Μͱʹޮ͍ͯ·͔͢ʁ TAKAMURA Narimichi @nari_ex hbstudy-2014-08-14

Slide 2

Slide 2 text

what is ionice ? I/O ͷॲཧ༏ઌ౓Λࢦఆ͢ΔLinuxίϚϯυ nice ίϚϯυͷ I/O όʔδϣϯ nice ίϚϯυͰ͸ I/O ༏ઌ౓Λ੍ޚෆՄ

Slide 3

Slide 3 text

I/O ༏ઌ౓Ϋϥε RT ( Real-time ) ࠷ߴ༏ઌ౓ BE ( Best-Effort ) σϑΥϧτ༏ઌ౓ Idle ࠷௿༏ઌ౓

Slide 4

Slide 4 text

BE: Ϋϥε಺༏ઌ౓ BE ΫϥεͷΈɺΫϥε಺༏ઌ౓͕͋Δ ༏ઌ౓͸ 0ʙ7 ·Ͱͷ 8ஈ֊ 0͕࠷ߴ༏ઌ౓ɺ7͕࠷௿༏ઌ౓ ༏ઌ౓͸Ϋϥεͷ࿮Λ௒͑ͳ͍ RT > BE (0) IDLE < BE (7)

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

How to ionice RT ΫϥεΛࢦఆ: ionice -c1 BE ΫϥεΛࢦఆ: ionice -c2 -n <0ʙ7> IDLE ΫϥεΛࢦఆ: ionice -c3

Slide 7

Slide 7 text

༨ஊ: nice ίϚϯυ Ϋϥε͸ͳ͍ ༏ઌ౓ ( nice஋ ) ͸ -20ʙ19 -20 ͕࠷ߴ༏ઌ౓ɺ19͕࠷௿༏ઌ౓

Slide 8

Slide 8 text

ෛՙΛ࠷খݶʹ཈͍͑ͨʂ

Slide 9

Slide 9 text

ionice, nice Λۦ࢖ͯ͠…

Slide 10

Slide 10 text

# ionice -c3 nice -n19

Slide 11

Slide 11 text

͜ΕͰ׬ᘳͩʂʂʂ

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

ͪΐͬͱ·ͬͯ

Slide 14

Slide 14 text

ͦͷ IONICE, ΄Μͱʹޮ͍ͯ·͔͢ʁ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

ionice ͕ޮ͘৚݅ I/O εέδϡʔϥ ReadͳͷʁWriteͳͷʁϑϥά͸ʁ ϑΝΠϧ࡞੒ϑϥά Ωϟογϡͷ༗ແ

Slide 17

Slide 17 text

I/O Scheduler…

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

৚݅ͦͷ̍: I/O Scheduler(1) CFQ εέδϡʔϥҎ֎͸ແཧ Linux ඪ४ͷεέδϡʔϥ͸ CFQ Amazon Linux ͸ Noop ͳͷͰ஫ҙ Unbreakable Linux ͸ Deadline ͳ ͷͰ஫ҙ

Slide 20

Slide 20 text

σόΠεͻͱͭʹI/Oεέδϡʔϥͻͱͭ σόΠεΛ·͙ͨॲཧͷ৔߹ʹ஫ҙ ॲཧʹؔΘΔ͢΂ͯͷσόΠεΛ֬ೝͤΑ # cat /sys/block//queue/ scheduler ৚݅ͦͷ̍: I/O Scheduler(2)

Slide 21

Slide 21 text

৚݅ͦͷ̎: I/Oॲཧͷ಺༰(1) Write() ͸جຊతʹޮ͔ͳ͍ O_DIRECT, O_SYNC Λϑϥάཱͯ ͯΕ͹OK -o sync ͰϚ΢ϯτ͞ΕͨϑΝΠϧ γεςϜͳΒOK

Slide 22

Slide 22 text

৚݅ͦͷ̎: I/Oॲཧͷ಺༰(2) Read() ΋͢΂ͯʹޮ͘Θ͚Ͱ͸ͳ͍ σΟεΫΩϟογϡ͕͋Δͱμϝ σΟεΫΞΫηεͳ͍͔Β౰વ

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

͍͞͝ʹ man ioprio_set Λಡ΋͏ ϑΝΠϧ࡞੒ϑϥάͷࡉ͔͍͜ͱ͸·ͨࠓ౓ O_SYNC, O_DSYNC, O_FSYNC… ionice -p Λ࢖͏ͱɺىಈதͷϓϩη εͷI/O༏ઌ౓มߋͰ͖ΔΑ