トップ «前の日記(2016-10-12) 最新 次の日記(2016-11-08)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2016-11-07 [長年日記]

_ [FreeBSD]ULEスケジュラーでのnice値 19

古典的なunixでは、nice値 19のプロセスは、CPU時間割り当ての 優先順位が極めて低く、nice値の低いプロセス群へのCPU時間割り当てが 余った際に実行されていたので、余っているCPU時間を 割り当てたいプロセスに nice値 19を設定するという 運用が行なわれてきた。

FreeBSDでも、4BSDスケジュラーの振る舞いはこれに近かったのだが、 ULEスケジュラーでは、CPU時間を貪欲に消費するプロセスに対する CPU時間割り当ては、nice値 0と nice値 20(最大値)の間でも 大きく偏らないため、fork-waitモデルでnice付きのworker processを 大量に投入する古いタイプの並列演算ロードに対しての CPUスケジューリングの公平性が損なわれている。

下記のパッチで、対話的でないnice付きプロセスの一部を idle queueへ入れてみたのだが、idle queue内のロードバランスが 行なわれないようで、低い優先順位で並列負荷を実行するのには向かない模様。

やはり、timeshare queue内のスケジューリング回りを直さないと無理みたい

Index: sys/kern/sched_ule.c
===================================================================
--- sys/kern/sched_ule.c	(revision 306791)
+++ sys/kern/sched_ule.c	(working copy)
@@ -1537,6 +1537,8 @@
 		KASSERT(pri >= PRI_MIN_INTERACT && pri <= PRI_MAX_INTERACT,
 		    ("sched_priority: invalid interactive priority %d score %d",
 		    pri, score));
+	} else if (td->td_proc->p_nice >= 19) {
+		pri = PRI_MIN_IDLE + (td->td_proc->p_nice - 19);
 	} else {
 		pri = SCHED_PRI_MIN;
 		if (td_get_sched(td)->ts_ticks)

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記