pretty code

2021年3月30日 星期二

load average on linux

既然已提早完成部份 Q2 KR 項目,反正還有時間乾脆來跑一下測試。

一般我們都會使用 top 指令來監控系統整體狀況,在結果視窗右上角有一個 load average 資訊,從 man 可以得知這是指系統負載,但這個數字要如何解讀完全沒有頭緒,於是又拜託了 Google 大神。


上面文章是第一筆搜尋結果,講得蠻淺顯易懂的,一下子就把它看完了,當我正準備離開網站時,眼睛餘光瞄到下面有網友留言這篇文章內容有誤,於是又順著留言看了第二篇文章。


簡單來說,這個數字不只跟 CPU 有關,其負載還牽涉到 I/O 等,故不能單純拿這個數字除以 CPU 核心數來判斷系統是否過載。

該文作者建議先觀察這個數字在什麼數值時是表示工作良好,而當這個數字超過原本的數值時,我們就必須藉由其他的指標來確認發生什麼事。

我之所以如此關心這個議題,是因為我在測試時發現當查詢 mongoDB 的 collection 擁有大量筆數資料時,不但記憶體使用量會突然爆增,且 CPU 使用率也會超過 100% 好幾秒。

由於我要查詢的欄位並沒有建立索引,故直覺一定是針對常用查詢條件建立索引以減輕 CPU 負擔,但很明顯的我的系統負載也會從 0.2X 增加到 0.6X。

我的資料量目前是 3 千多萬筆,一個月後就會變成兩億一千多萬筆,而這還只是一個 collection 而已!

這也是為什麼我現在如此在意這個數字的原因,我必須實測才能得知最終結果。

2021/04/08 更新

連假前重新跑了一次模擬,昨天進終端機看,三個負載數字都來到 1.2X 左右,但是在 ESXi 過去一小時監控視窗數據顯示,CPU 使用率都還沒超過 30%,目前筆數已經來到四千多萬筆。

2021/04/12 更新

目前筆數來到八千多萬筆,查詢還是可以在秒級的單位內完成,15 分鐘負載來到 1.74 左右,唯一不一樣的是 ESXi 的最小 CPU 使用率已經超過 1 了。


2021/04/19 更新

目前筆數來到一億三千多萬筆,查詢還是可以在秒級的單位內完成,15 分鐘負載來到 1.5X 左右,唯一不一樣的是真正的 Server 已掛,但我的模擬程式還是很認真的工作。由於肩牓受傷,不方便低頭確認 Server 機器狀況,只好等到好一點再來看怎麼回事?

沒有留言: