Monitoring

我應該如何監控 SunOS/Solaris 中的記憶體使用/性能?

  • April 18, 2012

上週我們決定將一些 SunOS ( uname -a= SunOS bbs-sam-belair 5.10 Generic_127128-11 i86pc i386 i86pc) 機器添加到我們正在執行的 munin 實例中。首先,機器是預先配置的設備,所以,我想避免在沒有服務提供商監督的情況下過多地接觸系統。

但是通過編寫一個小型套接字服務將它添加到 munin 相當容易(如果有人感興趣,我把它放在 github 上:https ://github.com/munin-monitoring/contrib/tree/master/tools/pypmmn )

昨天,我為我們的機器實現/調整了所需的外掛。問題從這裡開始:

首先,我還沒有找到一種方法來確定詳細的記憶體使用值。我通過執行獲得總記憶體prtconf | grep Memory,使用vmstat. 擺弄一個munin外掛,給了我下圖:

SunOS 記憶體圖

這幾乎沒有什麼資訊。將此與具有更多詳細資訊的 linux 節點的預設外掛進行比較:

比較:Linux 記憶體圖

最重要的是,這向我展示了應用程序實際使用了多少記憶體。

那麼,第一個問題:是否可以使用預設的系統工具(即不使用)獲得關於 SunOS 的詳細記憶體資訊 top


進入下一個難題:看到圖表,我注意到“分頁/分頁”圖中的活動,即使記憶體圖仍有未使用的記憶體

尋呼 分頁

經過進一步調查,我發現df報告/tmp安裝在swap. 在網上鑽研,我知道df會顯示swap,但實際上,它是作為tmpfs. 現在我不知道這是否解釋了交換活動。

solaris 的預設 munin-plugin 用於kstat -p -c misc -m cpu_stat獲取這些值。我發現這是使用cpu_stat模組已經很奇怪了。所以也許我只是誤解了“分頁”圖?

**第二個問題:**分頁圖是否表明部分記憶體被分頁到磁碟?或者是由文件操作引起的活動/tmp

第一個問題:是否可以使用預設的系統工具(即不使用top)獲取SunOS的詳細記憶體資訊?

使用 Solaris 標準工具(現在 SunOS 只是核心名稱)肯定可以獲得詳細的記憶體統計資訊和更多資訊。除了已經提到的之外echo ::memstat | mdb -k,您還可以擁有每個程序和每個使用者prstat -a以及每個區域的記憶體統計資訊prstat -Z

核心還通過 kstat 介面提供大量統計資訊(munin 正在使用它們)。

例如,如果要顯示總 RAM、核心使用的部分、ZFS 記憶體(核心使用的記憶體的一部分)和空閒記憶體,可以執行以下命令:

kstat -T d -p :::physmem :::pp_kernel zfs:::size :::pagesfree 1 3

如果您正在查看虛擬記憶體使用情況,請使用該swap -s命令。

第二個問題:分頁圖是否表明部分記憶體被分頁到磁碟?還是 /tmp 中的文件操作引起的活動?

以上都不是。進行此類活動並不一定意味著缺少 RAM 和頁面抖動。相反,您的圖表顯示sr值保持在 0。這意味著頁面掃描器沒有活動,因此您安裝了足夠的 RAM。分頁活動僅僅是由於正在讀取和寫入記憶體映射文件。沒什麼可擔心的。/tmp 上的文件僅存在於 RAM 中(在您的情況下),因此訪問它們時不會發生分頁。

請注意,Solaris 使用交換術語來命名用於儲存從 RAM 中調出的記憶體頁面的磁碟部分或命名整個虛擬記憶體空間,即交換區域加上未鎖定在那裡的 RAM 部分。

引用自:https://serverfault.com/questions/378392