[K12OSN] Re: LTSP Lab Slow to Boot (Todd O'Bryan)

Todd O'Bryan toddobryan at gmail.com
Wed Sep 17 17:34:40 UTC 2008


New gigabit card with no driver problems = $20.
Sanity = priceless.

Todd

2008/9/17 robert pogson <robert.pogson at gmail.com>

> I had this problem two years ago. I had to tune the forcedeth drivers with
> module options. It was crazy. The driver would not be able to clear the
> interrupt flag and just pause. I finally adjusted the parameters to polling
> instead of interrupt service. Fortunately this only affected NFS and it was
> not terribly busy.
>
> see
> http://users.sosdg.org/~qiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10<http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10>
>
> "
>
> * Known bugs:*
>  84 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L84> * * We suspect that on some hardware no TX done interrupts are generated.*
>
>  85 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L85> * * This means recovery from netif_stop_queue only happens if the hw timer*
>  86 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L86> * * interrupt fires (100 times/second, configurable with NVREG_POLL_DEFAULT)*
>
>  87 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L87> * * and the timer is active in the IRQMask, or if a rx packet arrives by chance.*
>  88 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L88> * * If your hardware reliably generates tx done interrupts, then you can remove*
>
>  89 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L89> * * DEV_NEED_TIMERIRQ from the driver_data flags.*
>  90 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L90> * * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few*
>
>  91 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L91> * * superfluous timer interrupts from the nic.*
>
> "
>
>>
>> "
>>
>> */**
>> 485 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L485> * * Maximum number of loops until we assume that a bit in the irq mask*
>> 486 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L486> * * is stuck. Overridable with module param.*
>> 487 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L487> * */*
>> 488 <http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L488> static int max_interrupt_work <http://users.sosdg.org/%7Eqiyong/lxr/ident?v=2.6.10;i=max_interrupt_work> = 5;
>>
>>
>
>>
>> "
>
>
> "
>
>  MODULE_PARM_DESC <http://users.sosdg.org/%7Eqiyong/lxr/ident?v=2.6.10;i=MODULE_PARM_DESC>(max_interrupt_work <http://users.sosdg.org/%7Eqiyong/lxr/ident?v=2.6.10;i=max_interrupt_work>, *"forcedeth maximum events handled per interrupt"*);
>
>
> "
>
> Other versions have more options like:
> http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c
> "
>
>  module_param <http://www.gelato.unsw.edu.au/lxr/ident?i=module_param>(max_interrupt_work <http://www.gelato.unsw.edu.au/lxr/ident?i=max_interrupt_work>, int, 0);
> 3406 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3406> MODULE_PARM_DESC <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC>(max_interrupt_work <http://www.gelato.unsw.edu.au/lxr/ident?i=max_interrupt_work>, *"forcedeth maximum events handled per interrupt"*);
> 3407 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3407> module_param <http://www.gelato.unsw.edu.au/lxr/ident?i=module_param>(optimization_mode <http://www.gelato.unsw.edu.au/lxr/ident?i=optimization_mode>, int, 0);
> 3408 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3408> MODULE_PARM_DESC <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC>(optimization_mode <http://www.gelato.unsw.edu.au/lxr/ident?i=optimization_mode>, *"In throughput mode (0), every tx & rx packet will generate an interrupt. In CPU mode (1), interrupts are controlled by a timer."*);
> 3409 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3409> module_param <http://www.gelato.unsw.edu.au/lxr/ident?i=module_param>(poll_interval <http://www.gelato.unsw.edu.au/lxr/ident?i=poll_interval>, int, 0);
> 3410 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3410> MODULE_PARM_DESC <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC>(poll_interval <http://www.gelato.unsw.edu.au/lxr/ident?i=poll_interval>, *"Interval determines how frequent timer interrupt is generated by [(time_in_micro_secs * 100) / (2^10)]. Min is 0 and Max is 65535."*);
> 3411 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3411> module_param <http://www.gelato.unsw.edu.au/lxr/ident?i=module_param>(disable_msi <http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msi>, int, 0);
> 3412 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3412> MODULE_PARM_DESC <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC>(disable_msi <http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msi>, *"Disable MSI interrupts by setting to 1."*);
> 3413 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3413> module_param <http://www.gelato.unsw.edu.au/lxr/ident?i=module_param>(disable_msix <http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msix>, int, 0);
> 3414 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3414> MODULE_PARM_DESC <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC>(disable_msix <http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msix>, *"Disable MSIX interrupts by setting to 1."*);
> 3415 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3415>
> 3416 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3416> MODULE_AUTHOR <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_AUTHOR>(*"Manfred Spraul <manfred at colorfullife.com>"*);
> 3417 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3417> MODULE_DESCRIPTION <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_DESCRIPTION>(*"Reverse Engineered nForce ethernet driver"*);
> 3418 <http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3418> MODULE_LICENSE <http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_LICENSE>(*"GPL"*);
>
> "
>
> I have long forgotten the settings I used, but this may help you find where
> to look. My recollection is that I polled with
> optimization_mode=1
> poll_interval=10000
>
> Your guess is as good as mine what the units were. I just know I could
> transfer 112 MB/s with it.
>
> Thank Goodness we have open source... ;-)
>
> _______________________________________________
> K12OSN mailing list
> K12OSN at redhat.com
> https://www.redhat.com/mailman/listinfo/k12osn
> For more info see <http://www.k12os.org>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/k12osn/attachments/20080917/da03bab2/attachment.htm>


More information about the K12OSN mailing list