• [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 host 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 sleep 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 ", $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 ", $r13,$rip
        c
      end

    break *0xa87687
      commands
        silent
        shell echo -n $( date +"%Y/%m/%d %T.%N : ")
        printf "*0xa87687: spin count loop: %d %x ", $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 ", $r14,$rip
        c
      end

    break skgpwwait
      commands
        silent
        printf "skgpwwait %d, %d, %d, %d ", $rdi, $rsi, $rdx, $rcx
        c
      end

    break sskgpwwait
      commands
        silent
        printf "sskgpwwait %d, %d, %d, %d ", $rdi, $rsi, $rdx, $rcx
        c
      end

    break semop
      commands
        silent
        printf "semop %d, %d, %d, %d ", $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.

  • 相关阅读:
    目录(爬虫)
    目录(自动化开发)
    目录(Python基础)
    目录(Django开发)
    C#Revit二次开发之-一键切换构件连接顺序 SwitchJoinOrder
    Revit常用的元素过滤方法
    C#之txt的数据写入
    惰性加载
    python mysql and ORM
    Python之常用模块学习(二)
  • 原文地址:https://www.cnblogs.com/lfree/p/14412346.html
Copyright © 2020-2023  润新知