[20210218]shared latch spin count 5.txt
[20210218]shared latch spin count 5.txt
--//节前的测试,链接http://blog.itpub.net/267265/viewspace-2756963/=>[20200426]查看shared latch gets的变化.txt,
--//我发现如果大量shared latch出现,也会出现少量进入spin状态。
--//按照文中链接介绍,spin_count最大数量是cpu_count+2.如何测试呢?
--//本来年前可以完成的测试,但是没想到测试遇到许多困难,只能拖到年后完成.
1.环境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SYS@book> create pfile='/tmp/@.ora' from spfile ;
File created.
--//关闭数据库.修改/tmp/book.ora文件加入或者修改:
*.audit_trail='NONE'
*.cpu_count=4
*.audit_sys_operations=TRUE
*.audit_syslog_level='Local0.info'
SYS@book> startup pfile='/tmp/@.ora';
ORACLE instance started.
Total System Global Area 643084288 bytes
Fixed Size 2255872 bytes
Variable Size 205521920 bytes
Database Buffers 427819008 bytes
Redo Buffers 7487488 bytes
Database mounted.
Database opened.
SYS@book> show parameter cpu_count
NAME TYPE VALUE
--------- ------- -----
cpu_count integer 4
SYS@book> show parameter audit
NAME TYPE VALUE
-------------------- ------- --------------------------------
audit_file_dest string /u01/app/oracle/admin/book/adump
audit_sys_operations boolean TRUE
audit_syslog_level string LOCAL0.INFO
audit_trail string NONE
--//修改/etc/rsyslog.conf文件,主要目的是减少跟踪文件的产生.注解如下:
#*.info;mail.none;authpriv.none;cron.none /var/log/messages
#local0.infO /var/log/oracleaudit.log
#*.* ?FILENAME
--//重启rsyslog服务.
# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
--//注这样实际上还是写/u01/app/oracle/diag/rdbms/book/book/trace,测试前一定保持足够的磁盘空间.
2.建立测试脚本:
--//测试需要的脚本如下:
$ cat viewlatch.sql
SELECT addr
,name
,level#
,GETS
,MISSES
,SLEEPS
,IMMEDIATE_GETS
,IMMEDIATE_MISSES
,WAITERS_WOKEN
,WAITS_HOLDING_LATCH
,SPIN_GETS
,WAIT_TIME
FROM v$latch_parent
WHERE LOWER (name) LIKE '%' || LOWER ('&&1') || '%';
SYS@book> @ viewlatch.sql 'gcs partitioned table hash'
@ prxx
ADDR NAME LEVEL# GETS MISSES SLEEPS IMMEDIATE_GETS IMMEDIATE_MISSES WAITERS_WOKEN WAITS_HOLDING_LATCH SPIN_GETS WAIT_TIME
---------------- -------------------------- ------ ---------- ---------- ---------- -------------- ---------------- ------------- ------------------- ---------- ----------
0000000060018A18 gcs partitioned table hash 6 0 0 0 0 0 0 0 0 0
--// 记下addr=0x0000000060018A18.
$ cat peek.sh
#! /bib/bash
# 参数如下:latch_name Monitoring_duration or laddr
sqlplus -s -l / as sysdba <<EOF
col laddr new_value laddr
SELECT sysdate,addr laddr FROM v\$latch_parent WHERE NAME='$1';
oradebug setmypid
$(seq $2|xargs -I{} echo -e 'oradebug peek 0x&laddr 60\nhost sleep 1' )
EOF
$ cat shared_latch_new.txt
--//connect / as sysdba
--//oradebug setmypid
oradebug call kslgetsl_w 0x0000000060018A18 1 7 8 9
oradebug call kslfre 0x0000000060018A18
--//exit
--//注:我直接输入addr地址,可以通过viewlatch.sql脚本查询获得.这样测试容易出现spin.
$ cat $(which timestamp.pl)
#!/usr/bin/perl
while (<>) {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
printf("%02d:%02d:%02d", $hour, $min, $sec);
print ": $_";
#print localtime() . ": $_";
}
$ cat i6.sh
#! /bin/bash
zdate=$(date '+%H%M%S')
echo $zdate
source peek.sh 'gcs partitioned table hash' 1500 | timestamp.pl >| /tmp/peeks_${zdate}.txt &
#seq 10 | xargs -I{} echo -e 'sqlplus -s -l / as sysdba <<< @latch_free\nsleep 1' | bash >| /tmp/latch_free_${zdate}.txt &
sleep 1
# 参数如下: @ latch.txt latch_name willing why where mode sleep_num
#seq 1500 | xargs -I {} -P 100 taskset 000001 sqlplus -s -l / as sysdba @ shared_latch.txt 'gcs partitioned table hash' 1 4 {} s 0.01 > /dev/null
#seq 1500 | xargs -I {} -P 150 taskset 00000e sqlplus -s -l / as sysdba @ 10000.txt > /dev/null
#seq 1500 | xargs -I {} -P 150 taskset 00000f sqlplus -s -l / as sysdba @ 10000.txt > /dev/null
seq 1500 | xargs -I {} -P 150 sqlplus -s -l / as sysdba @ 10000.txt > /dev/null
wait
--//建立10000.txt,10000行一样的内容。
$ uniq -c 10000.txt
1 set feedback off
1 set term off
1 oradebug setmypid
10000 @ shared_latch_new.txt
1 set term on
1 set feedback on
3.编程gdb跟踪脚本:
--//随便找一个oracle进程.反汇编disassemble kslskgs
$ ps -ef | grep smo[n]
oracle 5872 1 0 15:29 ? 00:00:00 ora_smon_book
$ gdb -p 5872 | tee gdb.txt
(gdb) disassemble kslskgs
(gdb) quit
A debugging session is active.
Inferior 1 [process 5872] will be detached.
Quit anyway? (y or n) y
Detaching from program: /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle, process 5872
$ grep -A1 ffffffffffffffff gdb.txt
0x0000000000a875df <kslskgs+233>: add $0xffffffffffffffff,%r13d
0x0000000000a875e3 <kslskgs+237>: jne 0xa875be <kslskgs+200>
--
0x0000000000a87687 <kslskgs+401>: add $0xffffffffffffffff,%r14d
0x0000000000a8768b <kslskgs+405>: test %r15,%rbx
--
0x0000000000a87698 <kslskgs+418>: add $0xffffffffffffffff,%r14d
0x0000000000a8769c <kslskgs+422>: jne 0xa87658 <kslskgs+354>
--//首先说明我不懂汇编,完全是乱猜, $xffffffffffffffff 表示 -1. 跟踪这个地址的执行就可以看到计数的变化.
--//建立gdb跟踪脚本:
$ grep -v "^#" latch11gs.gdb
set pagination off
break kslskgs
commands
silent
shell echo
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "kslskgs %x, %d, %d, %d\n", $rdi, $rsi, $rdx, $rcx
c
end
break *0xa875df
commands
silent
shell echo
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "*0xa875df: spin count loop: %d %x\n", $r13,$rip
c
end
break *0xa87687
commands
silent
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "*0xa87687: spin count loop: %d %x\n", $r14,$rip
c
end
break *0xa8768b
commands
silent
c
end
break *0xa8768e
commands
silent
c
end
break *0xa87698
commands
silent
shell echo
shell echo -n $( date +"%Y/%m/%d %T.%N : ")
printf "*0xa87698: spin count loop: %d %x\n", $r14,$rip
c
end
break skgpwwait
commands
silent
printf "skgpwwait %d, %d, %d, %d\n", $rdi, $rsi, $rdx, $rcx
c
end
break sskgpwwait
commands
silent
printf "sskgpwwait %d, %d, %d, %d\n", $rdi, $rsi, $rdx, $rcx
c
end
break semop
commands
silent
printf "semop %d, %d, %d, %d\n", $rdi, $rsi, $rdx, $rcx
c
end
--//注意我还顺便设置了break *0xa8768b,break *0xa8768e,不然非常难跟踪到spin的变化.
4.开始测试:
--//测试前做一点点说明,由于使用sys用户登录,要产生大量的跟踪文件在/u01/app/oracle/diag/rdbms/book/book/trace目录,
--//要写一个脚本定时清除.
--//session 1:
SYS@book> @ viewlatch.sql 'gcs partitioned table hash'
ADDR NAME LEVEL# GETS MISSES SLEEPS IMMEDIATE_GETS IMMEDIATE_MISSES WAITERS_WOKEN WAITS_HOLDING_LATCH SPIN_GETS WAIT_TIME
---------------- ---------------------------------------- ---------- ---------- ---------- ---------- -------------- ---------------- ------------- ------------------- ---------- ----------
0000000060018A18 gcs partitioned table hash 6 0 0 0 0 0 0 0 0 0
--//windows 1:
--//先打入以下命令不要执行。
$ . i6.sh
--//session 2:
SYS@book> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
244 17 35232 DEDICATED 35233 19 7 alter system kill session '244,17' immediate;
--//记下spid=35233
--//先打入以下命令不要执行。
SYS@book> @ 10000.txt
--//windows 2:
$ gdb -p 35233 -x latch11gs.gdb | tee res.txt
Breakpoint 1 at 0xa874fa
Breakpoint 2 at 0xa875df
Breakpoint 3 at 0xa87687
Breakpoint 4 at 0xa8768b
Breakpoint 5 at 0xa8768e
Breakpoint 6 at 0xa87698
Breakpoint 7 at 0x9808932
Breakpoint 8 at 0x9809840
Breakpoint 9 at 0x37990d6400
(gdb)
--//OK,现在先执行windows 1: 的 i6.sh脚本。然后执行session 2,10000.txt脚本。切换到windows 2观察。
(gdb) c
(gdb) c
Continuing.
2021/02/18 15:51:52.598152261 :kslskgs 60018a18, 6, 929817680, 929818224
2021/02/18 15:51:52.604581548 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:51:52.610972554 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:51:52.616719815 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:51:52.623191750 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:51:52.630966475 :*0xa87698: spin count loop: 2000 a87698
2021/02/18 15:51:52.637195641 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:51:52.642983203 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:51:52.649088599 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:51:52.654759673 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:51:52.662544757 :*0xa87698: spin count loop: 1999 a87698
2021/02/18 15:51:54.440909478 :kslskgs 60018a18, 6, 929817680, 929818224
2021/02/18 15:51:56.677567413 :kslskgs 60018a18, 6, 929817680, 929818224
2021/02/18 15:51:56.683185841 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:51:56.688927949 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:51:56.694252516 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:51:56.699441517 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:51:56.705942574 :*0xa87698: spin count loop: 2000 a87698
2021/02/18 15:51:56.711313100 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:51:56.716322313 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:51:56.721304727 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:51:56.726386340 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:51:56.732967701 :*0xa87698: spin count loop: 1999 a87698
2021/02/18 15:51:56.738010257 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:51:56.742473027 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:51:56.745386114 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:51:56.748461503 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:51:56.752307565 :*0xa87698: spin count loop: 1998 a87698
...
2021/02/18 15:57:27.459426921 :kslskgs 60018a18, 6, 128051040, 128051584
2021/02/18 15:57:27.466403394 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:57:27.472208065 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:57:27.478077048 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:57:27.484191018 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:57:27.492431005 :*0xa87698: spin count loop: 2000 a87698
2021/02/18 15:57:27.499155005 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:57:27.505217979 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:57:27.510815580 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:57:27.516498146 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:57:27.524401034 :*0xa87698: spin count loop: 1999 a87698
2021/02/18 15:57:27.530470533 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:57:27.536292687 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:57:27.542214158 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:57:27.547843092 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:57:27.556815580 :*0xa87698: spin count loop: 1998 a87698
2021/02/18 15:57:27.565061595 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:57:27.571067169 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:57:27.577793300 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:57:27.583724376 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:57:27.593319162 :*0xa87698: spin count loop: 1997 a87698
2021/02/18 15:57:27.599342687 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:57:27.605480648 :*0xa87687: spin count loop: 3 a87687
2021/02/18 15:57:27.611107830 :*0xa87687: spin count loop: 2 a87687
2021/02/18 15:57:27.617360925 :*0xa87687: spin count loop: 1 a87687
2021/02/18 15:57:27.625274080 :*0xa87698: spin count loop: 1996 a87698
2021/02/18 15:57:27.631908457 :*0xa87687: spin count loop: 4 a87687
2021/02/18 15:57:29.902695215 :kslskgs 60018a18, 6, 128051040, 128051584
----------------------
SYS@book> @ viewlatch.sql 'gcs partitioned table hash'
ADDR NAME LEVEL# GETS MISSES SLEEPS IMMEDIATE_GETS IMMEDIATE_MISSES WAITERS_WOKEN WAITS_HOLDING_LATCH SPIN_GETS WAIT_TIME
---------------- ---------------------------------------- ---------- ---------- ---------- ---------- -------------- ---------------- ------------- ------------------- ---------- ----------
0000000060018A18 gcs partitioned table hash 6 223919 804 0 0 0 0 0 804 0
--//奇怪,我尝试多次就是看不到sleeps计数增加.
# vmstat 1 100
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
14 0 0 118054128 442704 9727720 0 0 0 6 1 0 0 0 100 0 0
9 0 0 118050560 442704 9730896 0 0 0 2132 50358 74399 31 15 55 0 0
14 0 0 118048128 442704 9733196 0 0 0 596 41630 61783 29 13 58 0 0
11 0 0 118044528 442704 9736776 0 0 0 0 48770 76711 29 13 59 0 0
11 0 0 118041184 442712 9740072 0 0 0 13888 50246 72362 31 15 54 0 0
12 0 0 118037664 442712 9743352 0 0 0 2544 48205 70332 30 14 56 0 0
13 0 0 118034584 442712 9746256 0 0 0 2148 49625 73596 30 14 56 0 0
18 0 0 118021600 442712 9748972 0 0 0 1648 41215 62941 27 12 60 0 0
9 0 0 118018480 442712 9751808 0 0 0 520 43409 66708 28 13 59 0 0
12 0 0 118015760 442712 9755388 0 0 0 12192 50737 75644 30 14 56 0 0
10 0 0 118012512 442712 9758604 0 0 0 1620 49358 80965 29 13 59 0 0
15 0 0 118009536 442712 9761688 0 0 0 3036 44829 69719 26 12 62 0 0
20 0 0 118006944 442712 9764936 0 0 0 2448 50361 74785 31 15 55 0 0
19 0 0 118003344 442712 9768516 0 0 0 896 48810 73226 29 14 57 0 0
8 0 0 118000464 442716 9771452 0 0 0 12176 47782 66337 30 15 55 0 0
12 0 0 117996608 442716 9774680 0 0 0 1516 51559 75710 33 16 51 0 0
13 0 0 117993504 442716 9777652 0 0 0 2972 49101 70501 32 15 53 0 0
18 0 0 117980256 442716 9780676 0 0 0 2348 47234 67977 30 14 56 0 0
15 0 0 117976768 442716 9784096 0 0 0 956 48611 69637 32 15 53 0 0
20 0 0 117973920 442720 9787008 0 0 0 12300 49871 70088 31 15 54 0 0
8 0 0 117971192 442720 9789780 0 0 0 1640 49790 75964 32 15 52 0 0
5.修改cpu_count参数:
--//重复测试:
SYS@book> show parameter cpu_count
NAME TYPE VALUE
--------- ------- -------
cpu_count integer 3
(gdb) c
Continuing.
2021/02/18 16:14:46.778579223 :kslskgs 60018a18, 6, 283716784, 283717328
2021/02/18 16:14:46.785910586 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:46.791884616 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:46.797980334 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:46.806807505 :*0xa87698: spin count loop: 2000 a87698
2021/02/18 16:14:46.813383198 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:46.819353275 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:48.113589673 :kslskgs 60018a18, 6, 283716784, 283717328
2021/02/18 16:14:48.121196787 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:48.128792042 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:48.135572995 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:48.143634610 :*0xa87698: spin count loop: 2000 a87698
2021/02/18 16:14:48.150272887 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:48.156610454 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:48.163472352 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:48.172146070 :*0xa87698: spin count loop: 1999 a87698
2021/02/18 16:14:48.181231250 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:48.188271352 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:48.194545781 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:48.202499380 :*0xa87698: spin count loop: 1998 a87698
2021/02/18 16:14:50.082033752 :kslskgs 60018a18, 6, 283716784, 283717328
2021/02/18 16:14:50.089758821 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:50.096454506 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:50.102671824 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:50.110333114 :*0xa87698: spin count loop: 2000 a87698
2021/02/18 16:14:50.116676575 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:50.124042767 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:50.130917522 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:50.140123589 :*0xa87698: spin count loop: 1999 a87698
2021/02/18 16:14:50.146840829 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:50.152307081 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:50.157731142 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:50.165359806 :*0xa87698: spin count loop: 1998 a87698
2021/02/18 16:14:50.172874645 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:50.181793430 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:50.188943762 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:50.197589693 :*0xa87698: spin count loop: 1997 a87698
2021/02/18 16:14:50.203674455 :*0xa87687: spin count loop: 3 a87687
2021/02/18 16:14:50.209190905 :*0xa87687: spin count loop: 2 a87687
2021/02/18 16:14:50.215012281 :*0xa87687: spin count loop: 1 a87687
2021/02/18 16:14:50.222724480 :*0xa87698: spin count loop: 1996 a87698
2021/02/18 16:14:53.423927452 :kslskgs 60018a18, 6, 283716784, 283717328
2021/02/18 16:14:53.431248508 :*0xa87687: spin count loop: 3 a87687
^C
Program received signal SIGINT, Interrupt.
0x00000037990d5c85 in send () from /lib64/libc.so.6
6.总结:
--//我的感觉是死循环,并没有进入sleep,不知道我哪里做错了.
7.附上反汇编kslskgs的内容:
(gdb) disassemble kslskgs
Dump of assembler code for function kslskgs:
0x0000000000a874f6 <kslskgs+0>: push %rbp
0x0000000000a874f7 <kslskgs+1>: mov %rsp,%rbp
0x0000000000a874fa <kslskgs+4>: sub $0x60,%rsp
0x0000000000a874fe <kslskgs+8>: mov %rdx,%r8
0x0000000000a87501 <kslskgs+11>: mov 0x5f5826f9(%rip),%edx # 0x60009c00
0x0000000000a87507 <kslskgs+17>: mov 0xb66c03f(%rip),%eax # 0xc0f354c <ksmmpd_>
0x0000000000a8750d <kslskgs+23>: mov %esi,-0x18(%rbp)
0x0000000000a87510 <kslskgs+26>: mov 0xb66a629(%rip),%rsi # 0xc0f1b40 <ksupga_>
0x0000000000a87517 <kslskgs+33>: test %eax,%eax
0x0000000000a87519 <kslskgs+35>: je 0xa8780f <kslskgs+793>
0x0000000000a8751f <kslskgs+41>: mov 0x5f584bcb(%rip),%eax # 0x6000c0f0
0x0000000000a87525 <kslskgs+47>: test %eax,%eax
0x0000000000a87527 <kslskgs+49>: je 0xa8780f <kslskgs+793>
0x0000000000a8752d <kslskgs+55>: cmp $0x1,%eax
0x0000000000a87530 <kslskgs+58>: jle 0xa8780b <kslskgs+789>
0x0000000000a87536 <kslskgs+64>: mov (%rcx),%eax
0x0000000000a87538 <kslskgs+66>: test $0x20,%al
0x0000000000a8753a <kslskgs+68>: jne 0xa87801 <kslskgs+779>
0x0000000000a87540 <kslskgs+74>: test $0x100,%eax
0x0000000000a87545 <kslskgs+79>: jne 0xa87550 <kslskgs+90>
0x0000000000a87547 <kslskgs+81>: mov %rdi,0x278(%rsi)
0x0000000000a8754e <kslskgs+88>: jmp 0xa8755d <kslskgs+103>
0x0000000000a87550 <kslskgs+90>: mov -0x18(%rbp),%eax
0x0000000000a87553 <kslskgs+93>: mov %eax,%eax
0x0000000000a87555 <kslskgs+95>: mov %rdi,0x460(%rsi,%rax,8)
0x0000000000a8755d <kslskgs+103>: mov (%rcx),%r10d
0x0000000000a87560 <kslskgs+106>: test $0x8,%r10d
0x0000000000a87567 <kslskgs+113>: jne 0xa87608 <kslskgs+274>
0x0000000000a8756d <kslskgs+119>: mov 0xb66a5cc(%rip),%r9 # 0xc0f1b40 <ksupga_>
0x0000000000a87574 <kslskgs+126>: movslq 0xb8(%r9),%r9
0x0000000000a8757b <kslskgs+133>: mov $0x2000000000000000,%rax
0x0000000000a87585 <kslskgs+143>: or %rax,%r9
0x0000000000a87588 <kslskgs+146>: mov (%rdi),%rax
0x0000000000a8758b <kslskgs+149>: test %edx,%edx
0x0000000000a8758d <kslskgs+151>: je 0xa87757 <kslskgs+609>
0x0000000000a87593 <kslskgs+157>: mov %rsi,-0x50(%rbp)
0x0000000000a87597 <kslskgs+161>: mov %r8,-0x48(%rbp)
0x0000000000a8759b <kslskgs+165>: mov %rbx,-0x40(%rbp)
0x0000000000a8759f <kslskgs+169>: mov %rax,%rbx
0x0000000000a875a2 <kslskgs+172>: mov %r12,-0x38(%rbp)
0x0000000000a875a6 <kslskgs+176>: mov %r13,-0x30(%rbp)
0x0000000000a875aa <kslskgs+180>: mov %r14,-0x28(%rbp)
0x0000000000a875ae <kslskgs+184>: mov %r15,-0x20(%rbp)
0x0000000000a875b2 <kslskgs+188>: mov %edx,%r13d
0x0000000000a875b5 <kslskgs+191>: mov %rcx,%r15
0x0000000000a875b8 <kslskgs+194>: mov %rdi,%r14
0x0000000000a875bb <kslskgs+197>: mov %r9,%r12
0x0000000000a875be <kslskgs+200>: mov $0x4000000000000000,%rsi
======================================================================
0x0000000000a875c8 <kslskgs+210>: cmp %rsi,%rbx
0x0000000000a875cb <kslskgs+213>: je 0xa876db <kslskgs+485>
0x0000000000a875d1 <kslskgs+219>: test %rbx,%rbx
0x0000000000a875d4 <kslskgs+222>: je 0xa876db <kslskgs+485>
0x0000000000a875da <kslskgs+228>: mov (%r14),%rbx
0x0000000000a875dd <kslskgs+231>: pause
0x0000000000a875df <kslskgs+233>: add $0xffffffffffffffff,%r13d
0x0000000000a875e3 <kslskgs+237>: jne 0xa875be <kslskgs+200>
=======================================================================
0x0000000000a875e5 <kslskgs+239>: mov -0x50(%rbp),%rsi
0x0000000000a875e9 <kslskgs+243>: mov -0x40(%rbp),%rbx
0x0000000000a875ed <kslskgs+247>: mov -0x38(%rbp),%r12
0x0000000000a875f1 <kslskgs+251>: mov -0x30(%rbp),%r13
0x0000000000a875f5 <kslskgs+255>: mov %r15,%rcx
0x0000000000a875f8 <kslskgs+258>: mov (%rcx),%r10d
0x0000000000a875fb <kslskgs+261>: mov -0x28(%rbp),%r14
0x0000000000a875ff <kslskgs+265>: mov -0x20(%rbp),%r15
0x0000000000a87603 <kslskgs+269>: jmpq 0xa876bc <kslskgs+454>
0x0000000000a87608 <kslskgs+274>: mov $0xe000000000000000,%r9
0x0000000000a87612 <kslskgs+284>: mov %r10d,%eax
0x0000000000a87615 <kslskgs+287>: and $0x80,%eax
0x0000000000a8761a <kslskgs+292>: mov $0xa000000000000000,%rax
0x0000000000a87624 <kslskgs+302>: cmove %r9,%rax
0x0000000000a87628 <kslskgs+306>: test %edx,%edx
0x0000000000a8762a <kslskgs+308>: je 0xa876bc <kslskgs+454>
0x0000000000a87630 <kslskgs+314>: mov %rsi,-0x50(%rbp)
0x0000000000a87634 <kslskgs+318>: mov %r8,-0x48(%rbp)
0x0000000000a87638 <kslskgs+322>: mov %rbx,-0x40(%rbp)
0x0000000000a8763c <kslskgs+326>: mov %rax,%rbx
0x0000000000a8763f <kslskgs+329>: mov %r12,-0x38(%rbp)
0x0000000000a87643 <kslskgs+333>: mov %rcx,%r12
0x0000000000a87646 <kslskgs+336>: mov %r13,-0x30(%rbp)
0x0000000000a8764a <kslskgs+340>: mov %r14,-0x28(%rbp)
0x0000000000a8764e <kslskgs+344>: mov %r15,-0x20(%rbp)
0x0000000000a87652 <kslskgs+348>: mov %edx,%r14d
0x0000000000a87655 <kslskgs+351>: mov %rdi,%r13
0x0000000000a87658 <kslskgs+354>: mov 0x0(%r13),%r15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x0000000000a8765c <kslskgs+358>: mov 0xb66beea(%rip),%esi # 0xc0f354c <ksmmpd_>
0x0000000000a87662 <kslskgs+364>: test %esi,%esi
0x0000000000a87664 <kslskgs+366>: je 0xa877e1 <kslskgs+747>
0x0000000000a8766a <kslskgs+372>: mov 0x5f584a80(%rip),%eax # 0x6000c0f0
0x0000000000a87670 <kslskgs+378>: test %eax,%eax
0x0000000000a87672 <kslskgs+380>: je 0xa877e1 <kslskgs+747>
0x0000000000a87678 <kslskgs+386>: mov %r14d,-0x10(%rbp)
0x0000000000a8767c <kslskgs+390>: mov %eax,%r14d
0x0000000000a8767f <kslskgs+393>: jmp 0xa8768b <kslskgs+405>
0x0000000000a87681 <kslskgs+395>: mov -0x60(%rbp),%r15
0x0000000000a87685 <kslskgs+399>: pause
0x0000000000a87687 <kslskgs+401>: add $0xffffffffffffffff,%r14d
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x0000000000a8768b <kslskgs+405>: test %r15,%rbx
0x0000000000a8768e <kslskgs+408>: je 0xa8775f <kslskgs+617>
0x0000000000a87694 <kslskgs+414>: mov -0x10(%rbp),%r14d
0x0000000000a87698 <kslskgs+418>: add $0xffffffffffffffff,%r14d
0x0000000000a8769c <kslskgs+422>: jne 0xa87658 <kslskgs+354>
0x0000000000a8769e <kslskgs+424>: mov -0x50(%rbp),%rsi
0x0000000000a876a2 <kslskgs+428>: mov -0x40(%rbp),%rbx
0x0000000000a876a6 <kslskgs+432>: mov -0x30(%rbp),%r13
0x0000000000a876aa <kslskgs+436>: mov -0x28(%rbp),%r14
0x0000000000a876ae <kslskgs+440>: mov %r12,%rcx
0x0000000000a876b1 <kslskgs+443>: mov (%rcx),%r10d
0x0000000000a876b4 <kslskgs+446>: mov -0x38(%rbp),%r12
0x0000000000a876b8 <kslskgs+450>: mov -0x20(%rbp),%r15
0x0000000000a876bc <kslskgs+454>: test $0x100,%r10d
0x0000000000a876c3 <kslskgs+461>: jne 0xa877eb <kslskgs+757>
0x0000000000a876c9 <kslskgs+467>: movq $0x0,0x278(%rsi)
0x0000000000a876d4 <kslskgs+478>: xor %eax,%eax
0x0000000000a876d6 <kslskgs+480>: mov %rbp,%rsp
0x0000000000a876d9 <kslskgs+483>: pop %rbp
0x0000000000a876da <kslskgs+484>: retq
0x0000000000a876db <kslskgs+485>: mov (%r15),%esi
0x0000000000a876de <kslskgs+488>: test $0x2,%esi
0x0000000000a876e4 <kslskgs+494>: jne 0xa87725 <kslskgs+559>
0x0000000000a876e6 <kslskgs+496>: mov %rbx,%rax
0x0000000000a876e9 <kslskgs+499>: lock cmpxchg %r12,(%r14)
0x0000000000a876ee <kslskgs+504>: mov %rax,-0x60(%rbp)
0x0000000000a876f2 <kslskgs+508>: sete %al
0x0000000000a876f5 <kslskgs+511>: movzbq %al,%rax
0x0000000000a876f9 <kslskgs+515>: test %rax,%rax
0x0000000000a876fc <kslskgs+518>: je 0xa8771c <kslskgs+550>
0x0000000000a876fe <kslskgs+520>: mov -0x40(%rbp),%rbx
0x0000000000a87702 <kslskgs+524>: mov -0x38(%rbp),%r12
0x0000000000a87706 <kslskgs+528>: mov -0x30(%rbp),%r13
0x0000000000a8770a <kslskgs+532>: mov -0x28(%rbp),%r14
0x0000000000a8770e <kslskgs+536>: mov $0x1,%eax
0x0000000000a87713 <kslskgs+541>: mov -0x20(%rbp),%r15
0x0000000000a87717 <kslskgs+545>: mov %rbp,%rsp
0x0000000000a8771a <kslskgs+548>: pop %rbp
0x0000000000a8771b <kslskgs+549>: retq
0x0000000000a8771c <kslskgs+550>: mov -0x60(%rbp),%rbx [0/221]
0x0000000000a87720 <kslskgs+554>: jmpq 0xa875dd <kslskgs+231>
0x0000000000a87725 <kslskgs+559>: mov -0x48(%rbp),%rdi
0x0000000000a87729 <kslskgs+563>: callq 0x9405080 <kslwtectx>
0x0000000000a8772e <kslskgs+568>: mov (%r15),%esi
0x0000000000a87731 <kslskgs+571>: and $0xfffffffffffffffd,%esi
0x0000000000a87734 <kslskgs+574>: mov %esi,(%r15)
0x0000000000a87737 <kslskgs+577>: test $0x4,%esi
0x0000000000a8773d <kslskgs+583>: je 0xa876e6 <kslskgs+496>
0x0000000000a8773f <kslskgs+585>: mov 0xb66a2f2(%rip),%rdi # 0xc0f1a38 <ksmgpp_>
0x0000000000a87746 <kslskgs+592>: mov -0x48(%rbp),%rsi
0x0000000000a8774a <kslskgs+596>: xor %edx,%edx
0x0000000000a8774c <kslskgs+598>: callq 0x97fd318 <kgslwait_resource_time_waited_usecs>
0x0000000000a87751 <kslskgs+603>: add %rax,0x30(%r14)
0x0000000000a87755 <kslskgs+607>: jmp 0xa876e6 <kslskgs+496>
0x0000000000a87757 <kslskgs+609>: mov (%rcx),%r10d
0x0000000000a8775a <kslskgs+612>: jmpq 0xa876bc <kslskgs+454>
0x0000000000a8775f <kslskgs+617>: test %r14d,%r14d
0x0000000000a87762 <kslskgs+620>: je 0xa87694 <kslskgs+414>
0x0000000000a87768 <kslskgs+626>: mov (%r12),%edx
0x0000000000a8776c <kslskgs+630>: test $0x2,%dl
0x0000000000a8776f <kslskgs+633>: jne 0xa877b0 <kslskgs+698>
0x0000000000a87771 <kslskgs+635>: lea 0x1(%r15),%rdx
0x0000000000a87775 <kslskgs+639>: mov %r15,%rax
0x0000000000a87778 <kslskgs+642>: lock cmpxchg %rdx,0x0(%r13)
0x0000000000a8777e <kslskgs+648>: mov %rax,-0x60(%rbp)
0x0000000000a87782 <kslskgs+652>: sete %al
0x0000000000a87785 <kslskgs+655>: movzbq %al,%rax
0x0000000000a87789 <kslskgs+659>: test %rax,%rax
0x0000000000a8778c <kslskgs+662>: je 0xa87681 <kslskgs+395>
0x0000000000a87792 <kslskgs+668>: mov -0x40(%rbp),%rbx
0x0000000000a87796 <kslskgs+672>: mov -0x38(%rbp),%r12
0x0000000000a8779a <kslskgs+676>: mov -0x30(%rbp),%r13
0x0000000000a8779e <kslskgs+680>: mov -0x28(%rbp),%r14
0x0000000000a877a2 <kslskgs+684>: mov $0x1,%eax
0x0000000000a877a7 <kslskgs+689>: mov -0x20(%rbp),%r15
0x0000000000a877ab <kslskgs+693>: mov %rbp,%rsp
0x0000000000a877ae <kslskgs+696>: pop %rbp
0x0000000000a877af <kslskgs+697>: retq
0x0000000000a877b0 <kslskgs+698>: mov -0x48(%rbp),%rdi
0x0000000000a877b4 <kslskgs+702>: callq 0x9405080 <kslwtectx>
0x0000000000a877b9 <kslskgs+707>: mov (%r12),%edx
0x0000000000a877bd <kslskgs+711>: and $0xfffffffffffffffd,%edx
0x0000000000a877c0 <kslskgs+714>: mov %edx,(%r12)
0x0000000000a877c4 <kslskgs+718>: test $0x4,%dl
0x0000000000a877c7 <kslskgs+721>: je 0xa87771 <kslskgs+635>
0x0000000000a877c9 <kslskgs+723>: mov 0xb66a268(%rip),%rdi # 0xc0f1a38 <ksmgpp_>
0x0000000000a877d0 <kslskgs+730>: mov -0x48(%rbp),%rsi
0x0000000000a877d4 <kslskgs+734>: xor %edx,%edx
0x0000000000a877d6 <kslskgs+736>: callq 0x97fd318 <kgslwait_resource_time_waited_usecs>
0x0000000000a877db <kslskgs+741>: add %rax,0x30(%r13)
0x0000000000a877df <kslskgs+745>: jmp 0xa87771 <kslskgs+635>
0x0000000000a877e1 <kslskgs+747>: callq 0x238dfbc <ksb_cpu_eff_thread_count_compute>
0x0000000000a877e6 <kslskgs+752>: jmpq 0xa87678 <kslskgs+386>
0x0000000000a877eb <kslskgs+757>: mov -0x18(%rbp),%eax
0x0000000000a877ee <kslskgs+760>: mov %eax,%eax
0x0000000000a877f0 <kslskgs+762>: movq $0x0,0x460(%rsi,%rax,8)
0x0000000000a877fc <kslskgs+774>: jmpq 0xa876d4 <kslskgs+478>
0x0000000000a87801 <kslskgs+779>: mov $0x1,%edx
0x0000000000a87806 <kslskgs+784>: jmpq 0xa87540 <kslskgs+74>
0x0000000000a8780b <kslskgs+789>: mov (%rcx),%eax
0x0000000000a8780d <kslskgs+791>: jmp 0xa87801 <kslskgs+779>
0x0000000000a8780f <kslskgs+793>: mov %edx,-0x10(%rbp)
0x0000000000a87812 <kslskgs+796>: mov %rsi,-0x50(%rbp)
0x0000000000a87816 <kslskgs+800>: mov %rdi,-0x60(%rbp)
0x0000000000a8781a <kslskgs+804>: mov %r8,-0x48(%rbp)
0x0000000000a8781e <kslskgs+808>: mov %rcx,-0x58(%rbp)
0x0000000000a87822 <kslskgs+812>: callq 0x238dfbc <ksb_cpu_eff_thread_count_compute>
0x0000000000a87827 <kslskgs+817>: mov -0x58(%rbp),%rcx
0x0000000000a8782b <kslskgs+821>: mov -0x48(%rbp),%r8
0x0000000000a8782f <kslskgs+825>: mov -0x60(%rbp),%rdi
0x0000000000a87833 <kslskgs+829>: mov -0x50(%rbp),%rsi
0x0000000000a87837 <kslskgs+833>: mov -0x10(%rbp),%edx
0x0000000000a8783a <kslskgs+836>: jmpq 0xa8752d <kslskgs+55>
0x0000000000a8783f <kslskgs+841>: nop
End of assembler dump.