--- 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) 可以繪製成下圖: ![](https://i.imgur.com/vlhVgNJ.png) 而 f'(0) 代表的意義是 nice 值為 n 的 task 在上圖 d 趨近於 0 的 CPU 佔有率變化量,與我們期待的,nice 值差 1 造成 CPU time 差 10% 的意義不同。 我的理解是,當 nice 值多 1,CPU 佔有率多了約 0.05579,另一個 task 相對少了 0.05579,差距大約是 0.11157,對應到第 7 行註解。