RFC-0011:zx_object_get_info ZX_INFO_KMEM_STATS_EXTENDED

RFC-0011:zx_object_get_info ZX_INFO_KMEM_STATS_EXTENDED
狀態已接受
領域
  • 核心
說明

建議將「ZX_INFO_KMEM_STATS_EXTENDED」新增至 `zx_object_get_info()` syscall。

毛皮變化
  • 446786
作者
審查人員
提交日期 (年-月-日)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_STATSZX_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 的計數器。