フィードバック制御によるGoroutine起動数の最適化 / optimization-of-goroutine-numbers-by-feedback-control

フィードバック制御によるGoroutine起動数の最適化 / optimization-of-goroutine-numbers-by-feedback-control

2018.11.25 Go Conference 2018 Autumn
https://gocon.jp/
https://gocon.connpass.com/event/109368/
#gocon #gocon_a

Cd3d2cb2dadf5488935fe0ddaea7938a?s=128

monochromegane

November 25, 2018
Tweet

Transcript

  1. ࡾ୐༔հ / Pepabo R&D Institute, GMO Pepabo, Inc. 2018.11.25 Go

    Conference 2018 Autumn ϑΟʔυόοΫ੍ޚʹΑΔ Goroutineىಈ਺ͷ࠷దԽ
  2. ϓϦϯγύϧΤϯδχΞ ࡾ୐༔հ!NPOPDISPNFHBOF (.0ϖύϘגࣜձࣾϖύϘݚڀॴ IUUQTCMPHNPOPDISPNFHBOFDPN

  3. 3

  4. 1. ฒߦॲཧͱνϡʔχϯάʹ͓͚Δ՝୊ 2. KaburayaΞʔΩςΫνϟ 3. Goݴޠ΁ͷద༻ 4. ධՁ 5. ·ͱΊ

    4 ໨࣍
  5. 1. ฒߦॲཧͱνϡʔχϯάʹ͓͚Δ՝୊

  6. ΦϨ͸ΰϧʔνϯͰߦ͘ʂ

  7. • ϚϧνίΞ࣌୅ʹ͓͍ͯɼ୯ҰͷϚγϯͰॲཧੑೳΛ࠷େԽ͢ΔͨΊॲཧͷฒ ߦԽ͕ߦΘΕΔɽ • ࠷దͳฒߦ਺ΛٻΊ͍ͨɽ • ϊϯϒϩοΩϯάͳॲཧํࣜͰ͸࠷దͳฒߦ਺͸CPUίΞ਺ͱ౳͍͠ • ϒϩοΩϯά͕Ұ෦෼Ͱ΋ൃੜ͢Δ৔߹͸CPUίΞ਺Ҏ্͕࠷దʹͳΔ৔ ߹͕ଟ͍

    7 ฒߦॲཧͱ࠷దͳฒߦ਺
  8. • ϒϩοΩϯά͕ൃੜ͢Δঢ়گʹ͓͍ͯ͸ɼ࠷దͳฒߦ਺ͷܾఆ͸ґવͱͯ͠։ ൃऀͷܦݧͱ஍ಓͳνϡʔχϯάʹґଘ • nginx, unicornͷworker_processesɼSidekiqͷconcurrencyɼGoroutineͷ ىಈ਺ͳͲ • ࣮ߦ͞ΕΔॲཧͷಛੑͱϥϯλΠϜ΍εέδϡʔϦϯάͷಛੑΛߟྀͨ͠ νϡʔχϯά͕ඞཁ

    • ͜ΕΒΛશͯߟྀͨ͠ීวతͳνϡʔχϯάख๏ͷൃݟ͸ࠔ೉ 8 ࠷దͳฒߦ਺ΛٻΊΔ
  9. • ద੾ͳࢦඪ͕બఆͰ͖Ε͹୯७ͳࢦඪͰ΋ޮՌ͕͋Δ • Ծ૝αʔόͷ༧ଌతΦʔτεέʔϦϯά (*1)Ͱ͸ɼΞϓϦέʔγϣϯॲཧ಺ ༰Ͱ͸ͳ͘ɼӡ༻ܦݧ͔Βಘͨαʔό୯ҐͷεϧʔϓοτΛࢦඪͱͨ͠ɽ • ʮશࣗಈύϥϝʔλνϡʔχϯά͞Μʯ(*2)Ͱ͸ϝτϦΫεΛҰ఺ʹߜΓε ϧʔϓοτ͕࠷େԽ͢Δ஋Λ୳ࡧతʹٻΊͨɽ 9

    ैདྷख๏ *1. ࡾ୐ ༔հ, দຊ ྄հ, ྗ෢ ݈࣍, ܀ྛ ݈ଠ࿠, ΞΫηεස౓༧ଌʹجͮ͘Ծ૝αʔόͷܭըతΦʔτεέʔϦϯά, FIT 2018 ୈ17ճ৘ใ Պֶٕज़ϑΥʔϥϜ, CL-002, Sep 2018. *2. https://github.com/mirakui/tuningsan
  10. • ༧ଌతɼ୳ࡧతͳํࣜ͸WebαʔόʔϓϩηεͷΑ͏ʹ௕ظՔಈ͢Δ৔߹ʹ ޮՌత͕ͩɼCLIͷΑ͏ͳ୹ظՔಈͰଈ࣌݁Ռ͕ٻΊΒΕΔ৔߹ʹద༻͕೉͠ ͍ 10 ैདྷख๏ • ࢦඪͷݶఆʹՃ͑ɼ൓Ԡత͔ͭޡ͕ࠩগͳ͘ࢦඪ΁௥ै͢Δख๏͕ٻΊΒΕΔ

  11. 2. KaburayaΞʔΩςΫνϟ

  12. • ॲཧ΍ϥϯλΠϜͷಛੑʹґଘͤͣʹɼϚγϯͷෛՙʹԠͯ͡
 ൓Ԡత͔ͭܧଓతʹɼฒߦ਺Λ࠷దԽ͢Δ͜ͱ͸Մೳ͔ʁ 12 ຊݚڀͷʮ໰͍ʯ

  13. • ॲཧ΍ϥϯλΠϜͷಛੑʹґଘͤͣʹɼϚγϯͷෛՙʹԠͯ͡൓Ԡత͔ͭܧଓ తʹɼฒߦ਺Λ࠷దԽ͢Δ • 1. ॲཧ΍ϥϯλΠϜΛϒϥοΫϘοΫεͱͯ͠ѻ͍ɼܧଓతʹಈ࡞Λ੍ޚ͢ Δ࢓૊ΈͰ͋ΔϑΟʔυόοΫ੍ޚΛ༻͍ͯ࠷దͳฒߦ਺ΛٻΊΔ • 2. ฒߦ਺ͷ੍ޚʹηϚϑΥΛ༻͍Δ

    • Kaburaya is “ధ໼”. It is japanese arrow with a whistle. 13 Kaburaya ΞʔΩςΫνϟ
  14. • ໨ඪ஋ͱग़ྗͷϑΟʔυόοΫͷޡࠩΛ༻͍ͯγεςϜͷೖྗΛܾఆ͠ɼग़ྗ Λ໨ඪ஋ʹ͚ۙͮΔ • ภࠩΛॲཧ͢Δ੍ޚثɼͦͯ͠ೖྗͱग़ྗʹԿΛ༻͍Δ͔ͷઃܭ͕ॏཁ 14 ϑΟʔυόοΫ੍ޚ ੍ޚث γεςϜ ೖྗ

    ग़ྗ ภࠩ ϑΟʔυόοΫ ໨ඪ஋
  15. • ໨ඪ஋ͱͷࠩΛޮ཰తʹղফ͢ΔͨΊͷݹయత੍ޚख๏ • ൺྫ੍ޚ(P)ɼੵ෼੍ޚ(I)ɼඍ෼੍ޚ(D)ͷ࿨Λೖྗ஋ͱ͢Δ 15 PID੍ޚ(1/2) ੍ޚث ภࠩ ໨ඪ஋ 1

    Kpe(t) <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> * Ki Z t 0 e(r)dr <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> % Kd de(t) dt <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> r <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> e <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> γεςϜ  ϑΟʔυόοΫ ೖྗ ग़ྗ
  16. • ൺྫ੍ޚ(P)͸ภࠩʹൺྫ͢Δɽภ͕ࠩେ͖͍৔߹ʹେ͖͘मਖ਼ɽ • ੵ෼੍ޚ(I)͸ภࠩͷ૯࿨Λ༻͍ΔɽPͷ࢒ཹภࠩΛղফ͢Δɽ • ඍ෼੍ޚ(D)͸ภࠩͷඍ෼Λ༻͍Δɽ֎ཚ౳ʹΑΔٸมಈʹػහʹରॲ͢Δɽ 16 PID੍ޚ(2/2) ੍ޚث ภࠩ

    ໨ඪ஋ 1 Kpe(t) <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> <latexit sha1_base64="WSac9fWZ+QE538KWn4+gz2K9Jv4=">AAACmHichVG7SgNBFL1ZXzE+ErURbYIhEi3CrAiKVdBCxSYP85AYwu46iUv2xe4kEIM/YGclmErBQiz8Axsbf8AinyApI9hYePcBosF4l9m5c+aeM/dwRUORLUZIx8cNDY+MjvnHAxOTU9PB0MxsztLrpkSzkq7oZkEULKrIGs0ymSm0YJhUUEWF5sXajn2fb1DTknXtkDUNWlKFqiZXZElgCOUPygaNsZVyKELixIlwf8J7SQS8SOqhJziGE9BBgjqoQEEDhrkCAlj4FYEHAgZiJWghZmImO/cUziGA3DpWUawQEK3hv4qnoodqeLY1LYct4SsKLhOZYYiSV3JPeuSFPJA38vmnVsvRsHtp4i66XGqUgxfzmY9/WSruDE6/WQMYIla7nXXII/bVPVot5gd6ZFCBTcebjF4NB7FdS65O4+yql9lKR1vL5JZ00e8NKj+jstZ4l+5SNN3GcfG/h9Of5NbiPInzqfVIYtsbnB8WYQliOJ0NSMAeJCHr9HYJ19DmFrgEt8vtu6Wcz+PMwY/g0l/eDZev</latexit> * Ki Z t 0 e(r)dr <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> <latexit sha1_base64="aDkxGx5q/sb9YJIQEipbOLXS4BA=">AAACpnichVFNS+NQFD3Gz6lf1W4G3JQpSp1FuRFBcSW6EQakrVOrVM0k8amPpklIXgu1+Af8Ay5mMYwgKC78B7OZzfyBWfgTxKWCm1nMbRoQFfWGvHfeefecdy/X8h0ZKqLrLq27p7evf+BDYnBoeGQ0OTa+Hnr1wBYl23O8YMMyQ+FIV5SUVI7Y8ANh1ixHlK3qcvu+3BBBKD33q2r6Yrtm7rtyT9qmYspIpr4Ycku6yqAdlRbZYDq9GxjJDOUoivRLoMcggzjyXvIXtrALDzbqqEHAhWLswETIXwU6CD5z22gxFzCS0b3AERKsrXOW4AyT2Sqv+3yqxKzL57ZnGKltfsXhP2BlGpP0ly7ojv7QJd3Qv1e9WpFHu5Ym71ZHK3xj9Pjj2sO7qhrvCgePqjcUFmd3KrumK67rdvNzpfxmjwp7mI96k9yrHzHtru2OT+Pw5G5toTjZmqJTuuV+f7Lzb3Z2G/f2WUEUv/O49OfDeQnWZ3I65fTCbGZxKR7cACbwCVmezhwWsYI8SvxqEz9wjgstq61qJa3cSdW6Yk0KT0L79h9J15xt</latexit> % Kd de(t) dt <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> <latexit sha1_base64="pK4ns8fNxecVndhwIulsD6E0PEo=">AAACp3ichVHLSsNAFD2Nr/quj4XgplgUdVEmIiiuim4EF9rWPqRKSdKphqZJSKYFDf0Bf8CFGxVcVBf+gRs3/oALP0FcKrhx4W0aEBX1hsycOXPPmXu5qm3ormDsMSR1dHZ194R7+/oHBoeGIyOjWdeqORrPaJZhOXlVcbmhmzwjdGHwvO1wpaoaPKdW1lr3uTp3XN0yt8Whzfeqyr6pl3VNEUQVI+MbxVJ0t+womlfis2Ku4ZVEoxiJsTjzI/oTyAGIIYgtK3KLXZRgQUMNVXCYEIQNKHDpK0AGg03cHjziHEK6f8/RQB9pa5TFKUMhtkLrPp0KAWvSueXp+mqNXjHod0gZxTR7YE32wu7ZNXti7796eb5Hq5ZD2tW2ltvF4eOJ9Nu/qirtAgefqj8UKmW3K3tkN1TX8858IfdnjwJlLPu96dSr7TOtrrW2T/3o5CW9kpr2ZtgFe6Z+z8n5jpzN+qt2meSpUxqX/H04P0F2IS6zuJxcjCVWg8GFMYkpzNJ0lpDAOraQoVePcIYmrqQ5aVPKSvl2qhQKNGP4EpLyAfEdnZo=</latexit> r <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> e <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> γεςϜ  ϑΟʔυόοΫ ೖྗ ग़ྗ
  17. 1. ॳظ஋͔ΒϫʔΧʔ਺Λม͑ͳ͍FixController (ൺֱ༻) 2. CPU࢖༻཰100%Λ໨ඪ஋ͱ͠ɼෆ଍ͨ͠৔߹͸ workerΛ1ͣͭ૿Ճͤ͞Δ SimpleController 3. CPU࢖༻཰100%Λ໨ඪͱ͠ɼ໨ඪͱͷࠩ෼ͷKഒΛՃ͑Δ PController(ൺྫ੍ޚ)

    4. 3.ͷCPU࢖༻཰ͷ໨ඪ஋Λ90%ͱͨ͠΋ͷ 5. ௚ۙ3؍ଌ఺ͷฏۉΛ໨ඪ஋ͱͯ͠3؍ଌ͝ͱʹPControllerͷ໨ඪ஋ΛมԽͤ͞ΔDynamicController 6. ҰఆظؒͷCPU࢖༻཰ͷඪ४ภࠩΛͱͬͯͦΕ͕Ұఆͷ஋ҎԼͩͬͨΒ҆ఆͨ͠ͱΈͳͯ͠ɼworkerΛݮΒ͍ͯ͠ ͘StabilityController 7. CPU࢖༻཰Ͱ͸ͳͯ͘CPU࢖༻཰ͷมԽ཰Λݩʹ੍ޚ͢ΔRateController 8. 5.ͷDynamicControllerΛݩʹఆظͰ͸ͳ͘େ͖ͳมಈ͝ͱʹ໨ඪ஋Λݟ௚͢ํࣜ 9. 8.ͷDynamicControllerΛݩʹఆৗ࣌ͷෆཁͳworkerΛ࡟ݮ͢Δํࣜ 10. 9.ͷDynamicControllerΛݩʹมಈͷਫ਼౓ͱ଎౓Λ޲্ͤ͞ΔͨΊʹੵ෼ඍ෼੍ޚΛಋೖ͢Δํࣜ 17 ࠷దͳ੍ޚثΛٻΊͯ
  18. • ઃܭ੍ͨ͠ޚثΛฒߦԽ͞ΕͨλεΫΛܭ ࢉࢿݯ্ݶ·Ͱฒྻॲཧ͢Δ؆қతͳγϛϡ ϨʔλͰධՁ 18 ؆қධՁ • λεΫಛੑʹΑͬͯCPU্ݶ͸ҟͳΔ • ࠷దͳฒߦ਺͸࣮ߦ࣌ͷΈ൑அͰ͖ΔͨΊ

    CPU࢖༻཰͕ҰఆͱͳΔΑ͏ʹ૿ݮ͕ඞཁ • CPU࢖༻཰ͷ૿ݮΛܖػʹ໨ඪ஋Λݟ௚͢ ͜ͱ͕௥ै଎౓ͷ޲্ʹޮՌ͋Γ
  19. 19 Kaburaya: DynamicTargetController ภࠩ ໨ඪ஋ 1 * % r <latexit

    sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> <latexit sha1_base64="l3XaGwPmE5Vm/Jhs1LG2xz0k9Bs=">AAACknichVG7SgNBFD1ZXzE+Eh+FYCMGRSzCrAiKVdTGwsIk5iFRZHcddchmd9mdBDT4A9oqFlYKFmLhH9jY+AMWfoKkjGBj4c1mQVTUu+zMmTP3nLmXqzum8CRjzyGlrb2jsyvcHenp7euPxgYGc55dcQ2eNWzTdgu65nFTWDwrhTR5wXG5VtZNntdLy837fJW7nrCtdXng8K2ytmeJXWFokqiUux2LswTzY+wnUAMQRxBrduwem9iBDQMVlMFhQRI2ocGjrwgVDA5xW6gR5xIS/j3HESKkrVAWpwyN2BKte3QqBqxF56an56sNesWk3yXlGCbYE7thDfbIbtkLe//Vq+Z7NGs5oF1vabmzHT0eybz9qyrTLrH/qfpDoVN2q7Jndkd11Temi/k/e5TYxbzfm6BeHZ9pdm20fKqH543MQnqiNsmuWJ36vSTnB3K2qq/GdYqnL2hc6vfh/AS5mYTKEmpqNp5cCgYXxijGMUXTmUMSK1hDll7lOMEpzpRhZUFZVJZbqUoo0AzhSyirH/1ElaE=</latexit> e <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> <latexit sha1_base64="JucbY3V7iD4pyjirU4Kr9PWwJLM=">AAACknichVG7SgNBFD1Z3/EVH4VgIwZFLMKsCEoqNY2FRR7GKFFkdx11cLO77E4CMfgD2ioWVgoWYuEf2Nj4AxZ+glgq2Fh49wGiot5lZ86cuefMvVzdMYUnGXuMKU3NLa1t7R3xzq7unt5EX/+KZ1ddgxcN27TdVV3zuCksXpRCmnzVcblW0U1e0vcy/n2pxl1P2NayrDt8o6LtWGJbGJokKsc3E0mWYkGM/ARqBJKIImsnbrGOLdgwUEUFHBYkYRMaPPrKUMHgELeBBnEuIRHccxwgTtoqZXHK0Ijdo3WHTuWItejse3qB2qBXTPpdUo5gjD2wK/bC7tk1e2Lvv3o1Ag+/ljrteqjlzmbv4VDh7V9VhXaJ3U/VHwqdssPKHtkN1fW8Nlku/dmjxDZmg94E9eoEjN+1EfrU9k9fCun8WGOcXbBn6vecnO/I2aq9Gpc5nj+jcanfh/MTrEylVJZSc9PJuYVocO0YxigmaDozmMMisijSqxxHOMaJMqiklXklE6YqsUgzgC+hLH0A4O6VlA==</latexit> (PBQQ  ϑΟʔυόοΫ 4FNBQIPSF $166TBHF มԽ཰ • ฒྻॲཧͷݶ౓ͱͳΔCPU࢖༻཰Λ࣮ߦ࣌ʹଊ͑ΔͨΊ໨ඪ஋ΛมԽ཰͔Βߋ ৽͢Δೋॏϧʔϓ੍ޚثΛ࣮૷ɽ • ಺ଆͷϧʔϓ͸ฒߦ਺ΛೖྗɼCPU࢖༻཰Λग़ྗͱ͢ΔPID੍ޚث
  20. • ༧ߘʮKaburaya: CPUෛՙʹԠͯ͡ܧଓతʹ্ݶ஋Λ࠷దԽ͢ΔಈతηϚ ϑΥʯͱͯ͠ୈ3ճWeb System Architectureݚڀձˏ౦ژ #wsaݚͰൃද • https://blog.monochromegane.com/blog/2018/11/25/wsa_3_kaburaya/ •

    https://speakerdeck.com/monochromegane/wsa-3-kaburaya 20 ༧ߘ
  21. 3. Goݴޠ΁ͷద༻

  22. 22 • CPUό΢ϯυͳॲཧͱͯ͠ϑΟϘφον(35)ͱ(10)ΛҰఆճ਺ٻΊΔॲཧ࣌ؒΛܭଌ • CPUΛ100%࢖͍੾ΔΑ͏ͳ৔߹͸ίΞ਺Ҏ্ͷฒߦ਺͸ੑೳ޲্͠ͳ͍ • CPUʹ༨༟͕͋Δ৔߹͸ίΞ਺Ҏ্ͷฒߦ਺Ͱ΋ੑೳ޲্ͷ༨஍͕͋Δ

  23. 23 • ϒϩοΩϯάॲཧͱͯ͠Sleep΍NetworkΛҰఆճ਺ߦ͏ॲཧ࣌ؒΛܭଌ • ඇৗʹ୹͍SleepͰ͸ίΞ਺Ҏ্ͷฒߦ਺Ͱ΋ੑೳ޲্ͷ༨஍͕͋Δ • ωοτϫʔΫॲཧͰ͸଴ͪͷ௕͕͞ฒྻԽͷԸܙΛͳͨ͘͢Ίੑೳ޲্͕ฒߦ਺ʹґଘ

  24. 24 • ϥϯλΠϜ͸ٖࣅతͳฒྻԽ΋͘͠͸ϚϧνίΞΛར༻͢ΔฒྻԽΛఏڙ͢Δ͕ɼδϣϒͷಛ ੑʹΑͬͯɼλεΫॲཧ࣌ͷCPU࢖༻཰͸CPU্ݶ΋͘͠͸ಛఆͷ࣌఺ͰมԽ͠ͳ͘ͳΔ

  25. • λεΫͷಛੑɼϥϯλΠϜͷಛੑʹΑͬͯ࠷దͳฒߦ਺͸ҟͳΔɽ • ฒྻॲཧͷ݁ՌɼCPU࢖༻཰͕CPU্ݶ·ͨ͸Ұఆ஋Ͱۉߧ͢Δɽ 25 ฒߦ਺ͷࢉग़ • KaburayaΞʔΩςΫνϟͷલఏʹԊ͏͜ͱ͔Βɼ੍ޚثͱͯ͠ DynamicTargetControllerΛར༻

  26. Goݴޠʹ͓͚ΔόοϑΝ෇͖νϟϯωϧΛ ηϚϑΥͱ͢Δಉ࣮࣌ߦ਺੍ޚ 26 ฒߦ਺ͷ੍ޚ func main() { var wg sync.WaitGroup

    sem := make(chan struct{}, 3) for i := 0; i < 10; i++ { wg.Add(1) sem <- struct{}{} go func() { defer wg.Done() defer func() { <-sem }() task() }() } wg.Wait() close(sem) } • ηϚϑΥͷ্ݶ஋͕ಈతʹมߋՄೳͰ ͋Δ͜ͱ • ௨ৗͷηϚϑΥͱಉ༷ʹPૢ࡞ʹ͓͍ ͯ஋͕ෛʹͳΔ৔߹ʹ࣮ߦ͕ϒϩοΫ ͞ΕΔ͜ͱ • ͜ΕΒͷ஋ͷมߋ͕ΞτϛοΫʹߦΘ ΕΔ͜ͱ • ্ݶ஋ΛมߋՄೳͳόοϑΝ෇͖νϟ ϯωϧ͕ඞཁ
  27. • ೖྗͱग़ྗͷೋͭͷνϟϯωϧͱΩϡʔΛ΋ͭߏ଄ମ • Ωϡʔͷঢ়ଶʹԠͯ͡ೖྗͱग़ྗͷՄ൱Λ੍ޚ͢Δ • Ref: https://github.com/npat-efault/musings/wiki/Elastic-channels • Kaburaya༻్Ͱ͸Ωϡʔͷ஋Λར༻͢Δ͜ͱ͸ͳ͍ͷͰΧ΢ϯλͰ୅༻ 27

    όοϑΝ্ݶ஋ΛมߋՄೳͳElasticChannel DIBO DIBO &MBTUJD$IBOOFM 2VFVF &NQUZ*OPOMZ 'VMM0VUPOMZ 0UIFS*O0VU $IBOHFMJNJU
  28. • Kaburaya optimize the number of goroutines by feedback control.

    28 monochromegane/kaburaya func main() { sem := kaburaya.NewSem(100 * time.Millisecond) var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) sem.Wait() go func() { defer sem.Signal() defer wg.Done() task() }() } wg.Wait() sem.Stop() } Create semaphore and specify time span for update the semaphore and CPU target. Wait for decrement operation. Increment operation. Stop update the semaphore and CPU target.
  29. 4. ධՁ

  30. • ߴ଎Խ཰(Speedup): ஞ࣮࣍ߦ࣌ؒͱฒྻ࣮ߦ࣌ؒͷൺ཰ • ࣮ߦޮ཰(Efficiency): ฒߦ਺͋ͨΓͷߴ଎Խ཰ɽܭࢉࢿݯͷޮ཰ੑࢦඪɽ 30 ࠷దͳฒߦ਺ͱ͸ $ ./score

    fib 40 64 [S] 41.20142734s [1] 40.94367043s -> Speedup: 1.006301 Efficiency: 1.006301 [2] 21.138453817s -> Speedup: 1.949144 Efficiency: 0.974572 [4] 12.296148779s -> Speedup: 3.350764 Efficiency: 0.837691 [8] 12.371473761s -> Speedup: 3.330450 Efficiency: 0.416306 [16] 12.385120065s -> Speedup: 3.326686 Efficiency: 0.207918 • ͳ͓ɼKaburayaͰ͸ฒߦ਺͕૿ݮ͠ɼಛੑ্֎Ε஋ؚ͕·ΕΔ͜ͱ͔Βɼ࣮ ߦޮ཰ͷฒߦ਺ʹ͸ɼॲཧظؒͷฒߦ਺ͷதԝ஋Λ༻͍Δ
  31. network(1) * 8192 31 $ ./score network 1 8192 2>

    record.txt [S] 18.906590961s [1] 18.114622479s -> Speedup: 1.043723 Efficiency: 1.043723 [2] 8.311113276s -> Speedup: 2.274817 Efficiency: 1.137408 [4] 3.406973694s -> Speedup: 5.550793 Efficiency: 1.387698 [8] 1.690554271s -> Speedup: 11.186982 Efficiency: 1.398373 [16] 920.629201ms -> Speedup: 20.550000 Efficiency: 1.284375 [32] 664.033522ms -> Speedup: 28.472892 Efficiency: 0.889778 [64] 655.373022ms -> Speedup: 28.864122 Efficiency: 0.451002 [K] 738.116568ms -> Speedup: 25.617886 Efficiency: 0.711608 • K{p,i,d}=0.25ɼDuration=50ms • CPU্ݶʹୡ͠ͳ͍λεΫʹରͯ͠ൺֱతଥ౰ͳฒߦ਺ͷ੍ޚ͕ߦ͑ͨɽ
  32. fib(40) * 64 32 $ ./score fib 40 64 2>

    record.txt [S] 42.498952641s [1] 42.727265764s -> Speedup: 0.994640 Efficiency: 0.994640 [2] 21.084712153s -> Speedup: 2.015652 Efficiency: 1.007826 [4] 11.907186913s -> Speedup: 3.569161 Efficiency: 0.892290 [8] 12.128384712s -> Speedup: 3.504123 Efficiency: 0.438015 [16] 11.923092477s -> Speedup: 3.564371 Efficiency: 0.222773 [32] 11.911846969s -> Speedup: 3.567962 Efficiency: 0.111499 [64] 11.459039734s -> Speedup: 3.708701 Efficiency: 0.057948 [K] 13.368050152s -> Speedup: 3.179084 Efficiency: 0.635817 • K{p,i,d}=0.05ɼDuration=50ms • CPU্ݶʹୡ͢ΔλεΫʹରͯ͠ൺֱతଥ౰ͳฒߦ਺ͷ੍ޚ͕ߦ͑ͨɽ • λεΫ׬ྃ·ͰͷσΟϨΠʹΑͬͯηϚϑΥ஋ͷ௿ݮ͕ਐΈ͗͢Δ܏޲͋Γ
  33. fib(15) * 3276800 33 $ ./score fib 15 3276800 2>

    record.txt [S] 13.069192052s [1] 15.275737367s -> Speedup: 0.855581 Efficiency: 0.855581 [2] 10.518883281s -> Speedup: 1.242537 Efficiency: 0.621268 [4] 6.452542685s -> Speedup: 2.025573 Efficiency: 0.506393 [8] 4.261144318s -> Speedup: 3.067120 Efficiency: 0.383390 [16] 4.173533581s -> Speedup: 3.131800 Efficiency: 0.195737 [32] 4.096993901s -> Speedup: 3.190674 Efficiency: 0.099709 [64] 4.111361424s -> Speedup: 3.179032 Efficiency: 0.049672 [K] 15.535130172s -> Speedup: 0.841262 Efficiency: 0.052579 • K{p,i,d}=0.01ɼDuration=50ms • CPUෛՙͷগͳ͍େྔͷλεΫʹରͯ͠͸ߴ଎Խ཰ɼ࣮ߦޮ཰ͷ྆໘Ͱࣦഊ • ݱ࣮૷Ͱ͸ElasticChannelͷWaitૢ࡞Ͱbuffer0ͷChannel͕ϘτϧωοΫ
  34. • ϑΟʔυόοΫ੍ޚҰൠʹର͢Δ՝୊ • ήΠϯ(K{p,i,d})ͷ࠷ద஋ΛٻΊΔඞཁ͕͋Δ • σΟϨΠʹΑΔௐ੔ޡࠩΛݮΒ͢ඞཁ͕͋Δ • ϑΟʔυόοΫ੍ޚ෼໺ͷϊ΢ϋ΢Λ༗ޮ׆༻ͯ͠ղܾ͍ͨ͠ • ࣮૷ʹର͢Δ՝୊

    • GoݴޠʹΑΔಈతηϚϑΥͷੑೳ໰୊Λղܾ͢Δඞཁ͕͋Δ • System V semaphoreͳͲ௿ϨΠϠ࣮૷Ͱղܾ͍ͨ͠ 34 ՝୊ͱରԠࢦ਑
  35. 5. ·ͱΊ

  36. • ॲཧ΍ϥϯλΠϜͷಛੑʹґଘͤͣʹɼϚγϯͷෛՙʹԠͯ͡൓Ԡత͔ͭܧଓ తʹɼฒߦ਺Λ࠷దԽ͢Δख๏ͱͯ͠ɼCPUෛՙʹԠͯ͡ܧଓతʹ্ݶ஋Λ࠷ దԽ͢ΔKaburayaΞʔΩςΫνϟΛGoݴޠʹద༻ • ฒߦ਺ͷ૿Ճ͕ੑೳʹد༩͢ΔλεΫʹ͓͍ͯ͸ɼଥ౰ͳฒߦ਺Λࢉग़Մೳ • ࠓޙ͸՝୊Λղܾͯ͠ਫ਼౓ͱ଎౓Λ޲্ͤ͞ɼݴޠΛ௒͑ͨ൚༻ੑΛ໨ࢦ͢ • Go

    36 ·ͱΊ
  37. None