簡體   English   中英

Perf緩沖區的確切大小是多少?

[英]What is the exactly Perf buffer size?

在閱讀perf_event_open()手冊之后,我對捕獲采樣事件中的緩沖區大小有一些疑問。

在說明部分,它說

采樣事件會定期將測量結果寫入緩沖區,然后可以通過mmap(2)訪問該緩沖區。

當緩沖區溢出時,PMU將觸發PMI,我們可以通過mmap()系統調用訪問緩沖區的內容。 (我的理解正確嗎?)

但是問題是,Perf緩沖區有多大? 我可以設置一個新值(緩沖區長度)來覆蓋它嗎?

struct perf_event_mmap_page中的變量__u64 data_size僅指示這次的記錄大小。

當您說可以使用mmap定期收集性能數據時,您的理解是正確的。

在開始之前, perf使用兩個緩沖區來記錄不同類型的事件。 在主環形緩沖區(環形緩沖區包含此輔助緩沖區)下使用輔助緩沖區來存儲不同類型的事件信息 由於您是在詢問有關主要性能緩沖區的問題,因此我將盡力回答。

您可以修改perf緩沖區大小。 具體根據文檔中, perf緩沖器大小以來定義。 它定義為1 + 2 ^ n頁,其中需要一頁來存儲有關perf使用的環形緩沖區的元數據。

當您嘗試使用perf record記錄事件時(請閱讀perf record的聯機幫助頁),您將擁有一個-m開關,該開關可讓您指定增加/減少perf環形緩沖區的頁面數。 您指定的(mmap)頁數必須是2的冪。(但是,您也可以直接指定大小)將頁數增加1將使環形緩沖區的大小增加4 kB (即大小,在代碼中由1 << 12指定)。

但是,據我所知,此頁數只能達到2 ^ 31 此外,使用如此大的緩沖區將有可能根本不記錄任何事件或記錄任意事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM