如何了解 linux 伺服器中的記憶體使用情況和平均負載
我正在使用具有 128GB 記憶體和 24 個核心的 linux 伺服器。我使用 top 來查看它的使用量。它的輸出粘貼在文章的末尾。這裡有兩個問題:
(1)我看到每個正在執行的程序佔用的記憶體比例都很小(%MEM不超過0.2%,最多只有0.0%),但是總記憶體怎麼用的差不多,就像第四行的輸出一樣( “記憶體:總共 130766620k,使用了 130161072k,605548k 空閒,919300k 緩衝區”)?所有程序中已用記憶體百分比的總和似乎不太可能達到幾乎 100%,不是嗎?
(2)如何理解第一行的平均負載(“平均負載:14.04, 14.02, 14.00”)?
感謝致敬!
編輯:
謝謝!
我也很喜歡聽到一些基於已用記憶體百分比的粗略數字,以確定伺服器是否負載過重,因為我曾經是在不了解目前負載的情況下塞滿伺服器的人。
交換是否被視為與記憶體幾乎相同?例如,當記憶體和swap大小幾乎相同時,如果記憶體快用完了,但swap仍然大部分是空閒的,我可以只看記憶體+swap的使用百分比仍然不高,然後執行其他新的嗎?流程?
您如何考慮 CPU 或記憶體(或記憶體 + 交換)的使用?如果它們中的任何一個達到太高或兩者兼而有之,您會擔心嗎?
頂部輸出:
$頂部
頂部 - 19 天 12:45:33,23:11,18 個使用者,平均負載:14.04、14.02、14.00 任務:共 484 個,執行 12 個,睡眠 472 個,停止 0 個,殭屍 0 個 CPU (s): 36.7%us, 19.7%sy, 0.0%ni, 43.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 記憶體:總計 130766620k,已使用 130161072k,空閒 605548k,919300k 緩衝區 交換:總計 63111312k,已使用 500556k,免費 62610756k,記憶體 124437752k PID 使用者 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令 6529 桑切斯 18 -2 1075m 219m 13m S 100 0.2 13760:23 MATLAB 13210 蒂莫西 18 -2 48336 37m 1216 R 100 0.0 3:56.75 荒謬 13888 蒂莫西 18 -2 48336 37m 1204 R 100 0.0 2:04.89 荒謬 14542 蒂莫西 18 -2 48336 37m 1196 R 100 0.0 1:08.34 荒謬 14544 蒂莫西 18 -2 2888 2076 400 R 100 0.0 1:06.14 收集數據 6183 桑切斯 18 -2 1133m 195m 13m S 100 0.2 13676:04 MATLAB 6795 桑切斯 18 -2 1079m 210m 13m S 100 0.2 13734:26 MATLAB 10178 蒂莫西 18 -2 48336 37m 1204 R 100 0.0 11:33.93 荒謬 12438 蒂莫西 18 -2 48336 37m 1216 R 100 0.0 5:38.17 荒謬 13661 蒂莫西 18 -2 48336 37m 1216 R 100 0.0 2:44.13 荒謬 14098 蒂莫西 18 -2 48336 37m 1204 R 100 0.0 1:58.31 荒謬 14335 蒂莫西 18 -2 48336 37m 1196 R 100 0.0 1:08.93 荒謬 14765 蒂莫西 18 -2 48336 37m 1196 R 99 0.0 0:32.57 荒謬 13445 蒂莫西 18 -2 48336 37m 1216 R 99 0.0 3:01.37 荒謬 28990 根 20 0 0 0 0 S 2 0.0 65:50.21 pdflush 12141 團隊 18 -2 19380 1660 1024 R 1 0.0 0:04.04 頂部 1240 根 15 -5 0 0 0 S 0 0.0 16:07.11 kjournald 9019 根 20 0 296m 4460 2616 S 0 0.0 82:19.51 kdm_greet 1 根 20 0 4028 728 592 S 0 0.0 0:03.11 初始化 2 根 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd 3 根 RT -5 0 0 0 S 0 0.0 0:01.01 遷移/0 4 根 15 -5 0 0 0 S 0 0.0 0:08.13 ksoftirqd/0 5 根 RT -5 0 0 0 S 0 0.0 0:00.00 看門狗/0 6 根 RT -5 0 0 0 S 0 0.0 17:27.31 遷移/1 7 根 15 -5 0 0 0 S 0 0.0 0:01.21 ksoftirqd/1 8 根 RT -5 0 0 0 S 0 0.0 0:00.00 看門狗/1 9 根 RT -5 0 0 0 S 0 0.0 10:02.56 遷移/2 10 根 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/2 11 根 RT -5 0 0 0 S 0 0.0 0:00.00 看門狗/2 12 根 RT -5 0 0 0 S 0 0.0 4:29.53 遷移/3 13 根 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/3
(1)我看到每個正在執行的程序佔用的記憶體比例都很小(%MEM不超過0.2%,最多只有0.0%),但是總記憶體怎麼用的差不多,就像第四行的輸出一樣( “記憶體:總共 130766620k,使用了 130161072k,605548k 空閒,919300k 緩衝區”)?所有程序中已用記憶體百分比的總和似乎不太可能達到幾乎 100%,不是嗎?
要查看您目前使用了多少記憶體,請執行
free -m
. 它將提供如下輸出:記憶體的已用空閒共享緩衝區總數 記憶體:2012 1923 88 0 91 515 -/+ 緩衝區/記憶體:1316 695 交換:3153 256 2896
頂行“使用”(1923)值幾乎總是與頂行記憶體值(2012)幾乎匹配。由於 Linux 喜歡使用任何空閒記憶體來記憶體磁碟塊 (515)。
要查看的關鍵使用數字是緩衝區/記憶體行使用值 (1316)。這是您的應用程序目前使用的空間量。為獲得最佳性能,此數字應小於您的總 (2012) 記憶體。為了防止記憶體不足錯誤,它需要小於總記憶體(2012)和交換空間(3153)。
如果您想快速查看有多少記憶體可用,請查看緩衝區/記憶體行可用值 (695)。這是總記憶體(2012)-實際使用的(1316)。(2012 - 1316 = 696,不是 695,這只是一個四捨五入的問題)
(2)如何理解第一行的平均負載(“平均負載:14.04, 14.02, 14.00”)?
這篇關於平均負載的文章使用了一個很好的流量類比,是迄今為止我發現的最好的一篇:了解 Linux CPU 負載 - 你什麼時候應該擔心?. 正如人們指出的那樣,就您而言:
在多處理器系統上,負載與可用處理器核心的數量有關。“100% 使用率”標記在單核系統上為 1.00,在雙核上為 2.00,在四核上為 4.00,等等。
因此,平均負載為 14.00 和 24 個核心,您的伺服器遠未超載。