Re: Locks and the FSB

2008-12-01 Thread Elad Lahav
I'm wondering if the high event counts following spin_unlock_irqrestore() are due to an OProfile quirk. OProfile depends on interrupts, which are disabled inside the critical section protected by the spin lock. It may end up accounting for all events that occurred inside the critical section imm

Re: Locks and the FSB

2008-12-01 Thread Elad Lahav
Sorry for the late response. The interrupts apply only to the receive side. Any CPU may put data into the qdisc and I think any CPU may take data of the qdisc and send it. Have you set the process affinity so that the sending process runs on the same CPU the interrupt is raised on? Not in this c

Locks and the FSB

2008-11-26 Thread Elad Lahav
I am looking into some scalability issues on a 4-way Xeon machine (4 separate CPUs, not cores). I believe I have tracked down the problem to bus contention: OProfile results suggest a strong correlation between instructions reporting a high number of global_power_events and FSB_data_activity eve

Re: Kernel Module?

2008-09-12 Thread Elad Lahav
I compiled a software which had a kernel module as well apart from userspace. I am running ubuntu so I have the linux headers that came with ubuntu and linux-2.6.25 source code from kernel.org. Both are in /usr/src. So the module that was built will be of which kernel? A standard module Makefile

Re: Wrong/misleading SoftIRQ statistics in account_system_time()?

2008-09-12 Thread Elad Lahav
I recheck the fact you found and here's what I thought: yes, the tick will be attributed to softirq, however as we know disabling local bottom halves won't happen too long...so soon after it's enabled again, tick accounting will be back attributed to system time. I hacked the kernel so that acco

Wrong/misleading SoftIRQ statistics in account_system_time()?

2008-09-10 Thread Elad Lahav
In account_system_time(), the current tick is accredited to SoftIRQ time if softirq_count() is not 0. This value is incremented by __local_bh_disable(), which is called from __do_softirq(). So far so good. However, __local_bh_disable() is also called from local_bh_disable(), which is called by

Find the calling function

2008-07-24 Thread Elad Lahav
I am trying to determine, in run-time, the where a function was called from. I believe that the standard way of doing this on an x86 is by looking at the top of the stack pointed to by the EBP register. I.e., the following code should yield the return address in 'addr': asm volatile("movl 0x4(

Re: Can /proc/stat be trusted?

2008-07-22 Thread Elad Lahav
Are you running a tick-less kernel? That may explain the variations. Elad I don't think I can really help you here, but I might as well note that I also had problems with /proc/stat. I have my questions regarding its accuracy: http://mail.nl.linux.org/kernelnewbies/2008-07/msg00196.html I sho

Can /proc/stat be trusted?

2008-07-17 Thread Elad Lahav
I am observing some strange numbers in /proc/stat while running a simple micro-benchmark, which transmits UDP packets. The machine is a dual Xeon with HyperThreading, which gives 4 logical processors, and 4 Gigabit NICs, which I am trying to saturate. In the following experiment, I have pinned

Re: IRQ Affinity

2008-06-14 Thread Elad Lahav
Is it possible that they're migrating due to the CPU being masked off for a critical section of code in another process/thread? I think everything gets booted off a CPU when it is being used for a mutex's critical section. The IRQs are masked and routed to other CPUs until the mutex is done a

Re: IRQ Affinity

2008-06-13 Thread Elad Lahav
It turned out to be the fault of the irqbalance service (user mode daemon). I don't know exactly how it operates, but the balancing scheme it employs is clearly sub-optimal. Elad Elad Lahav wrote: Hello all, I have a dual-processor Xeon machine with HyperThreading, for a total of 4 lo

IRQ Affinity

2008-06-13 Thread Elad Lahav
Hello all, I have a dual-processor Xeon machine with HyperThreading, for a total of 4 logical processors. The machine is equipped with 4 Gigabit NICs. I am trying to set the IRQ affinity, so that each NIC is handled by a different logical processor. I do that by writing 1, 2, 4 and 8 to the r

Re: I386 Source code (Filter)

2007-11-15 Thread Elad Lahav
Most of the platform-dependent code is organised under the arch/ and the include/asm- directories. If you use Cscope (or KScope), you can create a project that will omit all of those directories, with the exception of arch/i386, include/asm-i386 and include/asm-generic. Elad [EMAIL PROTECTED

Re: TCP checksum fails

2007-10-26 Thread Elad Lahav
TCP checksum may actually be computed in hardware, so that the value you see in the packet may not be the final checksum value. Which NIC are you using? You can use ethtool to check whether it has TCP offload capabilities. Elad Gaurav Aggarwal wrote: Hi All, I wrote a program where I am using

Re: System-global flag on an x86

2007-10-26 Thread Elad Lahav
No, because that would only turn the flag on inside the kernel. I need it on before the system call starts executing. My quick'n'dirty hack is to user the FPU control word. It is accessible from user mode, very cheap to read and write, globally enforced, and doesn't seem to be causing any seriou

Re: What is a "Software Interrupt" ?

2007-10-25 Thread Elad Lahav
I believe the book was referring to "softirqs", rather than "software interrupts". The latter, also called "Programmed Exceptions", are indeed triggered by an int instruction. The former, however, are a Linux-specific mechanism to handle interrupt bottom-halves, i.e., tasks that should be perfo

System-global flag on an x86

2007-10-23 Thread Elad Lahav
I'd like to know if there's a way to set a system-global flag in user mode that can be read in kernel mode. Specifically, I'd like to know if a NAPI poll function is being executed during a system call that I wrote, so the idea is to set the flag before the system call is invoked, clear it when

Re: how long does a single context switch take ?

2007-10-23 Thread Elad Lahav
What do you mean by a context switch? There are several terms that are sometimes confused with a context switch: 1. Mode switch: The switch between user mode and kernel mode that occurs, for example, at the beginning and end of a system call 2. Address-space switch: Before a thread becomes active,