Bound squeue worker threads and real time application threads conflict - resulting in latency and/or hangs. (Doc ID 2090316.1)

Last updated on JULY 29, 2016

Applies to:

Solaris Operating System - Version 11.1 to 11.3 [Release 11.0]
Information in this document applies to any platform.

Symptoms

A customer has applications that run with real-time (RT) class priorities.   In some cases these applications are bound to processor sets on individual CPUs or a range of CPUs.  These applications communicate via TCP to other application on the local system.

On occasion, applications will hang up, with threads having this kernel stack:

 genunix:cv_wait+0x3c()
 ip:squeue_synch_enter+0x170()
 ip:tcp_setsockopt+0x34()
 sockfs:so_setsockopt+0x340()
 sockfs:socket_setsockopt+0x44()
 sockfs:setsockopt+0xd0(()
 unix:_syscall_no_proc_exit+0x58()

Meanwhile an squeue worker thread is here:

  genunix:cv_wait+0x3c(()
  ip:squeue_worker+0xd4()
  thread_start+4()

Waiting on the same squeue - which is waiting behind a higher priority RT application thread on the same CPU.

Other customers have reported frequent of a few to several hundred milliseconds in network operations when running real time (RT) processes.

Changes

The only difference here vs. normal networking is that the applications are running in the real-time (RT) scheduling class, which gives them a higher priority than the squeue_worker() threads. 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms