SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
(LINUXの)お仕事メリハリ術♪
  -プロセススケジューラ編-
        1
自己紹介
          2

 山田 賢
 北田 章
 牧野 恵
はじめに
               3

 今回の内容が直接お仕事に役立つ機会は多くないか
 も・・・

 Linuxを愛用する立場として、Linuxのメリハリ術を
 楽しむスタンスで聞いて頂けると幸いです
目次
              4

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

1. 各CPUにプロセスを割り振り
2. プロセスの優先順位とタイムスライスを決定



    プロセス        割り振り
             スケジューラ
                       CPU0

                              プロセス
                割り振り



プロセス投入                 CPU1
スケジューラの概要
                       6

1. 各CPUにプロセスを割り振り
2. プロセスの優先順位とタイムスライスを決定



            20ms実行




       3番        1番          2番   4番

                      CPU0
スケジューラが×で何が困る?
             7

 仕事がたくさんあるのにCPUを使いきってくれない




            割り振り
                   CPU0




                   CPU1
 プロセス投入     割り振り
スケジューラが×で何が困る?
             8

 仕事がたくさんあるのにCPUを使いきってくれない




            割り振り
                    CPU0




                    CPU1
 プロセス投入     割り振り

           いいPC買ったのに
          活用してくれない・・・
スケジューラが×で何が困る?
                 9

 優先してほしいプロセスを優先しない

       選択




        CPU使用率        CPU使用率
           50%           50%




             CPU0
スケジューラが×で何が困る?
                 10

 優先してほしいプロセスを優先しない

       選択




        CPU使用率         CPU使用率
           50%            50%




             CPU0

        同時実行プロセスのせいで
        動画がカクカクする・・・
スケジューラが×で何が困る?
                  11

 条件が同じプロセスに対して同じ時間CPUを使わせ
ない
        選択




         CPU使用率        CPU使用率
            90%           10%




              CPU0
スケジューラが×で何が困る?
                  12

 条件が同じプロセスに対して同じ時間CPUを使わせ
ない
        選択




         CPU使用率          CPU使用率
            90%             10%




              CPU0

        私のJavaプログラムの実行
         だけいつも遅い・・・
一般的なスケジューラの目的
                   13

 CPU使用率の公平性を保証
    ユーザ間
    プロセスグループ間
    プロセス間
    CPU間
    etc.,


 性能の向上
    次に実行するプロセスを高速に決定
    ハードウェア特性を活用するCPU間振り分け、実行順序、タイムスラ
     イスの決定
    etc.,
スケジューラの
                     インパクト事例
                              14

 gihyo.jp, “2010年11月18日
                    "ミラクルパッチ"に
 Linusも大喜び!Linuxカーネルを高速化させた233
 行のコード”,
    http://gihyo.jp/admin/clip/01/linux_dt/201011/18



                      =              =


                以前は対等に扱っていたプロセスを・・・
スケジューラの
                     インパクト事例
                              15

 gihyo.jp, “2010年11月18日
                    "ミラクルパッチ"に
 Linusも大喜び!Linuxカーネルを高速化させた233
 行のコード”,
    http://gihyo.jp/admin/clip/01/linux_dt/201011/18




                                      用途に合わせて自動的に
                                      グループ化
スケジューラのことを
         知って嬉しいこと
               16

 急いで実行すべき仕事の優先順位を上げられる
   動画再生アプリケーションなど




 急いでいない仕事の優先順位を下げられる
   周囲からの好感度向上(?)




 Linux自体に詳しく慣れる
目次
              17

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

 CPUアフィニティ
 スケジューリングポリシー
 静的優先度
 nice値とCPU使用時間
 etc.,
CPUアフィニティ
                  19

 プロセスをどのCPUで実行するか指定                 0のみ




             両方
     1のみ     OK
                       割り振り   CPU0

                                     両方
                                     OK
                       割り振り


プロセス投入
                              CPU1
スケジューリングポリシー
                            20

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




 低い
静的優先度
                      21


  リアルタイムプロセスの優先順位を決定
  値が小さいほど優先順位は高い
  絶対的な優先度
  1から99までの値をとる

                   ※便宜上、一般的にはノンリアルタイムで実行
