2016-03-07 107 views
1

我有一些實時Linux內核,我正在開發一些內核線程的代碼。這個線程被以太網中斷處理程序調用。我注意到這個線程的每個調用需要大約100個jiffies。在這個時候它讀取大約256個以太網幀。以太網爲1Gbps,我測得的下載速度約爲4MB/s。我認爲使用1Gbps以太網的4MB/s速度太慢了。linux - 內核線程搶佔

我試圖描述這個內核線程,因爲我認爲100 jiffies太多了。 我想問一下,是否有任何方法可以說明這個內核線程被多次搶佔?

+0

是您的內核編譯啓用了「RT_PREEMPT」選項? – LPs

+0

在內核配置文件中沒有這樣的選項,但uname -a顯示:SMP PREEMPT。 – user2699113

+0

「調用」線程究竟意味着什麼?你的線程正在休眠,中斷處理程序喚醒它?你的jiffy多久了(通常這取決於HZ設置)?在典型的設置下,100個jiffies會很長時間,你的網卡應該能夠在那段時間內接收數萬幀(Gb以太網高達148.8萬fps)。 –

回答

0

如果線程裏面,你可以給有以下printk("preempt count is %d\n",current_thread_info()->preempt_count);

試試您可以在線程的入口添加此檢查連續打印之間的計數值差值