---
tags: linux2022
---
# 《Demystifying the Linux CPU Scheduler》 P.54 Equation (2.4)
Equation (2.4) 如下,其中,x (原文為 d,以區別微分時的 d) 代表的是只有兩個 tasks 的情況下,nice 值的差值 (即一個 task 的 nice 值為 n,另一 task 的 nice 值為 n + x),而 nice 值為 n 的 task 的 CPU 佔有率如下:
\begin{gather*}
\mbox{Let}\ f(x) = CPU_\%(x) = \frac{1}{1 + (\frac{4}{5})^x}
\end{gather*}
計算其一階導函數:
\begin{split}
f'(x) &= \frac{d}{d x} \frac{1}{a},\ (\mbox{Let}\ a = {1 + (\frac{4}{5})^x}) \\
&= -\frac{1}{a^2}\frac{d}{dx} a \\
&= -\frac{1}{(1 + (\frac{4}{5})^x)^2} \frac{d}{dx} ({1 + (\frac{4}{5})^x}) \\
&= -\frac{1}{(1 + (\frac{4}{5})^x)^2} (0 + (\frac{4}{5})^x ln(\frac{4}{5})),\ (y = a^x, y' = a^x ln(a)) \\
&= \frac{20^xln(\frac{5}{4})}{(5^x + 4^x)^2} \\
f'(0) &= \frac{1}{4} ln(\frac{5}{4}) \approx 0.05579
\end{split}
Equation (2.4) 可以繪製成下圖:

而 f'(0) 代表的意義是 nice 值為 n 的 task 在上圖 d 趨近於 0 的 CPU 佔有率變化量,與我們期待的,nice 值差 1 造成 CPU time 差 10% 的意義不同。
我的理解是,當 nice 值多 1,CPU 佔有率多了約 0.05579,另一個 task 相對少了 0.05579,差距大約是 0.11157,對應到第 7 行註解。