Project

General

Profile

Actions

Bug #14437

open

cyclics corked on overlay socket with full queue

Added by Andy Fiddaman 5 months ago. Updated 5 months ago.

Status:
New
Priority:
Normal
Assignee:
Category:
networking
Start date:
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

This is an upstream of Joyent's OS-7088 - https://smartos.org/bugview/OS-7088

going to sleep during a ksocket transmission seems like less-than-ideal behavior for overlay.

> fffffe00f4f2fc40::findstack -v
stack pointer for thread fffffe00f4f2fc40: fffffe00f4f2cb10
[ fffffe00f4f2cb10 resume_from_intr+0xb7() ]
  fffffe00f4f2cb40 swtch+0x82()
  fffffe00f4f2cb80 cv_wait+0x70(fffffeb1abaca928, fffffeb1abaca7e0)
  fffffe00f4f2cbf0 cv_wait_sig+0x82(fffffeb1abaca928, fffffeb1abaca7e0)
  fffffe00f4f2cc30 so_snd_wait_qnotfull_locked+0x69(fffffeb1abaca7c0, 0)
  fffffe00f4f2cc70 so_snd_wait_qnotfull+0x3c(fffffeb1abaca7c0, 0)
  fffffe00f4f2cd10 so_sendmblk_impl+0x226(fffffeb1abaca7c0, fffffe00f4f2cee0, 0, fffffeb15f3a0e18, fffffe00f4f2cea8, 0, 0)
  fffffe00f4f2cda0 so_sendmblk+0xb3(fffffeb1abaca7c0, fffffe00f4f2cee0, 0, fffffeb15f3a0e18, fffffe00f4f2cea8)
  fffffe00f4f2cdf0 socket_sendmblk+0x23(fffffeb1abaca7c0, fffffe00f4f2cee0, 0, fffffeb15f3a0e18, fffffe00f4f2cea8)
  fffffe00f4f2ce90 ksocket_sendmblk+0xed(fffffeb1abaca7c0, fffffe00f4f2cee0, 0, fffffe00f4f2cea8, fffffeb15f3a0e18)
  fffffe00f4f2ced0 overlay_mux_tx+0x2e(fffffeb1d5ce3b00, fffffe00f4f2cee0, ffffff970c030480)
  fffffe00f4f2d080 overlay_m_tx+0x155(fffffeb1d6279c40, ffffff970c0304c0)
  fffffe00f4f2d170 mac_tx_send+0x732(fffffed531366ab0, 0, ffffff970c0304c0, fffffe00f4f2d190)
  fffffe00f4f2d210 mac_tx_single_ring_mode+0x6e(fffffeb2142ac640, ffffff970c0304c0, eba690ec, 1, 0)
  fffffe00f4f2d2c0 mac_tx+0xda(fffffed531366ab0, ffffff970c0304c0, eba690ec, 1, 0)
  fffffe00f4f2d310 str_mdata_fastpath_put+0x53(fffffeb1f3fbc500, ffffff970c0304c0, eba690ec, 1)
  fffffe00f4f2d420 ip_xmit+0x82d(ffffff970c0304c0, fffffeb2aa4e1390, 180036060, 4a, eba690ec, 0, fffffeb100000000, fffffefa852c58a8)
  fffffe00f4f2d680 ire_send_wire_v4+0x401(fffffeb3c8486ca8, ffffff970c0304c0, fffffede59ec41ec, fffffefa852c5740, fffffed284cd66a8)
  fffffe00f4f2d700 conn_ip_output+0x190(ffffff970c0304c0, fffffefa852c5740)
  fffffe00f4f2d730 tcp_send_data+0x59(ffffff5d348763c0, ffffff970c0304c0)
  fffffe00f4f2d7c0 tcp_output+0x58c(ffffff5d348760c0, fffffeb1ceb6e560, fffffeb1ff5ddac0, 0)
  fffffe00f4f2da10 squeue_drain+0x1c8(fffffeb1ff5ddac0, 4, 36f0269621f465)
  fffffe00f4f2daa0 squeue_enter+0x27e(fffffeb1ff5ddac0, fffffeb1c067f100, fffffeb1c067f100, 1, fffffe00f4f2ddd0, 4, fffffeb200000004)
  fffffe00f4f2db90 ip_fanout_v4+0xc90(fffffeb1c067f100, fffffedafde77afa, fffffe00f4f2ddd0)
  fffffe00f4f2dc00 ip_input_local_v4+0x16e(ffffff4700509b78, fffffeb1c067f100, fffffedafde77afa, fffffe00f4f2ddd0)
  fffffe00f4f2dc70 ire_recv_local_v4+0x132(ffffff4700509b78, fffffeb1c067f100, fffffedafde77afa, fffffe00f4f2ddd0)
  fffffe00f4f2dd90 ill_input_short_v4+0x4d6(fffffeb1c067f100, fffffedafde77afa, fffffedafde77b0a, fffffe00f4f2ddd0, fffffe00f4f2df60)
  fffffe00f4f2dff0 ip_input_common_v4+0x3a7(fffffed77cc68228, fffffed9870031f0, fffffeb1c067f100, 0, 0, 0, 0)
  fffffe00f4f2e030 ip_input+0x2b(fffffed77cc68228, fffffed9870031f0, fffffeb1c067f100, 0)
  fffffe00f4f2e0c0 mac_rx_soft_ring_process+0x19a(fffffed531366ab0, fffffed349bf5300, fffffeb1c067f100, fffffeb1c067f100, 1, 0)
  fffffe00f4f2e970 mac_rx_srs_fanout+0x3b2(fffffed94a717000, fffffeb1c067f100)
  fffffe00f4f2e9f0 mac_rx_srs_drain+0x256(fffffed94a717000, 800)
  fffffe00f4f2ea80 mac_rx_srs_process+0x425(fffffeb1f89edcb0, fffffed94a717000, fffffeb1c067f100, 0)
  fffffe00f4f2ead0 mac_rx_classify+0x11d(fffffeb1f89edcb0, 0, fffffeb1c067f100)
  fffffe00f4f2eb40 mac_rx_flow+0x63(fffffeb1f89edcb0, 0, fffffeb1c067f100)
  fffffe00f4f2eba0 mac_rx_common+0x1e6(fffffeb1f89edcb0, 0, fffffeb1c067f100)
  fffffe00f4f2ec00 mac_rx+0xb6(fffffeb1f89edcb0, 0, fffffeb1c067f100)
  fffffe00f4f2ee20 overlay_mux_recv+0x2f8(fffffeb1abaca7c0, fffffeb1b340db00, 4e, 0, fffffeb1d5ce3b00)
  fffffe00f4f2eec0 so_queue_msg_impl+0x127(fffffeb1abaca7c0, fffffeb1b340db00, 4e, 0, fffffe00f4f2ef2c, 0, 0)
  fffffe00f4f2ef10 so_queue_msg+0x30(fffffeb1abaca7c0, fffffeb1b340db00, 4e, 0, fffffe00f4f2ef2c, 0)
  fffffe00f4f2ef80 udp_ulp_recv+0xa3(fffffeb1abac8b00, fffffeb1b340db00, 4e, fffffe00f4f2f410)
  fffffe00f4f2f0e0 udp_input+0x3c2(fffffeb1abac8b00, fffffeb1c067f100, 0, fffffe00f4f2f410)
  fffffe00f4f2f1d0 ip_fanout_v4+0xd3d(fffffeb1c067f100, fffffedafde77ac4, fffffe00f4f2f410)
  fffffe00f4f2f240 ip_input_local_v4+0x16e(fffffeb1bacd9430, fffffeb1c067f100, fffffedafde77ac4, fffffe00f4f2f410)
  fffffe00f4f2f2b0 ire_recv_local_v4+0x132(fffffeb1bacd9430, fffffeb1c067f100, fffffedafde77ac4, fffffe00f4f2f410)
  fffffe00f4f2f3d0 ill_input_short_v4+0x4d6(fffffeb1c067f100, fffffedafde77ac4, fffffedafde77ad4, fffffe00f4f2f410, fffffe00f4f2f5a0)
  fffffe00f4f2f630 ip_input_common_v4+0x3a7(fffffeb1ba9b7ca8, 0, fffffeb1c067f100, 0, 0, 0, 0)
  fffffe00f4f2f670 ip_input+0x2b(fffffeb1ba9b7ca8, 0, fffffeb1c067f100, 0)
  fffffe00f4f2f700 mac_rx_soft_ring_process+0x19a(fffffeb1807a4aa8, fffffeb1ba980040, fffffeb1c067f100, fffffeb1c067f100, 1, 0)
  fffffe00f4f2f830 mac_rx_srs_proto_fanout+0x29a(fffffeb1badb39c0, fffffeb1c067f100)
  fffffe00f4f2f8b0 mac_rx_srs_drain+0x363(fffffeb1badb39c0, 800)
  fffffe00f4f2f940 mac_rx_srs_process+0x425(fffffeb180782258, fffffeb1badb39c0, fffffeb1c067f100, 0)
  fffffe00f4f2f990 mac_rx_classify+0x11d(fffffeb180782258, fffffeb180c31d90, fffffeb1c067f100)
  fffffe00f4f2fa00 mac_rx_flow+0x63(fffffeb180782258, fffffeb180c31d90, ffffff46f9fd18c0)
  fffffe00f4f2fa60 mac_rx_common+0x1e6(fffffeb180782258, fffffeb180c31d90, ffffff46f9fd18c0)
  fffffe00f4f2fac0 mac_rx+0xb6(fffffeb180782258, fffffeb180c31d90, ffffff46f9fd18c0)
  fffffe00f4f2fb00 mac_rx_ring+0x2b(fffffeb180782258, fffffeb180c31d90, ffffff46f9fd18c0, 1)
  fffffe00f4f2fb50 i40e_intr_rx_work+0x93(fffffeb1805d9000, 1)
  fffffe00f4f2fb90 i40e_intr_msix+0x34(fffffeb1805d9000, 2)
  fffffe00f4f2fbe0 apix_dispatch_by_vector+0x8c(20)
  fffffe00f4f2fc20 apix_dispatch_lowlevel+0x25(20, 0)
  fffffe00f4edea60 switch_sp_and_call+0x13()
  fffffe00f4edeac0 apix_do_interrupt+0xfe(fffffe00f4edead0, 0)
  fffffe00f4edead0 _interrupt+0xba()
  fffffe00f4edebc0 i86_mwait+0xd()
  fffffe00f4edec00 cpu_idle_mwait+0x109()
  fffffe00f4edec20 idle+0xa7()
  fffffe00f4edec30 thread_start+8()

Related issues

Related to illumos gate - Feature #13500: Want support for overlay networksClosedAndy Fiddaman

Actions
Actions #1

Updated by Andy Fiddaman 5 months ago

Actions #2

Updated by Andy Fiddaman 5 months ago

  • Assignee set to Andy Fiddaman
Actions #3

Updated by Dan McDonald 5 months ago

Note (stated in the bugview link) that the proposed solution here is one of two, the simpler drop-it version. A version that uses mac(9E)'s flow control is here as a webrev:

http://kebe.com/~danmcd/webrevs/OS-7088-flowcontrol/

And the corresponding SmartOS bug is here:

https://smartos.org/bugview/OS-8238
Actions

Also available in: Atom PDF