簡體   English   中英

Linux PCIe 驅動程序和應用程序顯示高 CPU 使用率

[英]Linux PCIe driver and app showing high CPU Usage

我有一個定制的 Xilinx PCIe 端點硬件,我已經為它編寫了一個 linux 驅動程序以及一個示例應用程序來測試它。 驅動程序正確加載並且設備也被識別。 然后 CPU 使用率也很穩定,直到我運行我的應用程序。 當我運行我的應用程序時,我的 4 個核心中有一個達到 100%,而其他核心保持在 10% 以下。 然后打開任何其他應用程序(可能是 firefox 瀏覽器,就像我一樣),系統完全掛起,需要硬重啟才能恢復正常。 進程明智的 CPU 使用率僅顯示我的應用程序為 25%,其余全部保持在 0-1%。

驅動程序和應用程序之間的通信只是中斷。 當出現 MSI 中斷時,應用程序中對設備文件的讀取調用解除阻塞,應用程序再次開始等待另一個中斷。 我還使用資源文件從應用程序訪問 BAR 區域。

為什么只有一個核心顯示 100% CPU 使用率? 為什么我的系統在啟動另一個應用程序時完全掛起,即使 3 個核心幾乎完全空閑?

發現問題。

在我運行的應用程序中,創建了 4 個線程來處理每個 PCIe 中斷。 除此之外,主要的 function 使用空的 while 循環輪詢全局變量。 這就是 CPU 使用率高的原因。 想出一種方法並使用 usleep 而不是 while 循環並完成。 現在 CPU 使用率低於 20%。

感謝您的意見。

暫無
暫無

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

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