Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
(LINUXの)お仕事メリハリ術♪  -プロセススケジューラ編-        1
自己紹介          2 山田 賢 北田 章 牧野 恵
はじめに               3 今回の内容が直接お仕事に役立つ機会は多くないか も・・・ Linuxを愛用する立場として、Linuxのメリハリ術を 楽しむスタンスで聞いて頂けると幸いです
目次              4 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
スケジューラの概要                51. 各CPUにプロセスを割り振り2. プロセスの優先順位とタイムスライスを決定    プロセス        割り振り             スケジューラ                 ...
スケジューラの概要                       61. 各CPUにプロセスを割り振り2. プロセスの優先順位とタイムスライスを決定            20ms実行       3番        1番          2番...
スケジューラが×で何が困る?             7 仕事がたくさんあるのにCPUを使いきってくれない            割り振り                   CPU0                   CPU1 プロセス投...
スケジューラが×で何が困る?             8 仕事がたくさんあるのにCPUを使いきってくれない            割り振り                    CPU0                    CPU1 プロセ...
スケジューラが×で何が困る?                 9 優先してほしいプロセスを優先しない       選択        CPU使用率        CPU使用率           50%           50%      ...
スケジューラが×で何が困る?                 10 優先してほしいプロセスを優先しない       選択        CPU使用率         CPU使用率           50%            50%   ...
スケジューラが×で何が困る?                  11 条件が同じプロセスに対して同じ時間CPUを使わせない        選択         CPU使用率        CPU使用率            90%      ...
スケジューラが×で何が困る?                  12 条件が同じプロセスに対して同じ時間CPUを使わせない        選択         CPU使用率          CPU使用率            90%    ...
一般的なスケジューラの目的                   13 CPU使用率の公平性を保証    ユーザ間    プロセスグループ間    プロセス間    CPU間    etc., 性能の向上    次に実行するプロセ...
スケジューラの                     インパクト事例                              14 gihyo.jp, “2010年11月18日                    "ミラクルパッチ"に ...
スケジューラの                     インパクト事例                              15 gihyo.jp, “2010年11月18日                    "ミラクルパッチ"に ...
スケジューラのことを         知って嬉しいこと               16 急いで実行すべき仕事の優先順位を上げられる   動画再生アプリケーションなど 急いでいない仕事の優先順位を下げられる   周囲からの好感度向上(?...
目次              17 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
スケジューリングに            影響する項目                  18 CPUアフィニティ スケジューリングポリシー 静的優先度 nice値とCPU使用時間 etc.,
CPUアフィニティ                  19 プロセスをどのCPUで実行するか指定                 0のみ             両方     1のみ     OK                       ...
スケジューリングポリシー                            20優先順位           ポリシー名             リアルタイム    特徴 高い                          /通常/その...
静的優先度                      21  リアルタイムプロセスの優先順位を決定  値が小さいほど優先順位は高い  絶対的な優先度  1から99までの値をとる                   ※便宜上、一般的にはノ...
nice値とCPU使用時間                           22  通常プロセスの優先度とタイムスライスを決定  優先度はCPU使用時間とnice値を掛け合わせて決定  タイムスライスはプロセス間のnice値の割合で決...
スケジューリングに           影響する項目おさらい                    23 実行CPU   CPUアフィニティ 実行順序   スケジューリングポリシー   静的優先度   nice値とCPU使用時間 ...
目次              24 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
スケジューラで遊ぼう        お仕事メリハリ術デモ              25 コマンドラインからスケジューリングに影響する項目を変更してみましょう 紹介するコマンド   taskset   chrt   nice   r...
taskset                           26 tasksetで各プロセスが実行するCPUを指定可能 CPUを指定してプロセスを起動    $ taskset -c 0,1,5 ./a.out 実行中のプロセス(...
chrt                            27 プロセスのポリシーと静的優先度を変更 静的優先度の設定では1から99の範囲で値を指定   99が最大の優先度(静的優先度の1)となる FIFOかつ静的優先度20でプロ...
nice                           28 nice値をプログラム起動時に指定 一般ユーザはnice値を下げれない 高い値ほど他のプロセスにCPUを譲るのでniceな値 nice値10を指定してプログラムを起動 ...
renice                          29 実行中のプロセスのnice値を変更 プロセスID:4559のnice値を+10   $ renice +10 4559 実行ユーザがyahooのプロセスのnice値を2...
まとめ               30 プロセスはプロセスに設定された様々な項目に基づ いてスケジューリングされる 上記の項目はコマンドラインから変更可能   Linuxで遊べる作業効率化   静的優先度の表示や設定基準値などは、コマ...
目次              31 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
デベロッパーの方へ                     32 YJDN (Yahoo! JAPAN Developer Network)   Yahoo! JAPANのサービスを利用するAPIを提供しています   http://dev...
33 ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)

6,847 views

Published on

スケジューラによる効率的なCPU利用を説明します♪

Linux女子会 - お仕事メリハリ術♪(プロセススケジューラ編)

  1. 1. (LINUXの)お仕事メリハリ術♪ -プロセススケジューラ編- 1
  2. 2. 自己紹介 2 山田 賢 北田 章 牧野 恵
  3. 3. はじめに 3 今回の内容が直接お仕事に役立つ機会は多くないか も・・・ Linuxを愛用する立場として、Linuxのメリハリ術を 楽しむスタンスで聞いて頂けると幸いです
  4. 4. 目次 4 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
  5. 5. スケジューラの概要 51. 各CPUにプロセスを割り振り2. プロセスの優先順位とタイムスライスを決定 プロセス 割り振り スケジューラ CPU0 プロセス 割り振りプロセス投入 CPU1
  6. 6. スケジューラの概要 61. 各CPUにプロセスを割り振り2. プロセスの優先順位とタイムスライスを決定 20ms実行 3番 1番 2番 4番 CPU0
  7. 7. スケジューラが×で何が困る? 7 仕事がたくさんあるのにCPUを使いきってくれない 割り振り CPU0 CPU1 プロセス投入 割り振り
  8. 8. スケジューラが×で何が困る? 8 仕事がたくさんあるのにCPUを使いきってくれない 割り振り CPU0 CPU1 プロセス投入 割り振り いいPC買ったのに 活用してくれない・・・
  9. 9. スケジューラが×で何が困る? 9 優先してほしいプロセスを優先しない 選択 CPU使用率 CPU使用率 50% 50% CPU0
  10. 10. スケジューラが×で何が困る? 10 優先してほしいプロセスを優先しない 選択 CPU使用率 CPU使用率 50% 50% CPU0 同時実行プロセスのせいで 動画がカクカクする・・・
  11. 11. スケジューラが×で何が困る? 11 条件が同じプロセスに対して同じ時間CPUを使わせない 選択 CPU使用率 CPU使用率 90% 10% CPU0
  12. 12. スケジューラが×で何が困る? 12 条件が同じプロセスに対して同じ時間CPUを使わせない 選択 CPU使用率 CPU使用率 90% 10% CPU0 私のJavaプログラムの実行 だけいつも遅い・・・
  13. 13. 一般的なスケジューラの目的 13 CPU使用率の公平性を保証  ユーザ間  プロセスグループ間  プロセス間  CPU間  etc., 性能の向上  次に実行するプロセスを高速に決定  ハードウェア特性を活用するCPU間振り分け、実行順序、タイムスラ イスの決定  etc.,
  14. 14. スケジューラの インパクト事例 14 gihyo.jp, “2010年11月18日 "ミラクルパッチ"に Linusも大喜び!Linuxカーネルを高速化させた233 行のコード”,  http://gihyo.jp/admin/clip/01/linux_dt/201011/18 = = 以前は対等に扱っていたプロセスを・・・
  15. 15. スケジューラの インパクト事例 15 gihyo.jp, “2010年11月18日 "ミラクルパッチ"に Linusも大喜び!Linuxカーネルを高速化させた233 行のコード”,  http://gihyo.jp/admin/clip/01/linux_dt/201011/18 用途に合わせて自動的に グループ化
  16. 16. スケジューラのことを 知って嬉しいこと 16 急いで実行すべき仕事の優先順位を上げられる  動画再生アプリケーションなど 急いでいない仕事の優先順位を下げられる  周囲からの好感度向上(?) Linux自体に詳しく慣れる
  17. 17. 目次 17 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
  18. 18. スケジューリングに 影響する項目 18 CPUアフィニティ スケジューリングポリシー 静的優先度 nice値とCPU使用時間 etc.,
  19. 19. CPUアフィニティ 19 プロセスをどのCPUで実行するか指定 0のみ 両方 1のみ OK 割り振り CPU0 両方 OK 割り振りプロセス投入 CPU1
  20. 20. スケジューリングポリシー 20優先順位 ポリシー名 リアルタイム 特徴 高い /通常/その他 FIFO リアルタイム 自発的に離さない限り、 OTHER CPUを使用し続ける RR(RoundRobin) リアルタイム 同じ優先度のプロセス がある場合、ラウンド ロビン OTHER 通常 デフォルトポリシー BATCH 通常 バッチプロセス用 BATCH IDLE その他 nice値+19より優先度が 低い 低い
  21. 21. 静的優先度 21  リアルタイムプロセスの優先順位を決定  値が小さいほど優先順位は高い  絶対的な優先度  1から99までの値をとる ※便宜上、一般的にはノンリアルタイムで実行リアルタイムプロセスの されるプロセスのマスコットを使用しております優先順位は静的に決定 11 15 50 75 1番 2番 3番 4番 CPU0
  22. 22. nice値とCPU使用時間 22  通常プロセスの優先度とタイムスライスを決定  優先度はCPU使用時間とnice値を掛け合わせて決定  タイムスライスはプロセス間のnice値の割合で決定  nice値は-20から19(デフォルトは0) 通常プロセスの nice:10 nice:0 nice:0 CPU使用時間:10 ms優先順位は動的に決定 CPU使用時間:30 s CPU使用時間:5 s 1番 2番 3番 CPU0
  23. 23. スケジューリングに 影響する項目おさらい 23 実行CPU  CPUアフィニティ 実行順序  スケジューリングポリシー  静的優先度  nice値とCPU使用時間 CPU使用時間(タイムスライス)  スケジューリングポリシー  nice値
  24. 24. 目次 24 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
  25. 25. スケジューラで遊ぼう お仕事メリハリ術デモ 25 コマンドラインからスケジューリングに影響する項目を変更してみましょう 紹介するコマンド  taskset  chrt  nice  renice
  26. 26. taskset 26 tasksetで各プロセスが実行するCPUを指定可能 CPUを指定してプロセスを起動 $ taskset -c 0,1,5 ./a.out 実行中のプロセス(ID:5268)のCPUを指定 $ taskset –p -c 1,2 5268 実行中のプロセス(ID:5268)のCPUアフィニティ確認 $ taskset –p 5268
  27. 27. chrt 27 プロセスのポリシーと静的優先度を変更 静的優先度の設定では1から99の範囲で値を指定  99が最大の優先度(静的優先度の1)となる FIFOかつ静的優先度20でプロセスを起動 99-20で計算 $ sudo chrt -f -p 79 ./a.out 実行中のプロセス(ID:30621)をBATCHに設定 $ chrt -b -p 0 30621 実行中のプロセス(ID:30621)のポリシーと優先度を 確認 $ chrt -p 30621
  28. 28. nice 28 nice値をプログラム起動時に指定 一般ユーザはnice値を下げれない 高い値ほど他のプロセスにCPUを譲るのでniceな値 nice値10を指定してプログラムを起動 $ nice –n 10 ./a.out nice値にマイナスを指定したい場合はsudoで実行 $ sudo nice –n -10 ./a.out
  29. 29. renice 29 実行中のプロセスのnice値を変更 プロセスID:4559のnice値を+10 $ renice +10 4559 実行ユーザがyahooのプロセスのnice値を20に変更 $ renice 20 -u yahoo
  30. 30. まとめ 30 プロセスはプロセスに設定された様々な項目に基づ いてスケジューリングされる 上記の項目はコマンドラインから変更可能  Linuxで遊べる作業効率化  静的優先度の表示や設定基準値などは、コマンドにより異な るので注意  但し、極端な設定は他のプロセスやユーザの迷惑になりうる ので程々に…
  31. 31. 目次 31 スケジューラの概要と目的 スケジューリングに影響する項目 スケジューラで遊ぼうお仕事メリハリ術 デベロッパーの方へ
  32. 32. デベロッパーの方へ 32 YJDN (Yahoo! JAPAN Developer Network)  Yahoo! JAPANのサービスを利用するAPIを提供しています  http://developer.yahoo.co.jp/ Tech Blog  Yahoo! JAPANの動向や最新情報を発信しています  http://techblog.yahoo.co.jp/
  33. 33. 33 ご清聴ありがとうございました

×