其他分享
首页 > 其他分享> > [20210218]shared latch spin count 5.txt

[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.

标签:count,02,18,mov,20210218,txt,spin,loop
来源: https://www.cnblogs.com/lfree/p/14412346.html