CPU 排程

反應時間(response time)

當你按下一個按鈕,你注意到的不是整件工作花多久,而是多久後「有動靜」——游標移動、轉圈圈出現、第一行輸出顯示。反應時間捕捉的正是這個「第一個閃動」的延遲:從提出要求到系統產生它第一個回應(而非最終結果)之間的時間。

確切地說,反應時間是從一個行程變為就緒(或一個要求被提出)量到它第一次開始產生輸出、或第一次拿到 CPU 的那一刻——它不等工作做完。這正是它與完成時間不同之處:一個工作可以很快開始回應(反應時間低),卻要很久才完全完成(完成時間高),而這往往正是互動使用者要的。輪轉排程藉由讓每個就緒行程都快速輪到一次,刻意把反應時間最佳化。

為什麼重要:對互動與分時系統而言,反應時間是使用者最有感的準則。一個能高效完成批次工作、卻讓螢幕凍結半秒的政策,即使產出率極佳,也會讓人覺得壞掉了。這個張力是真實的——要讓反應時間極小就得頻繁切換,而那會付出環境切換開銷、可能傷害產出率——所以設計者會挑一個時間配量,既保持反應靈敏,又不至於在切換上空轉。

一個行程在時刻 10 變為就緒,在輪轉排程下於時刻 12 第一次拿到 CPU——它的反應時間是 2 毫秒,即使這個工作還需要許多段爆發、要到時刻 90 才完成(完成時間 80)。使用者在時刻 12 看到有事發生;那才是感覺靈敏的地方。

反應時間衡量到第一個輸出的時間;完成時間衡量到結束的時間——兩者可以差很多。

最佳化反應時間與最佳化完成時間可能彼此拉扯:很小的配量帶來靈敏的第一反應,卻有更多切換開銷、有時讓總完成時間更糟。

又稱
回復時間