Wnnn processes consuming high CPU

(Doc ID 1492880.1)

Last updated on DECEMBER 06, 2016

Applies to:

Oracle Server - Enterprise Edition - Version 11.2.0.1.0 and later
Information in this document applies to any platform.

Symptoms

High CPU consumed by Wnnn processes observed.

For convenience use "top -c" - which will show background slaves ora_w0nn under top's Command column.

top - 11:08:00 up 147 days, 23:30, 1 user, load average: 4.73, 5.18, 5.34
Tasks: 845 total, 6 running, 839 sleeping, 0 stopped, 0 zombie
top - 11:08:23 up 147 days, 23:31, 1 user, load average: 4.82, 5.17, 5.33
Tasks: 846 total, 4 running, 842 sleeping, 0 stopped, 0 zombie
Cpu(s): 10.6%us, 1.9%sy, 0.0%ni, 86.2%id, 1.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 148446540k total, 139612032k used, 8834508k free, 866792k buffers
Swap: 75497464k total, 136668k used, 75360796k free, 45116728k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

26031 oracle 15 0 70.2g 26m 21m S 46.1 0.0 42108:40 ora_w005_bkm0301p
27127 oracle 15 0 70.2g 26m 21m S 39.8 0.0 44161:10 ora_w006_bkm0301p
26523 oracle 16 0 70.2g 26m 21m S 28.2 0.0 15970:03 ora_w000_bkm0301p
26905 oracle 15 0 70.3g 72m 40m S 23.2 0.1 47129:16 ora_w008_bkm0301p
29909 oracle 15 0 70.2g 26m 21m S 20.5 0.0 47406:00 ora_w009_bkm0301p
28496 oracle 15 0 70.2g 26m 21m S 15.2 0.0 21234:57 ora_w001_bkm0301p
9556 oracle 15 0 70.2g 26m 21m S 14.2 0.0 30517:23 ora_w002_bkm0301p

Gather errorstacks on the processes consuming high cpu.

$ sqlplus "/as sysdba"
oradebug setospid <process ID>
oradebug unlimit
oradebug dump errorstack 3
-- wait 90 seconds
oradebug dump errorstack 3
-- wait 90 seconds
oradebug dump errorstack 3
oradebug tracefile_name
exit

Trace files from Wnnn point to the same stack when the background processes are on CPU:

skdstdst <- ksedst1 <- ksedst <- dbkedDefDump <- ksedmp
<- ksdxfdmp <- ksdxcb <- sspuser <- sighandler <- times
<- sltrgatime64 <- ktuGetExtTxnInfo <- ktuxcm <- ktslf_sumfsb <- ktslf_sumfsg
<- ktslfsum_cfs <- ktslfsum <- ktslj_check_freespa <- ktslj_segextce
<- ktsj_execute_task <- ktsj_slave_main <- 597 <- ksvrdp <- opirip
<- opidrv <- sou2o <- opimai_real <- ssthrdmain <- main

The process state of Wnnm for the above stacks also contains the BUFFER BUSY waits:
E.g.:

process state

SO: 0x1186d493d0, type: 4, owner: 0x11d3dec5a0, flag: INIT/-/-/0x00 if: 0x3 c: 0x3
proc=0x11d3dec5a0, name=session, file=ksu.h LINE:12459, pg=0
(session) sid: 12542 ser: 5043 trans: (nil), creator: 0x11d3dec5a0
flags: (0x51) USR/- flags_idl: (0x1) BSY/-/-/-/-/-
flags2: (0xc0408) -/-
DID: , short-term DID:
txn branch: (nil)
oct: 0, prv: 0, sql: (nil), psql: 0x11ceeb8ad0, user: 0/SYS
ksuxds FALSE at location: 0
service name: SYS$BACKGROUND
Current Wait Stack:
Not in wait; last wait ended 0.426297 sec ago
Wait State:
fixed_waits=0 flags=0x28 boundary=(nil)/-1
Session Wait History:
elapsed time of 0.426318 sec since last wait
0: waited for 'buffer busy waits'
file#=0x7, block#=0x39a0, class#=0x35
wait_id=861559915 seq_num=41637 snap_id=1
wait times: snap=0.000044 sec, exc=0.000044 sec, total=0.000044 sec
wait times: max=infinite
wait counts: calls=2 os=2
occurred after 0.001519 sec of elapsed time

 

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