Kernel-Modules
PCI 硬體訪問速度 - 核心與使用者空間
你好 Linux 專家!
我試圖找到控制和強調 PCI 設備的最佳方法。我開始編寫一個簡單的 bash 腳本,它使用來自 pciutils (lspci & setpci) 的命令來配置設備並在匯流排上創建流量
雖然腳本工作得很好,但它們的執行速度似乎比 PCIe 連結速度慢得多,因此很難在匯流排上產生壓力,或者在電源模式和連結速度之間快速切換。
我想知道,如果我寫了一個核心模組來呼叫 pci.h 庫中的函式,它的執行會更快嗎?我能否更快地訪問 PCI 設備?
任何幫助將不勝感激:)
在 shell 中呼叫外部命令來做任何事情都會產生大量的成本。Fork/exec 的成本相對較高。
直接使用 API(而不是通過呼叫 CLI 實用程序)從 shell 腳本轉移到使用者空間 C 程序將是一個巨大的加速。也比編寫核心模組更容易。如果您可以找到腳本語言(Perl、Python、Ruby 等)的 API 綁定,那麼速度幾乎一樣快。
仍然存在成本(例如,系統呼叫成本),您可以通過轉換為核心模組來消除這些成本。那時,您基本上已經消除了所有成本,並且您變得更快的唯一方法是擺脫作業系統和/或自定義測試硬體。
PS:關於如何實際編寫使用者空間 C 程序或核心模組的問題可能最好在Stack Overflow上提問,Stack Overflow網站上的程式問題。與任何 Stack Exchange 網站一樣,請在此處發布問題之前查看他們的Stack Overflow 幫助中心。他們特別有一些關於提出廣受歡迎的問題的有用提示。