Project

General

Profile

Bug #12262

Suboptimal vmem hash table slows down boot

Added by Marcel Telka 12 months ago. Updated 12 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
kernel
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

We noticed on some machines booting custom install image over PXE very long delay (about 30 minutes) in the middle of the boot. The delay is caused by extremely slow i40e_m_stop() with this stack:

[0]> ::stack
kmdb_enter+0xb()
debug_enter+0x5d(fffffffff7944132)
apix`apic_nmi_intr+0x95(0, fffffffffbc73770)
av_dispatch_nmivect+0x34(fffffffffbc73770)
nmiint+0x152()
vmem_hash_delete+0x6d(fffffffffbccd2e0, ffffc1338dfe8000, 1000)
vmem_xfree+0x4b(fffffffffbccd2e0, ffffc1338dfe8000, 1000)
vmem_free+0x23(fffffffffbccd2e0, ffffc1338dfe8000, 1000)
contig_free+0xdc(ffffc1338dfe8000, 800)
kfreea+0x65(ffffc1338dfe8000)
i_ddi_mem_free+0x35(ffffc1338dfe8000, ffffc1338dd75c80)
ddi_dma_mem_free+0x27(ffffc1338d7d2368)
i40e`i40e_free_dma_buffer+0x48(ffffc1338d7d2358)
i40e`i40e_free_tx_dma+0x4d(ffffc1338c263000)
i40e`i40e_free_ring_mem+0x67(ffffc1338be5f000, 0)
i40e`i40e_stop+0x207(ffffc1338be5f000, 1)
i40e`i40e_m_stop+0x3b(ffffc1338be5f000)
mac`mac_stop+0x6c(ffffc1338c317810)
dls`dls_close+0xe4(ffffc1338c6c8e48)
dld`dld_str_detach+0x5f(ffffc1338c6c8e48)
dld`dld_str_close+0x6a(ffffc1338c20fa48)
dld`dld_close+0x20(ffffc1338c20fa48)
qdetach+0x9b(ffffc1338c20fa48, 1, 40000003, ffffc13382359db0, 0)
strclose+0x2c1(ffffc1338c210b80, 40000003, ffffc13382359db0)
specfs`device_close+0xb9(ffffc1338c210c80, 40000003, ffffc13382359db0)
specfs`spec_close+0x17b(ffffc1338c210c80, 40000003, 1, 0, ffffc13382359db0, 0)
fop_close+0x61(ffffc1338c210c80, 40000003, 1, 0, ffffc13382359db0, 0)
ldi_close+0x93(ffffc1338bd92aa8, 3, ffffc13382359db0)
strplumb`getmacaddr+0x174(ffffc13380a327f8, fffffffffbc73fb0)
strplumb`matchmac+0xa4(ffffc13380a327f8, fffffffffbc74338)
walk_devs+0x56(ffffc13380a327f8, fffffffff7a11d70, fffffffffbc74338, 1)
walk_devs+0xc6(ffffc13380a32aa0, fffffffff7a11d70, fffffffffbc74338, 1)
walk_devs+0xc6(ffffc13380a32d48, fffffffff7a11d70, fffffffffbc74338, 1)
walk_devs+0xc6(ffffc133809fb550, fffffffff7a11d70, fffffffffbc74338, 1)
walk_devs+0xc6(ffffc13382341d58, fffffffff7a11d70, fffffffffbc74338, 1)
walk_devs+0xc6(ffffc133721fad50, fffffffff7a11d70, fffffffffbc74338, 1)
ddi_walk_devs+0x1e(ffffc133721fad50, fffffffff7a11d70, fffffffffbc74338)
strplumb`strplumb_get_netdev_path+0x89()
strplumb`resolve_boot_path+0xcd()     
strplumb`strplumb+0x31()              
stubs_common_code+0x51()              
main+0x47b()                          
_locore_start+0x90()                  
[0]>

Once we installed our custom illumos build from that slowly booting install image all subsequent boots were fast as usual.


Related issues

Related to illumos gate - Bug #12958: i40e allocates large amounts of DMAClosed

Actions

Also available in: Atom PDF