請注意,這個問題僅針對特定的linux
。我所說的專注swap space
是指奉獻精神swap partition
。
我google
對此做了一些工作,發現了這些definitions
:
Paging refers to writing portions, termed pages, of a process’ memory to disk.
Swapping, strictly speaking, refers to writing the entire process, not just part, to disk.
In Linux, true swapping is exceedingly rare, but the terms paging and swapping
often are used interchangeably.
和
page-out: The system's free memory is less than a threshold "lotsfree" and unnused / least used pages are moved to the swap area.
page-in: One process which is running requested for a page that is not in the current memory (page-fault), it's pages are being brought back to memory.
swap-out: System is thrashing and has deactivated a process and it's memory pages are moved into the swap area.
swap-in: A deactivated process is back to work and it's pages are being brought into the memory.
現在,您可能想要將這個問題與詢問分頁和交換之間差異的問題重複。但我尋求更多一點。在任何時候,這些計數器是否是/proc/vmstat
互斥的?我的意思是,該參數是否pswpin
包含一些計數pgpgin
,反之亦然?當一個行程處於 狀態時到底會發生什麼事deactivated
?如果它的所有頁面都移動到swap
太空中,那麼它與多個頁面到底有什麼不同pageouts
?另外,如果每當發生頁面錯誤時都會發生 a ,那麼對於其他兩個參數以及此事件pagein
可以說什麼呢?是否每當一個發生時,相應的也會發生?pgmajfault
pgfault
pagefault (major? minor?)
pagein
如果建議使用一些範例程式/基準測試來測試這些單獨的參數,將會很有幫助。
PS:我可能會繼續新增/編輯問題:)
答案1
這麼老的問題,到目前為止還沒有正確的答案。
首先,記憶體被 CPU 和核心分割成所謂的頁面。頁面大小由 CPU 架構決定,許多架構支援多種不同的頁面大小,但 x86_64 架構中最常見的頁面大小為 4KB。您談論的這些參數顯示了有多少內存頁被讀取/寫入磁碟以及其中有多少是交換的。
請記住頁面進入是 Linux 核心中的正常活動,幾乎每次將二進位檔案從磁碟(未快取)載入到操作記憶體時都會發生 - 即每次啟動任何應用程式時。
因為 pgin 和 pgout 操作並不總是您需要擔心的事情,所以創建了僅包含交換資訊的附加計數器 - 即 pswpin 和 pswpout 計數器 - 當記憶體頁面寫入交換或從中讀取時,它們會遞增交換。
再說一次 - 這也不表示有問題,它僅表明在某些情況下存在問題 - 例如當您看到這些數字在短時間內發生很大變化時(通常是當您的系統記憶體不足時)。
簡而言之:
- pgpgin、pgpgout - 從磁碟讀取並寫入記憶體的頁數,您通常不需要太在意這些數字
- pswpin、pswpout - 您可能希望每次追蹤這些數字(透過一些監控,如普羅米修斯),如果出現峰值,則表示系統正在大量交換,並且您遇到了問題
答案2
- pgpgin - 系統每秒從磁碟調入的千位元組數。
- pgpgout - 系統每秒調出到磁碟的千位元組數。
- pswpin - 系統每秒從磁碟換入的千位元組數。
- pswpout - 系統每秒換出到磁碟的千位元組數。