RFC-0011:zx_object_get_info ZX_INFO_KMEM_STATS_EXTENDED | |
---|---|
狀態 | 已接受 |
領域 |
|
說明 | 建議將「ZX_INFO_KMEM_STATS_EXTENDED」新增至 `zx_object_get_info()` syscall。 |
毛皮變化 | |
作者 | |
審查人員 | |
提交日期 (年-月-日) | 2020-11-04 |
審查日期 (年-月-日) | 2020-11-20 |
摘要
此 RFC 建議將「ZX_INFO_KMEM_STATS_EXTENDED
」加入新主題至
zx_object_get_info()
系統呼叫。新主題會傳回單筆記錄
類型 zx_info_kmem_stats_extended_t
,包含
zx_info_kmem_stats_t
,以及一些價格較高的額外欄位
收集。
提振精神
ZX_INFO_KMEM_STATS
主題不會公開
可由核心回收的記憶體壓力另有
目前只提供 free_bytes
的還價,也就是實體免費的金額
系統的記憶體單靠這個數字並不實用,還可能會
誤導觀眾。透過實際使用的記憶體容量超過免費
因為核心可以透過移除記憶體內的頁面來收回記憶體
壓力。
為系統中各種可用記憶體類型公開指標, 可讓您取得更實用的記憶體診斷資訊
設計
zx_info_kmem_stats_extended_t
結構包含
zx_info_kmem_stats_t
及下列額外欄位:
// The amount of memory committed to pager-backed VMOs.
uint64_t vmo_pager_total_bytes;
// The amount of memory committed to pager-backed VMOs, that has been most
// recently accessed, and would not be eligible for eviction by the kernel
// under memory pressure.
uint64_t vmo_pager_newest_bytes;
// The amount of memory committed to pager-backed VMOs, that has been least
// recently accessed, and would be the first to be evicted by the kernel
// under memory pressure.
uint64_t vmo_pager_oldest_bytes;
// The amount of memory committed to discardable VMOs that is currently
// locked, or unreclaimable by the kernel under memory pressure.
uint64_t vmo_discardable_locked_bytes;
// The amount of memory committed to discardable VMOs that is currently
// unlocked, or reclaimable by the kernel under memory pressure.
uint64_t vmo_discardable_unlocked_bytes;
ZX_INFO_KMEM_STATS_EXTENDED
主題的限制與
ZX_INFO_KMEM_STATS
:也就是需要根資源。
系統會計算vmo_pager_*
透過分頁回應支援的佇列。vmo_discardable_*
欄位目前未實作
設為 0
實作
zx_object_get_info()
系統呼叫可在單一 CL 中擴充。
成效
這是一個新主題,因此現有呼叫端的效能
zx_object_get_info()
不會受到影響。新來電者可以選擇
使用 ZX_INFO_KMEM_STATS
和 ZX_INFO_KMEM_STATS_EXTENDED
,具體取決於
所需的資料精細程度ZX_INFO_KMEM_STATS_EXTENDED
提供更多
執行相關作業時
必須提供額外指標
安全性考量
無。
隱私權注意事項
無。
測試
Zircon 核心測試將寫入 ZX_INFO_KMEM_STATS_EXTENDED
主題。
說明文件
必須更新 zx_object_get_info()
的系統呼叫說明文件。
缺點、替代方案和未知
如果不新增主題,您也可以擴充現有主題
ZX_INFO_KMEM_STATS
主題可公開其他指標。這可能需要
擴充 zx_info_kmem_stats_t
結構以包含新欄位。
這種做法會導致 ZX_INFO_KMEM_STATS
的現有使用者
曝光後的新欄位
ZX_INFO_KMEM_STATS_EXTENDED
的運算成本高昂。例如:
計算網頁總數時,會算出在
網頁伺服器支援的所有 VMOZX_INFO_KMEM_STATS
的現有客戶
最終可能會產生不必要的額外效能成本
甚至不需要指標而是 ZX_INFO_KMEM_STATS_EXTENDED
只有在用戶端需要此額外
詳細資料。
既有藝術品和參考資料
Linux /proc/meminfo
包含 MemAvailable、Active 和 Off 的計數器。