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

563 Views

August 03, 11

スライド概要

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

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

(LINUXの)お仕事メリハリ術♪ -プロセススケジューラ編1

2.

自己紹介 2  山田 賢  北田 章  牧野 恵

3.

はじめに 3  今回の内容が直接お仕事に役立つ機会は多くないか も・・・  Linuxを愛用する立場として、Linuxのメリハリ術を 楽しむスタンスで聞いて頂けると幸いです

4.

目次 4  スケジューラの概要と目的  スケジューリングに影響する項目  スケジューラで遊ぼうお仕事メリハリ術  デベロッパーの方へ

5.

スケジューラの概要 5 1. 各CPUにプロセスを割り振り 2. プロセスの優先順位とタイムスライスを決定 プロセス 割り振り スケジューラ CPU0 プロセス 割り振り プロセス投入 CPU1

6.

スケジューラの概要 6 1. 各CPUにプロセスを割り振り 2. プロセスの優先順位とタイムスライスを決定 20ms実行 3番 2番 1番 CPU0 4番

7.

スケジューラが×で何が困る? 7  仕事がたくさんあるのにCPUを使いきってくれない 割り振り CPU0 プロセス投入 割り振り CPU1

8.

スケジューラが×で何が困る? 8  仕事がたくさんあるのにCPUを使いきってくれない 割り振り CPU0 プロセス投入 割り振り CPU1 いいPC買ったのに 活用してくれない・・・

9.

スケジューラが×で何が困る? 9  優先してほしいプロセスを優先しない 選択 CPU使用率 50% CPU0 CPU使用率 50%

10.

スケジューラが×で何が困る? 10  優先してほしいプロセスを優先しない 選択 CPU使用率 50% CPU0 同時実行プロセスのせいで 動画がカクカクする・・・ CPU使用率 50%

11.

スケジューラが×で何が困る? 11  条件が同じプロセスに対して同じ時間CPUを使わせ ない 選択 CPU使用率 90% CPU0 CPU使用率 10%

12.

スケジューラが×で何が困る? 12  条件が同じプロセスに対して同じ時間CPUを使わせ ない 選択 CPU使用率 90% CPU0 私のJavaプログラムの実行 だけいつも遅い・・・ CPU使用率 10%

13.

一般的なスケジューラの目的 13  CPU使用率の公平性を保証      ユーザ間 プロセスグループ間 プロセス間 CPU間 etc.,  性能の向上    次に実行するプロセスを高速に決定 ハードウェア特性を活用するCPU間振り分け、実行順序、タイムスラ イスの決定 etc.,

14.

スケジューラの インパクト事例 14  gihyo.jp, “2010年11月18日 "ミラクルパッチ"に Linusも大喜び!Linuxカーネルを高速化させた233 行のコード”,  http://gihyo.jp/admin/clip/01/linux_dt/201011/18 = = 以前は対等に扱っていたプロセスを・・・

15.

スケジューラの インパクト事例 15  gihyo.jp, “2010年11月18日 "ミラクルパッチ"に Linusも大喜び!Linuxカーネルを高速化させた233 行のコード”,  http://gihyo.jp/admin/clip/01/linux_dt/201011/18 用途に合わせて自動的に グループ化

16.

スケジューラのことを 知って嬉しいこと 16  急いで実行すべき仕事の優先順位を上げられる  動画再生アプリケーションなど  急いでいない仕事の優先順位を下げられる  周囲からの好感度向上(?)  Linux自体に詳しく慣れる

17.

目次 17  スケジューラの概要と目的  スケジューリングに影響する項目  スケジューラで遊ぼうお仕事メリハリ術  デベロッパーの方へ

18.

スケジューリングに 影響する項目 18  CPUアフィニティ  スケジューリングポリシー  静的優先度  nice値とCPU使用時間  etc.,

19.

CPUアフィニティ 19  プロセスをどのCPUで実行するか指定 1のみ 0のみ 両方 OK 割り振り CPU0 両方 OK 割り振り プロセス投入 CPU1

20.

スケジューリングポリシー 20 優先順位 高い OTHER BATCH 低い ポリシー名 リアルタイム /通常/その他 特徴 FIFO リアルタイム 自発的に離さない限り、 CPUを使用し続ける RR(RoundRobin) リアルタイム 同じ優先度のプロセス がある場合、ラウンド ロビン OTHER 通常 デフォルトポリシー BATCH 通常 バッチプロセス用 IDLE その他 nice値+19より優先度が 低い

21.

静的優先度 21  リアルタイムプロセスの優先順位を決定  値が小さいほど優先順位は高い  絶対的な優先度  1から99までの値をとる リアルタイムプロセスの 優先順位は静的に決定 ※便宜上、一般的にはノンリアルタイムで実行 されるプロセスのマスコットを使用しております 11 15 50 1番 2番 3番 CPU0 75 4番

22.

nice値とCPU使用時間 22  通常プロセスの優先度とタイムスライスを決定  優先度はCPU使用時間とnice値を掛け合わせて決定  タイムスライスはプロセス間のnice値の割合で決定  nice値は-20から19(デフォルトは0) 通常プロセスの 優先順位は動的に決定 nice:0 CPU使用時間:5 s 1番 nice:10 CPU使用時間:10 ms 2番 CPU0 nice:0 CPU使用時間:30 s 3番

23.

スケジューリングに 影響する項目おさらい 23  実行CPU  CPUアフィニティ  実行順序  スケジューリングポリシー  静的優先度  nice値とCPU使用時間  CPU使用時間(タイムスライス)  スケジューリングポリシー  nice値

24.

目次 24  スケジューラの概要と目的  スケジューリングに影響する項目  スケジューラで遊ぼうお仕事メリハリ術  デベロッパーの方へ

25.

スケジューラで遊ぼう お仕事メリハリ術デモ 25  コマンドラインからスケジューリングに影響する 項目を変更してみましょう  紹介するコマンド  taskset  chrt  nice  renice

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.

chrt 27  プロセスのポリシーと静的優先度を変更  静的優先度の設定では1から99の範囲で値を指定  99が最大の優先度(静的優先度の1)となる  FIFOかつ静的優先度20でプロセスを起動 $ sudo chrt -f -p 79 ./a.out 99-20で計算  実行中のプロセス(ID:30621)をBATCHに設定 $ chrt -b -p 0 30621  実行中のプロセス(ID:30621)のポリシーと優先度を 確認 $ chrt -p 30621

28.

nice 28  nice値をプログラム起動時に指定  一般ユーザはnice値を下げれない  高い値ほど他のプロセスにCPUを譲るのでniceな値  nice値10を指定してプログラムを起動 $ nice –n 10 ./a.out  nice値にマイナスを指定したい場合はsudoで実行 $ sudo nice –n -10 ./a.out

29.

renice 29  実行中のプロセスのnice値を変更  プロセスID:4559のnice値を+10 $ renice +10 4559  実行ユーザがyahooのプロセスのnice値を20に変更 $ renice 20 -u yahoo

30.

まとめ 30  プロセスはプロセスに設定された様々な項目に基づ いてスケジューリングされる  上記の項目はコマンドラインから変更可能  Linuxで遊べる作業効率化  静的優先度の表示や設定基準値などは、コマンドにより異な るので注意  但し、極端な設定は他のプロセスやユーザの迷惑になりうる ので程々に…

31.

目次 31  スケジューラの概要と目的  スケジューリングに影響する項目  スケジューラで遊ぼうお仕事メリハリ術  デベロッパーの方へ

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  ご清聴ありがとうございました