リアルタイムプロセスの
                   されるプロセスのマスコットを使用しております
優先順位は静的に決定
              11           15          50    75


              1番           2番          3番   4番

                                CPU0
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

 実行CPU
   CPUアフィニティ

 実行順序
   スケジューリングポリシー

   静的優先度

   nice値とCPU使用時間

 CPU使用時間(タイムスライス)
   スケジューリングポリシー

   nice値
目次
              24

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

 コマンドラインからスケジューリングに影響する
項目を変更してみましょう

 紹介するコマンド
   taskset

   chrt

   nice

   renice
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
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
nice
                           28

 nice値をプログラム起動時に指定
 一般ユーザはnice値を下げれない
 高い値ほど他のプロセスにCPUを譲るのでniceな値


 nice値10を指定してプログラムを起動

   $ nice –n 10 ./a.out

 nice値にマイナスを指定したい場合はsudoで実行

   $ sudo nice –n -10 ./a.out
renice
                          29

 実行中のプロセスのnice値を変更


 プロセスID:4559のnice値を+10

   $ renice +10 4559

 実行ユーザがyahooのプロセスのnice値を20に変更

   $ renice 20 -u yahoo
まとめ
               30

 プロセスはプロセスに設定された様々な項目に基づ
 いてスケジューリングされる

 上記の項目はコマンドラインから変更可能
   Linuxで遊べる作業効率化

   静的優先度の表示や設定基準値などは、コマンドにより異な
    るので注意
   但し、極端な設定は他のプロセスやユーザの迷惑になりうる
    ので程々に…
目次
              31

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

 YJDN (Yahoo! JAPAN Developer Network)
   Yahoo! JAPANのサービスを利用するAPIを提供しています

   http://developer.yahoo.co.jp/

 Tech Blog
   Yahoo! JAPANの動向や最新情報を発信しています

   http://techblog.yahoo.co.jp/
33

 ご清聴ありがとうございました

Más contenido relacionado

La actualidad más candente

研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法Takeshi Yamamuro
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説Takateru Yamagishi
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介Preferred Networks
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。(^-^) togakushi
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールMITSUNARI Shigeo
 
Chainer で Tensor コア (fp16) を使いこなす
Chainer で Tensor コア (fp16) を使いこなすChainer で Tensor コア (fp16) を使いこなす
Chainer で Tensor コア (fp16) を使いこなすNVIDIA Japan
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境KiyotomoHiroyasu
 
NEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfNEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfYasunori Goto
 
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層智啓 出川
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜Preferred Networks
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるAtsushi KOMIYA
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル裕士 常田
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Masahito Zembutsu
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク7shi
 
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス智啓 出川
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Fixstars Corporation
 

La actualidad más candente (20)

研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法研究動向から考えるx86/x64最適化手法
研究動向から考えるx86/x64最適化手法
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
Chainer で Tensor コア (fp16) を使いこなす
Chainer で Tensor コア (fp16) を使いこなすChainer で Tensor コア (fp16) を使いこなす
Chainer で Tensor コア (fp16) を使いこなす
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
 
NEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdfNEDIA_SNIA_CXL_講演資料.pdf
NEDIA_SNIA_CXL_講演資料.pdf
 
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 

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

システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5shingo suzuki
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 sandai
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」ManaMurakami1
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング勲 國府田
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」ManaMurakami1
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016RWSJapan
 
Read daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisanRead daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisanshinaisan
 
Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10
Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10
Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10Akihiro HATANAKA
 
[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu Yamamoto[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu YamamotoInsight Technology, Inc.
 
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化Hiroshi Watanabe
 
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也Preferred Networks
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2Preferred Networks
 
System Center Operations Managerによる仮想環境の高度な管理
System Center Operations Managerによる仮想環境の高度な管理System Center Operations Managerによる仮想環境の高度な管理
System Center Operations Managerによる仮想環境の高度な管理junichi anno
 
シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法Yohei Azekatsu
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも- Yusaku Watanabe
 

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

システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
 
Gamedevenvstudy1
Gamedevenvstudy1Gamedevenvstudy1
Gamedevenvstudy1
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
 
Read daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisanRead daemon on 20121110 by shinaisan
Read daemon on 20121110 by shinaisan
 
Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10
Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10
Questetra ハンズオンセミナー ビギナー向け業務プロセス設計 2016/02/10
 
[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu Yamamoto[D12] NonStop SQLって何? by Susumu Yamamoto
[D12] NonStop SQLって何? by Susumu Yamamoto
 
短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化短距離古典分子動力学計算の 高速化と大規模並列化
短距離古典分子動力学計算の 高速化と大規模並列化
 
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
System Center Operations Managerによる仮想環境の高度な管理
System Center Operations Managerによる仮想環境の高度な管理System Center Operations Managerによる仮想環境の高度な管理
System Center Operations Managerによる仮想環境の高度な管理
 
シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法
 
Mt basic as-os_on_danbot
Mt basic as-os_on_danbotMt basic as-os_on_danbot
Mt basic as-os_on_danbot
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも-
 

Más de Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Más de Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

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

  • 2. 自己紹介 2  山田 賢  北田 章  牧野 恵
  • 3. はじめに 3  今回の内容が直接お仕事に役立つ機会は多くないか も・・・  Linuxを愛用する立場として、Linuxのメリハリ術を 楽しむスタンスで聞いて頂けると幸いです
  • 4. 目次 4  スケジューラの概要と目的  スケジューリングに影響する項目  スケジューラで遊ぼうお仕事メリハリ術  デベロッパーの方へ
  • 5. スケジューラの概要 5 1. 各CPUにプロセスを割り振り 2. プロセスの優先順位とタイムスライスを決定 プロセス 割り振り スケジューラ CPU0 プロセス 割り振り プロセス投入 CPU1
  • 6. スケジューラの概要 6 1. 各CPUにプロセスを割り振り 2. プロセスの優先順位とタイムスライスを決定 20ms実行 3番 1番 2番 4番 CPU0
  • 7. スケジューラが×で何が困る? 7  仕事がたくさんあるのにCPUを使いきってくれない 割り振り CPU0 CPU1 プロセス投入 割り振り
  • 8. スケジューラが×で何が困る? 8  仕事がたくさんあるのにCPUを使いきってくれない 割り振り CPU0 CPU1 プロセス投入 割り振り いいPC買ったのに 活用してくれない・・・
  • 9. スケジューラが×で何が困る? 9  優先してほしいプロセスを優先しない 選択 CPU使用率 CPU使用率 50% 50% CPU0
  • 10. スケジューラが×で何が困る? 10  優先してほしいプロセスを優先しない 選択 CPU使用率 CPU使用率 50% 50% CPU0 同時実行プロセスのせいで 動画がカクカクする・・・
  • 11. スケジューラが×で何が困る? 11  条件が同じプロセスに対して同じ時間CPUを使わせ ない 選択 CPU使用率 CPU使用率 90% 10% CPU0
  • 12. スケジューラが×で何が困る? 12  条件が同じプロセスに対して同じ時間CPUを使わせ ない 選択 CPU使用率 CPU使用率 90% 10% CPU0 私のJavaプログラムの実行 だけいつも遅い・・・
  • 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で実行するか指定 0のみ 両方 1のみ OK 割り振り CPU0 両方 OK 割り振り プロセス投入 CPU1
  • 20. スケジューリングポリシー 20 優先順位 ポリシー名 リアルタイム 特徴 高い /通常/その他 FIFO リアルタイム 自発的に離さない限り、 OTHER CPUを使用し続ける RR(RoundRobin) リアルタイム 同じ優先度のプロセス がある場合、ラウンド ロビン OTHER 通常 デフォルトポリシー BATCH 通常 バッチプロセス用 BATCH IDLE その他 nice値+19より優先度が 低い 低い
  • 21. 静的優先度 21  リアルタイムプロセスの優先順位を決定  値が小さいほど優先順位は高い  絶対的な優先度  1から99までの値をとる ※便宜上、一般的にはノンリアルタイムで実行 リアルタイムプロセスの されるプロセスのマスコットを使用しております 優先順位は静的に決定 11 15 50 75 1番 2番 3番 4番 CPU0
  • 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  実行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でプロセスを起動 99-20で計算 $ sudo chrt -f -p 79 ./a.out  実行中のプロセス(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/