了解 RedHat 推薦的調整配置文件
我們將在大約 1000 台伺服器上推出 Tuned(和 numad),其中大多數是 NetApp 或 3Par 儲存上的 VMware 伺服器。
根據 RedHat 文件,我們應該選擇
virtual-guest
配置文件。它在做什麼可以在這裡看到:tuned.conf我們正在將 IO 調度程序更改為 NOOP,因為 VMware 和 NetApp/3Par 都應該為我們進行足夠的調度。
但是,經過一番調查後,我不確定它們為什麼會增加
vm.dirty_ratio
並且kernel.sched_min_granularity_ns
.據我了解,增加到
vm.dirty_ratio
40% 將意味著對於具有 20GB 記憶體的伺服器,除非vm.dirty_writeback_centisecs
首先命中,否則 8GB 在任何給定時間都可能是臟的。並且在刷新這些 8GB 時,應用程序的所有 IO 都將被阻塞,直到臟頁被釋放。增加dirty_ratio 可能意味著更高的峰值寫入性能,因為我們現在擁有更大的記憶體,但是當記憶體填滿時,IO 將被阻塞相當長的時間(幾秒鐘)。
另一個是他們為什麼要增加
sched_min_granularity_ns
. 如果我理解正確,增加這個值將減少每個 epoch(sched_latency_ns
) 的時間片數,這意味著正在執行的任務將有更多時間來完成它們的工作。我可以理解這對於執行緒很少的應用程序來說是一件非常好的事情,但例如。apache 或其他具有大量執行緒的程序會不會適得其反?
簡短的回答是,任何調整都是猜測,只有在有經驗數據支持時才有價值:試試吧。測量它。如果您不喜歡它,請調整它。
更長的答案:
增加dirty_ratio可能意味著更高的寫入性能……IO將被阻塞更長的時間
不會。增加臟比意味著您的系統不太可能進入需要開始阻塞寫入的狀態。缺點是使用的記憶體更多,中斷時數據失去的風險更大。
這意味著正在執行的任務將有更多的時間來完成他們的工作
程序通常會在其時間片到期之前產生。VM 的問題在於您的機器可能會與其他 VM 競爭 CPU 和 L1/L2 記憶體 - 高水平的任務切換(由於搶占)對吞吐量有很大影響。通常部署到 VM 中的應用程序類型是受 CPU 限制的(Web 伺服器、應用程序伺服器)。
是的,吞吐量的增加(適用於所有類型的應用程序)將以延遲增加為代價——但當大多數事務需要毫秒時,延遲是微秒級的。如果您需要實時功能/非常低的延遲,那麼您不應該使用虛擬機。