<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    szhswl
    宋針還的個人空間
    DTrace即動態跟蹤Dynamic Tracing,是Solaris 10的一個新功能,透過此一新功能,用戶能夠動態檢測操作系統內核和用戶進程,以更精確地掌握系統的資源使用狀況,提高系統性能,減少支持成本,并進行有效的調節。1997年,供職于Sun而現已是Solaris內核開發部高級工程師的Bryan Cantrill 與他的工作組在緊張地研究一個性能問題,它出現在剛剛提及的Sun E10000服務器。該服務器在運行基準測試時,速度突然在一段時間內奇怪地降低。工作組經過六天夜以繼日的工作后,終于發現了問題的根本原因。某個“愚蠢之極”的配置錯誤將服務器配置成了路由器。

    “我很受震驚,”Cantrill 說到, “這是任何一個客戶都可能遇到的問題,但是他們可不敢奢望讓內核開發人員為之夜以繼日地工作,編寫自定義代碼以弄清楚問題。我們得找出一個更好的方法。” 
    經過兩年半的緊張開發,Cantrill和他的工作組終于研究出了這個更好的方法: Dtrace
    DTrace是過去十年中在操作系統方面最具意義的革新之一:
    Probe,Solaris中分散著30,000多的位置指針,也叫探測器probes,DTrace可激活成千上萬的探測器,記錄所關注的位置指定的數據,如命中,即可從該地址顯示用戶進程或系統內核的數據,從而了解系統,包括:
    1。任何函數的參數
    2。內核的任何全局變量
    3。函數調用的時間(NS,十億分之一秒,無任何其它PC/Unix在ns一級精度)
    4。跟蹤堆棧,包括指明函數調用的代碼
    5。函數調用時運行的進程
    6。產生函數調用的線程
    Probe于自定義D語言程序相關聯,probe表示的格式為:
    provider:module:function:name
    1。顯示當前動態系統中的動態Dtrace探針probe:
    # dtrace -l |more
       ID   PROVIDER            MODULE                          FUNCTION NAME
        1     dtrace                                                     BEGIN
        2     dtrace                                                     END
        3     dtrace                                                     ERROR
        4     vminfo          fasttrap                   fasttrap_uwrite softlock
        5     vminfo          fasttrap                    fasttrap_uread softlock
        6        fbt              pool                         pool_open entry
        7        fbt              pool                         pool_open return
        8        fbt              pool                        pool_close entry
        9        fbt              pool                        pool_close return
       10        fbt              pool                        pool_ioctl entry
       11        fbt              pool                        pool_ioctl return
       12        fbt              pool                         pool_info entry
       13        fbt              pool                         pool_info return
    。。。
    43545        fbt              zmod                        z_strerror return
    43546        fbt              zmod                      z_uncompress entry
    43547        fbt              zmod                      z_uncompress return
    即當前本人V210上有43547個probe。
    2。體驗 dtrace 與 Unix ps 命令:
    如用ps看mozilla進程:
    # ps -e |grep mozilla
      2386 pts/11      0:00 mozilla
      2436 pts/11     10:12 mozilla-
    也可使用dtrace 通過probe探針看:
    # dtrace -n 'syscall::exece:return { trace(execname);}'
    dtrace: description 'syscall::exece:return ' matched 1 probe
    CPU     ID                    FUNCTION:NAME
      0  11082                     exece:return   uname                            
      0  11082                     exece:return   uname                            
      0  11082                     exece:return   basename  
    。。。
      0  11082                     exece:return   sed                              
      0  11082                     exece:return   mozilla-bin                      
      1  11082                     exece:return   csh                              
      1  11082                     exece:return   mozilla      
    。。。
    2。實際dtrace看的更細,
    如用date顯示系統時間,很快就結束了,無法跟蹤,體驗dtrace跟蹤效果:
    % date
    2005年05月24日 星期二 20時39分03秒 CST
    # dtrace -n 'syscall::exece: {trace(timestamp)}'
    ddtrace: description 'syscall::exece: ' matched 2 probes
    CPU     ID                    FUNCTION:NAME
      0  11081                      exece:entry   102890531281542
      0  11082                     exece:return   102890532181875
    即可跟蹤其在第102890531281542納秒開始讀取,第102890532181875返回結果。
    3。體驗Dtrace 對系統調用更多的觀察:
    如看機器忙閑狀態,常用vmstat:
    # vmstat 1
     kthr      memory            page            disk          faults      cpu
     r b w   swap  free  re  mf pi po fr de sr s0 s3 s1 s1   in   sy   cs us sy id
     0 0 0 5523680 1378352 14 48 84 1  0  0  1  0  1  0  0  341 2058  883  3  1 96
     0 0 0 5368296 1218688 0 23 15  0  0  0  0  0  0  0  0  336 2605  722 10  1 89
     
    得知產生2605多系統調用,但無和簡單查找哪個進程的問題呢,試用dtrace看:
    # dtrace -n 'syscall::read:entry {@NUM[execname] = count();}'
    ddtrace: description 'syscall::read:entry ' matched 1 probe
    ^C
      dtfile                                                            5
      sdtperfmeter                                                     12
      soffice.bin                                                      23
      dic                                                              23
      dtterm                                                           53
      mozilla-bin                                                     394
      Xsun                                                            545
    顯然發現CDE和Mozilla是產生大量系統調用的程序,看I/O分布也可:
    如還是Mozilla:
    # dtrace -n 'syscall::write:entry {@NUM[execname] = quantize(arg2);}'
    ... 
      mozilla-bin                                       
               value  ------------- Distribution ------------- count    
                   0 |                                         0        
                   1 |@@@@@@@@@@@@@@@@@@@@@                    470      
                   2 |                                         0        
                   4 |                                         7        
                   8 |                                         0        
                  16 |                                         0        
                  32 |                                         0        
                  64 |                                         0        
                 128 |                                         10       
                 256 |@@@@@@@@                                 184      
                 512 |@@@@@@                                   146      
                1024 |@@@                                      78       
                2048 |                                         8        
                4096 |                                         1        
                8192 |                                         0    
    ...
    可觀察到大量Mozilla產生的I/O在256-512字節間。
    4。 想再仔細看程序內部情況?
    truss不錯:
    # truss /usr/sfw/bin/mozilla
    execve("/usr/bin/ksh", 0xFFBFF564, 0xFFBFF574)  argc = 3
    resolvepath("/usr/bin/ksh", "/usr/bin/ksh", 1023) = 12
    resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
    stat("/usr/bin/ksh", 0xFFBFF340)                = 0
    open("/var/ld/ld.config", O_RDONLY)             Err#2 ENOENT
    stat("/lib/libc.so.1", 0xFFBFEE70)              = 0
    resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
    open("/lib/libc.so.1", O_RDONLY)                = 3
    mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 。。。
    試下dtrace:
    # dtrace -n 'syscall::read:return /execname =="mozilla" /{ ustack();}'
    dtrace: description 'syscall::read:return ' matched 1 probe
    CPU     ID                    FUNCTION:NAME
      0  10984                      read:return 
                  libc.so.1`_read+0x8
                  ksh`io_readbuff+0x264
                  ksh`0x245e4
                  ksh`io_readc+0x2c
                  ksh`0x29c54
                  ksh`main+0xa30
                  ksh`_start+0x108
      0  10984                      read:return 
                  libc.so.1`_read+0x8
                  ksh`io_readbuff+0x264
                  ksh`0x245e4
                  ksh`io_readc+0x2c
                  ksh`0x28938
                  ksh`0x28654
    ...
    看到n多調用,開始和返回,夠開發人員分析的。 
            總結,Dtrace功能強大,精度高,輕量,truss有時降低系統30%CPU利用率。但復雜,需對系統內核和應用熟悉,否則看不懂跟蹤到的數據,估計以后CU該開Dtrace編程板塊了。


    ---------------------------------------------------------------------------------------------------------------------------------
    說人之短,乃護己之短。夸己之長,乃忌人之長。皆由存心不厚,識量太狹耳。能去此弊,可以進德,可以遠怨。
    http://www.tkk7.com/szhswl
    ------------------------------------------------------------------------------------------------------ ----------------- ---------
    posted on 2007-12-06 19:55 宋針還 閱讀(270) 評論(0)  編輯  收藏 所屬分類: 操作系統
    主站蜘蛛池模板: 亚洲理论片在线观看| 久久狠狠高潮亚洲精品| 亚洲AV无码XXX麻豆艾秋| 青草草色A免费观看在线| 亚洲性无码av在线| 成年人视频免费在线观看| 亚洲高清在线观看| 久久久久免费看成人影片| 亚洲一区综合在线播放| 91成人免费观看网站| 亚洲第一页在线观看| 日韩免费精品视频| 亚洲一区二区三区丝袜| 卡一卡二卡三在线入口免费| 亚洲国产无线乱码在线观看| 国产三级免费电影| 成人一级免费视频| 亚洲开心婷婷中文字幕| 99免费观看视频| 亚洲ts人妖网站| 国产成人无码免费视频97| 成人免费网站视频www| 久久久亚洲精品国产| 国产精品免费网站| 亚洲国产精品无码久久| 亚洲性日韩精品一区二区三区 | av网站免费线看| 亚洲av中文无码乱人伦在线r▽| 99xxoo视频在线永久免费观看| 亚洲日韩国产精品无码av| 69成人免费视频无码专区| 国产精品亚洲一区二区无码| 中文字幕亚洲图片| 69xx免费观看视频| 男人免费视频一区二区在线观看| 亚洲午夜久久久影院伊人| 免费在线观看的网站| selaoban在线视频免费精品| 亚洲第一永久在线观看| 免费日本黄色网址| 色欲国产麻豆一精品一AV一免费|