[fbsd] Re: [fbsd] Network performance in a dual CPU system
Marcos Bedinelli
bedinelli at madhaus.cns.utoronto.ca
Fri Apr 28 13:02:48 UTC 2006
Hi,
On 27-Apr-06, at 10:38, Jeremie Le Hen wrote:
> Hi, Robert,
>
> On Thu, Apr 27, 2006 at 02:54:21PM +0100, Robert Watson wrote:
>>
>> On Thu, 27 Apr 2006, Jeremie Le Hen wrote:
>>
>>>> PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU
>>>> COMMAND
>>>> 60 root 1 -44 -163 0K 8K WAIT 355.6H 72.17%
>>>> swi1:
>>>> net
>>>> 39 root 1 -68 -187 0K 8K WAIT 52.3H 5.22%
>>>> irq28:
>>>> bge0
>>>> 40 root 1 -68 -187 0K 8K WAIT 28.3H 2.25%
>>>> irq29:
>>>> bge1
>>>> 11 root 1 171 52 0K 8K RUN 166.6H 0.00% idle
>>>> 63 root 1 -16 0 0K 8K - 121:55 0.00%
>>>> yarrow
>>>> 61 root 1 -32 -151 0K 8K WAIT 46:21 0.00%
>>>> swi4:
>>>> clock sio
>>>> [...]
>>>>
>>>> Does anyone know whether a dual CPU system can help us improve the
>>>> situation? I was wondering if the software interrupt threads would
>>>> be
>>>> divided between the two processors.
>>
>> I missed the original thread, but in answer to the question: if you
>> set
>> net.isr.direct=1, then FreeBSD 6.x will run the netisr code in the
>> ithread
>> of the network device driver. This will allow the IP forwarding and
>> related paths in two threads instead of one, potentially allowing
>> greater
>> parallelism. Of course, you also potentially contend more locks, you
>> may
>> increase the time it takes for the ithread to respond to new
>> interrupts,
>> etc, so it's not quite cut and dry, but with a workload like the one
>> shown
>> above, it might make quite a difference.
>
> Actually you already replied in the original thread, explaining mostly
> the same thing. The whole thread [1] brought up multiple valuable
> network performance tuning knobs, such as polling, fastforwarding,
> net.isr.direct but there is no happy end to the thread. Given this is
> a real world situation, I wanted to know how Marcos revolved his
> problem.
Shortly after I opened the thread, most replies I received (from the
list or privately) were saying that a second CPU either wouldn't help
to improve the situation, or that the performance gain was unclear. We
had an immediate problem to solve and the management wasn't comfortable
in throwing money at new and expensive hardware that, in the end, might
or might not solve the issue.
The performance gain with fastforwarding enabled was almost 20% and
that's what we've been running since.
Note, however, that I am also using virtual interface disc0 and that
fastforwarding doesn't work with that interface (at least prior to and
including FreeBSD 6.0-release-p4). Gleb Smirnoff sent me a one-line
patch that fixed the problem.
Hope this helps.
Regards,
--
Marcos
More information about the freebsd-net
mailing list