2016-03-07 106 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);

试试您可以在线程的入口添加此检查连续打印之间的计数值差值