簡體   English   中英

為單獨的進程並行運行單獨的性能記錄

[英]Running separate perf record for separate processes parallely

我想為單獨的進程並行運行性能記錄,以便我可以生成分析數據並單獨分析。 但是,在並行運行兩個perf record -F 99 -g -o <executable_name>.data -- <executable with args>時,我收到一個terminate called after throwing an instance of 'std::system_error' what(): Device or resource busy錯誤。

我已確保並行運行的進程沒有問題,並且我還使用-o option將 perf 輸出寫入單獨的文件。

如何並行運行兩個 perf 記錄?

編輯:性能版本 4.18.0-348.7.1.el8_5.x86_64

問題是試圖鎖定過多的內存。 以 root 身份運行其中一個對我有用,但有更好的方法,例如提高ulimit -l mlock 限制。


我在自己的系統上嘗試過(內核/性能版本 5.16)。 它失敗了

Permission error mapping pages.
Consider increasing /proc/sys/kernel/perf_event_mlock_kb,
or try again with a smaller value of -m/--mmap_pages.
(current value: 4294967295,0)

據推測,舊版本的perf的錯誤消息不太有用。 IDK“當前值”輸出是關於什么的: cat /proc/sys/kernel/perf_event_mlock_kb說它是516 也許它只是-1表示無限,從其他設置中獲取最大大小。

516 比我的ulimit -l的 1024 的一半多一點(最大鎖定內存以千字節為單位)。

不幸的是perf record --mmap_pages $((400/4))四舍五入到 128 頁 (512 KiB); 這可能是最低限度或其他東西。 2x 512 是 1024,但它仍然無法使用。 也許我有其他東西在鎖定頁面運行。

像其他一些設置一樣, ulimit -l是跨進程的每個用戶,因此提高它應該可以工作。

我沒有調查更改/proc/sys/kernel/perf_event_mlock_kb

暫無
暫無

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

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