Opened 5 days ago

Last modified 5 hours ago

#19138 new bug

"bge intr handler" thread using 100% CPU

Reported by: Morgul Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: Drivers/Network/broadcom570x Version: R1/beta5
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description

One of the two "bge intr handler" threads on kernel_team uses 100% CPU on the CPU core it's assigned to, and it never stops that high CPU usage.

Asking on the IRC channel, I was told bge means "Broadcom Gigabit Ethernet", and that's the network card I have. It's embedded on my motherboard, and it has two ethernet ports (I guess that's why there's two such threads, one per port/network interface).

But aside from that core using 100% CPU, everything else seems to work fine, including the Internet connection through ethernet on those motherboard ports. I can't tell if it's working slower than it should, but it works perfectly alright. So please, don't blacklist this device :) It's the only one I have for network access on this computer, and it works.

The Haiku version I'm using it up-to-date R1/beta5 x86_64, hrev57937+118

Device information on listdev, it appears twice:

device Network controller (Ethernet controller) [2|0|0]
  vendor 14e4: Broadcom Inc. and subsidiaries
  device 16b1: NetLink BCM57781 Gigabit Ethernet PCIe

Related listimage entry:

 7516 0xffffffff82639000 0xffffffff82666000     0          0 /boot/system/add-ons/kernel/drivers/dev/net/broadcom570x

Attachments (2)

syslog.txt (4.5 KB ) - added by Morgul 5 days ago.
syslog extract
syslog_pci.txt (57.4 KB ) - added by Morgul 6 hours ago.
PCI information from Syslog

Download all attachments as: .zip

Change History (10)

by Morgul, 5 days ago

Attachment: syslog.txt added

syslog extract

comment:1 by waddlesplash, 5 days ago

Component: DriversDrivers/Network/broadcom570x

comment:2 by Morgul, 5 days ago

I'm running Haiku on real hardware, by the way, it's not a virtual machine.

comment:3 by waddlesplash, 4 days ago

Please also include the PCI configuration information from the syslog for this device.

comment:4 by waddlesplash, 4 days ago

I can't immediately see where or how this would be happening. Can you run profile -a -f for a few seconds, then Ctrl+C it and look for the "bge intr handler" thread in the output, and copy it here?

comment:5 by waddlesplash, 3 days ago

Please see if hrev58193 improves things here.

by Morgul, 6 hours ago

Attachment: syslog_pci.txt added

PCI information from Syslog

in reply to:  3 comment:6 by Morgul, 6 hours ago

Replying to waddlesplash:

Please also include the PCI configuration information from the syslog for this device.

I have attached it, on syslog_pci.txt

in reply to:  4 comment:7 by Morgul, 6 hours ago

Replying to waddlesplash:

I can't immediately see where or how this would be happening. Can you run profile -a -f for a few seconds, then Ctrl+C it and look for the "bge intr handler" thread in the output, and copy it here?

Sure, there you go:

profiling results for thread "bge intr handler" (183):
  tick interval:  1000 us
  total ticks:    9979 (9979000 us)
  expected ticks: 10278 (missed 299)
  unknown ticks:  9979 (9979000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "bge intr handler" (184):
  tick interval:  1000 us
  total ticks:    1 (1000 us)
  expected ticks: 1 (missed 0)
  unknown ticks:  1 (1000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

Edit: I'll add also idle thread information, because it reflects the thread being used by that task:

profiling results for thread "idle thread 1" (1):
  tick interval:  1000 us
  total ticks:    9999 (9999000 us)
  expected ticks: 10286 (missed 287)
  unknown ticks:  9999 (9999000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "idle thread 2" (2):
  tick interval:  1000 us
  total ticks:    9889 (9889000 us)
  expected ticks: 10181 (missed 292)
  unknown ticks:  9889 (9889000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "idle thread 3" (3):
  tick interval:  1000 us
  total ticks:    9940 (9940000 us)
  expected ticks: 10235 (missed 295)
  unknown ticks:  9940 (9940000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "idle thread 4" (4):
  tick interval:  1000 us
  total ticks:    24 (24000 us)
  expected ticks: 24 (missed 0)
  unknown ticks:  24 (24000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "idle thread 5" (5):
  tick interval:  1000 us
  total ticks:    10005 (10005000 us)
  expected ticks: 10291 (missed 286)
  unknown ticks:  10005 (10005000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "idle thread 6" (6):
  tick interval:  1000 us
  total ticks:    10005 (10005000 us)
  expected ticks: 10300 (missed 295)
  unknown ticks:  10005 (10005000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "idle thread 7" (7):
  tick interval:  1000 us
  total ticks:    9862 (9862000 us)
  expected ticks: 10162 (missed 300)
  unknown ticks:  9862 (9862000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit

profiling results for thread "idle thread 8" (8):
  tick interval:  1000 us
  total ticks:    9999 (9999000 us)
  expected ticks: 10304 (missed 305)
  unknown ticks:  9999 (9999000 us, 100.00%)
  dropped ticks:  0 (0 us,   0.00%)
  samples/tick:   0.0
  no functions were hit
Last edited 6 hours ago by Morgul (previous) (diff)

in reply to:  5 comment:8 by Morgul, 5 hours ago

Replying to waddlesplash:

Please see if hrev58193 improves things here.

Actually, yes! It seems it does! I upgraded my system to the latest nightly, hrev58198, and now all CPU threads are idle!

Note: See TracTickets for help on using tickets.