亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

seo常用優(yōu)化技巧 網(wǎng)站代碼優(yōu)化工具( 七 )


常識和數(shù)據(jù)
CPU拷貝數(shù)據(jù)一般一秒鐘能做到幾百兆,當然每次拷貝的數(shù)據(jù)長度不同,吞吐不同 。
一次函數(shù)執(zhí)行如果耗費超過1000 cycles就比較大了(刨除調(diào)用子函數(shù)的開銷) 。
pthread_mutex_t是futex實現(xiàn),不用每次都進入內(nèi)核,首次加解鎖大概耗時4000-5000 cycles左右,之后,每次加解鎖大概120 cycles,O2優(yōu)化的時候100 cycles,spinlock耗時略少 。
lock內(nèi)存總線+xchg需要50 cycles,一次內(nèi)存屏障要50 cycles 。
有一些無鎖的技術(shù),比如CAS,比如linux kernel里的kfifo,主要利用了整型回繞+內(nèi)存屏障 。
幾個如何?
1. 如何定位CPU瓶頸?
CPU是通常大家最先關(guān)注的性能指標,宏觀維度有核的CPU使用率,微觀有函數(shù)的CPU cycle數(shù),根據(jù)性能的模型,性能規(guī)格與CPU使用率是互相關(guān)聯(lián)的,規(guī)格越高,CPU使用率越高,但是處理器的性能往往又受到內(nèi)存帶寬、Cache、發(fā)熱等因素的影響,所以CPU使用率和規(guī)格參數(shù)之間并不是簡單的線性關(guān)系,所以性能規(guī)格翻倍并不能簡單地翻譯成我們的CPU使用率要優(yōu)化一倍 。
至于CPU瓶頸的定位工具,最有名也是最有用的工具就是perf,它是性能分析的第一步,可以幫我們找到系統(tǒng)的熱點函數(shù) 。就像人看病一樣,只知道癥狀是不夠的,需要通過醫(yī)療機器進一步分析病因,才能對癥下藥 。
所以我們通過性能分析工具PMU或者其他工具去進一步分析CPU熱點的原因比如是指令數(shù)本身就比較多,還是Cache miss導(dǎo)致的等,這樣在做性能優(yōu)化的時候不會走偏 。
優(yōu)化CPU的目標就是讓CPU運行不受阻礙 。
2. 如何定位IO瓶頸?
系統(tǒng)IO的瓶頸可以通過CPU和負載的非線性關(guān)系體現(xiàn)出來 。當負載增大時,系統(tǒng)吞吐量不能有效增大,CPU不能線性增長,其中一種可能是IO出現(xiàn)阻塞 。
系統(tǒng)的隊列長度特別是發(fā)送、寫磁盤線程的隊列長度也是IO瓶頸的一個間接指標 。
對于網(wǎng)絡(luò)系統(tǒng)來講,我建議先從外部觀察系統(tǒng) 。所謂外部觀察是指通過觀察外部的網(wǎng)絡(luò)報文交換,可以用tcpdump, wireshark等工具,抓包看一下 。
比如我們優(yōu)化一個RPC項目,它的吞吐量是10TPS,客戶希望是100TPS 。我們使用wireshark抓取TCP報文流,可以分析報文之間的時間戳,響應(yīng)延遲等指標來判斷是否是由網(wǎng)絡(luò)引起來的 。
然后可以通過netstat -i/-s選項查看網(wǎng)絡(luò)錯誤、重傳等統(tǒng)計信息 。還可以通過iostat查看cpu等待IO的比例 。IO的概念也可以擴展到進程間通信 。
對于磁盤類的應(yīng)用程序,我們最希望看到寫磁盤有沒有時延、頻率如何 。其中一個方法就是通過內(nèi)核ftrace、perf-event事件來動態(tài)觀測系統(tǒng) 。比如記錄寫塊設(shè)備的起始和返回時間,這樣我們就可以知道磁盤寫是否有延時,也可以統(tǒng)計寫磁盤時間耗費分布 。有一個開源的工具包perf-tools里面包含著iolatency, iosnoop等工具 。
3. 如何定位IO瓶頸?
應(yīng)用程序常用的IO有兩種:Disk IO和網(wǎng)絡(luò)IO 。判斷系統(tǒng)是否存在IO瓶頸可以通過觀測系統(tǒng)或進程的CPU的IO等待比例來進行,比如使用mpstat、top命令 。
系統(tǒng)的隊列長度特別是發(fā)送、寫磁盤線程的隊列長度也是IO瓶頸的一個重要指標 。
對于網(wǎng)絡(luò) IO來講,我們可以先使用netstat -i/-s查看網(wǎng)絡(luò)錯誤、重傳等統(tǒng)計信息,然后使用sar -n DEV 1和sar -n TCP,ETCP 1查看網(wǎng)路實時的統(tǒng)計信息 。ss (Socket Statistics)工具可以提供每個socket相關(guān)的隊列、緩存等詳細信息 。
更直接的方法可以用tcpdump, wireshark等工具,抓包看一下 。
對于Disk IO,我們可以通過iostat -x -p xxx來查看具體設(shè)備使用率和讀寫平均等待時間 。如果使用率接近100%,或者等待時間過長,都說明Disk IO出現(xiàn)飽和 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: