Suche senden
Hochladen
Completely Fair Scheduler (CFS)
•
Als PPTX, PDF herunterladen
•
3 gefällt mir
•
2,338 views
G
gokzy
Folgen
Melden
Teilen
Melden
Teilen
1 von 17
Jetzt herunterladen
Empfohlen
Lockfree Queue
Lockfree Queue
Kumazaki Hiroki
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
LINE Corporation
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
LakeTahoe
LakeTahoe
Yahoo!デベロッパーネットワーク
Consistent hash
Consistent hash
paulowniaceae
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
Preferred Networks
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
Empfohlen
Lockfree Queue
Lockfree Queue
Kumazaki Hiroki
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
LINE Corporation
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
LakeTahoe
LakeTahoe
Yahoo!デベロッパーネットワーク
Consistent hash
Consistent hash
paulowniaceae
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
Preferred Networks
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
TIME_WAITに関する話
TIME_WAITに関する話
Takanori Sejima
containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
トピックブランチとは
トピックブランチとは
nakajima_yuji
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
トランザクション入門
トランザクション入門
Kumazaki Hiroki
A critique of ansi sql isolation levels 解説公開用
A critique of ansi sql isolation levels 解説公開用
Takashi Kambayashi
PythonによるOPC-UAの利用
PythonによるOPC-UAの利用
Kioto Hirahara
Unity and WebSockets
Unity and WebSockets
Josh Glover
ホモトピー型理論入門
ホモトピー型理論入門
k h
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
ktateish
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
hdais
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
キャッシュコヒーレントに囚われない並列カウンタ達
キャッシュコヒーレントに囚われない並列カウンタ達
Kumazaki Hiroki
Weitere ähnliche Inhalte
Was ist angesagt?
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
TIME_WAITに関する話
TIME_WAITに関する話
Takanori Sejima
containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
トピックブランチとは
トピックブランチとは
nakajima_yuji
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
トランザクション入門
トランザクション入門
Kumazaki Hiroki
A critique of ansi sql isolation levels 解説公開用
A critique of ansi sql isolation levels 解説公開用
Takashi Kambayashi
PythonによるOPC-UAの利用
PythonによるOPC-UAの利用
Kioto Hirahara
Unity and WebSockets
Unity and WebSockets
Josh Glover
ホモトピー型理論入門
ホモトピー型理論入門
k h
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
ktateish
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
hdais
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
キャッシュコヒーレントに囚われない並列カウンタ達
キャッシュコヒーレントに囚われない並列カウンタ達
Kumazaki Hiroki
Was ist angesagt?
(20)
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
TIME_WAITに関する話
TIME_WAITに関する話
containerdの概要と最近の機能
containerdの概要と最近の機能
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
トピックブランチとは
トピックブランチとは
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
Glibc malloc internal
Glibc malloc internal
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
トランザクション入門
トランザクション入門
A critique of ansi sql isolation levels 解説公開用
A critique of ansi sql isolation levels 解説公開用
PythonによるOPC-UAの利用
PythonによるOPC-UAの利用
Unity and WebSockets
Unity and WebSockets
ホモトピー型理論入門
ホモトピー型理論入門
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
冬のLock free祭り safe
冬のLock free祭り safe
キャッシュコヒーレントに囚われない並列カウンタ達
キャッシュコヒーレントに囚われない並列カウンタ達
Completely Fair Scheduler (CFS)
1.
Completely Fair Scheduler
(CFS) twitter : @gokzy 1
2.
スケージューラーの使命 応答性のよいユーザエクスペリエンスの提供 応答時間を最小に
タイムスライスを効率的に割り当てる 全体のCPU使用率は最大に 相反する要求に答えねばならん 2
3.
O(1)スケジューラの問題点 公平性の確保が難しい 優先度別キューがあるため
対話型タスクの扱いがヒューリスティック しかも計算に必要なコードが管理しにくい カーネルがnice値の調整を行う より高いnice値が枯渇しないように CPUのタイムシェアの計算が困難 3
4.
そこで Completely Fair
Scheduler(CFS) 文字通り公平らしい あらゆる関数に”fair”をつけ公正さを主張 もちろんファイル名にも : kernel/sched_fair.c 4
5.
スケージューリングクラス 3つのスケジューリングクラスが存在 rt
->fair -> idle の順で実行される fair_sched_classがキモ 5
6.
タスクへの割り当て時間の決定 6
7.
タスクが増えると困る どんどんスライスされていく コンテキストスイッチコストが増加
periodの修正が必要 7
8.
periodの修正 スケジュール時間の最小値が決まってる sched_min_granularityという値
8
9.
割り当て順序の決定 vruntimeが最小のものを選ぶ ランキューはvruntimeでソートされている
9
10.
vruntimeの求め方 10 仮想的なタスク動作時間
式で求める niceを考慮する しかし問題が…
11.
vruntimeによる選択の問題点 スリープ状態タスクのvruntime 寝ている間はvruntimeが増えず問題が
wakeupとsleepを繰り返されると プリエンプションが頻発しコンテキストスイッチ増加 プリエンプトしたタスクがすぐにsleepすると 次に選ぶタスクは単純にvruntimeが小さいのでいいのか->否 11
12.
スリープ状態タスクのvruntime 寝ている間はvruntimeが増えない 12
13.
起床時にvruntimeをいじる 13 起床したタスクのvruntimeは,実行可能状態のタスクの中で最小のvrutimeまで繰り上がる
14.
wakeupとsleepが頻繁に繰り返される 14 プリエンプションが頻発しコンテキストスイッチが増加
カレントタスクのvruntimeとの差が小さい場合はプリエンプションを遅延する
15.
プリエンプトしたタスクがすぐに寝ると 15 次に選ぶタスクは単純にvruntimeが小さいのでいいのか->否
直前に動いていたタスクのキャッシュが残っている 直前に動いていたタスクを選択する 改善
16.
まとめ タスクへの時間割り当ては 16
タスクの選択はvruntimeが最小のものを選ぶ vruntimeは寝てるなどの条件で繰り上がったりする キャシュとかも考慮している 割とヒューリスティックじゃね?
17.
参考 Linux Kernel
Watch http://www.atmarkit.co.jp/flinux/rensai/watch2009/watch09c.html The Completly Fair Scheduler http://www.linuxfoundation.jp/jp_uploads/seminar20080709/lfjp2008.pdf Linux カーネル 2.6 Completely Fair Scheduler の内側 http://www.ibm.com/developerworks/jp/linux/library/l-completely-fair-scheduler/index.html 17
Jetzt herunterladen