在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過對blktrace的輸出結果進行分析讀、寫操作的磁盤塊進行I/O頻次統計

Linux閱碼場 ? 來源:未知 ? 作者:李倩 ? 2018-04-03 09:48 ? 次閱讀

如果我們想知道,在一段時間內,那一個磁盤塊被讀寫的頻率最高,怎么辦?我問這個問題是看到taobao kernel wiki上面有這么一段話,看了我十分心癢:

通過對blktrace的輸出結果進行分析,我們可以對特定時間段內發生的讀、寫操作的磁盤塊進行I/O頻次統計。結合通過將磁盤塊I/O頻度統計和page cache命中率統計相結合,就可以比較有效的判斷服務器節點的cache使用效率。通過這套工具,CDN系統修正了一個固態硬盤上cache管理的缺陷,顯著提高了I/O性能(詳細信息)淘寶大神給了一個shell腳本解決這個問題,但是我守著代碼,不知道怎么用。就研究了下blktrace和大神的代碼。常常聽淘寶的霸爺,提起blktrace。iostat,iotop這些的工具也是統計磁盤IO的,也非常有用,但是和blktrace比,信息過于summarized,而blktrace跟蹤了發生在塊設備層的很多事件,簡直就是整個塊設備層事件的回放。blktrace能夠trace那些事件呢?

上面這個膠片來自HP的介紹blktrace的膠片,介紹的非常好,是參考文獻中一篇。 這些事件都會被blktrace 捕捉到。由于這些事件要和kernel代碼中block device的work flow一一對應,目前我的功力尚不足,所以我就不一一介紹這些事件了。 blktrace輸出的東西,不是文本,是一些特殊的格式,要想可讀,需要blkparse解析blktrace的輸出。 我們看下blktrace和blkparse合作方式

這是一個比較典型的使用: blktrace -d表示monitor哪個設備,-o -表示講輸出吐出到標準輸出。 blkparse -i - 表示從標準輸入獲取信息,-o 表示講解析的內容記錄在blkparse.out 我們看下輸出長的什么樣子:

這個膠片非常好的介紹了各個字段的含義。主次設備號,CPU ID,sequence num,time stamp PID ,起始扇區號,進程名字比較好理解,比較難理解的是$6,$7$6中的GPQMDC,一堆字母,代表什么含義?$7的WR 又代表什么含義呢? 一個一個來,對于$6,表示的是event,官方手冊給了事件對應表:

那么$7是干嘛的呢? 基本上是R和W,也會出現B和S. R表示是read操作,W表示write操作,B是barrier operation,S是synchronous operation。 看到這個blkparse的輸出,我們發現這些更像是raw data,需要我們挖掘背后的信息。btt這個工具就是一個分析輸出得到更高層信息的tool,他不是我們本文的重點,我們不提他。 回到開篇的問題,如何知道which磁盤扇區被讀寫的次數最多?有了blkparse的輸出,我們完全可以做到這個統計:淘寶的Coly大神的shell腳本已經幫我們作了這個事情。

root@manu-hacks:~/code/shell/blkstrace_calculator# cat cal.sh

#!/bin/bash

TMP_DIR=".blktrace_cal"

# extend the blktracelogto"blockid R/W"

extend()

{

awk-v max=$2-vmod=$3'{

if(NR%max==mod&&$6=="D"&&(index($7,"R")||index($7,"W"))){

for(i=0;i<$10;?i++)?{

print $8+i" "substr($7,1,1);

}

}

}'$1|sort-k1-nr>$TMP_DIR/.tmp.$1.$3

touch $TMP_DIR/$3.ok

}

usage()

{

echo"Usage: $1 input_log [parallel_num]"

exit

}

rm-rf $TMP_DIR

mkdir $TMP_DIR

if["$1"==""];then

usage $0

fi

# does input_log exists?

if[!-f $1];then

echo"($1) not exists"

exit

fi

parallel=$2

if["$2"==""];then

parallel=4

fi

echo"[input: $1]"

max=`expr $parallel-1`

files=""

filename=`basename $1`

echo"[run $parallel process]"

foriin`seq 0 $max`

do

extend $filename $parallel $i&

files=$files" $TMP_DIR/.tmp.$filename.$i"

done

echo"processing...."

nr=0

# awk will finishifall*.ok created.

while[$nr-ne"$parallel"]

do

nr=`find $TMP_DIR-maxdepth 1-name"*.ok"|wc-l`

echo-n"."

sleep 1

done

echo""

echo"merge sort"

sort-m-k1-nr $files|uniq-c|sort-k1-nr>tmp

total=`awk'{sum+=$1}END{print sum}'tmp`

awk-v sum=$total'{

print $0"\t"$1*1000/sum;

}'tmp>result

echo"sort finish."

rm-rf $TMP_DIR

這段代碼是Coly大神的代碼,我無意抄襲前輩,只是晚輩拿來欣賞學習,光榮屬于淘寶的Coly前輩。 先說parallel,這個是為了充分利用CPU資源,讓多個CPU一起來執行extend。NR%max==mod將一個文件按照行分開,由多個進程分別處理之。不多講。 extend的含義也比較簡單:

20397704是起始扇區,+ 8表示的連續8個扇區都在本次事件之內,也就是說20397704/20397705/20397706..都是本次事件涉及的扇區。 OK,我們看下cal.sh的使用及輸出:

當前目錄下生成了tmp和result文件:

我們可以看到,扇區號為454375583被訪問的次數為39次,占總訪問的千分之0.228744。那這個扇區屬于拿個文件呢?debugfs就可以來幫忙了.我們以訪問27次的264753359扇區為例。扇區是512字節,我的文件系統ext4的塊大小是4K,所以根據扇區可以定位的塊號,debugfs根據塊號,可以定位到inode,再根據inode,就可定位到filename。

我們發現,這個文件被讀寫的次數最多。誰干的? lsof來幫忙?

我們用Coly大神的腳本和blktrace/blkparse就解決了磁盤塊IO訪問頻率的統計。如果有個別的block被頻繁的讀取,表示cache的替換效率不高。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 磁盤
    +關注

    關注

    1

    文章

    379

    瀏覽量

    25230
  • 固態硬盤
    +關注

    關注

    12

    文章

    1468

    瀏覽量

    57453

原文標題:使用blktrace統計磁盤塊I/O訪問頻率

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何操作PIC24的I/O輸出高低電平

    /O輸出方向,x表示端口類別,比如TRISA就是操作A端口輸出方向的,TRISx = 0,表示輸出;TRISx = 1,表示輸入。2.PO
    發表于 11-24 07:30

    如何對RAM進行操作

    如何對RAM進行操作
    發表于 01-18 06:47

    請問GPIO設定為輸出的時候進行操作會得到什么結果?

    看了一段模擬I2C的代碼,居然是在輸出的時候進行,不知道是不是代碼寫錯了.我認為是作者忘記了切換IO狀態.但是看到代碼這么規整,總不能沒有調試過就直接貼上來吧?請教各位大神,GPIO
    發表于 09-15 06:01

    一種高效的磁盤隊列I/O機制

    分析了傳統磁盤隊列的存儲管理開銷和讀寫性能,針對磁盤隊列I/O已成為影響消息服務器性能的首要瓶頸,提出了一種高效
    發表于 05-14 19:51 ?32次下載

    播出服務器磁盤I/O與緩存性能分析

    播出服務器磁盤I/O與緩存性能分析:針對電視臺專業播出服務器在播出質量和播出性能上的高要求,提出了(s,S)策略下讀數據緩存和復用緩存與節目數量、節目數據速率、
    發表于 01-16 15:09 ?22次下載

    電池管理器件的/操作

    電池管理器件的/操作 Dallas Semiconductor 的電池管理IC 采用相同的通信協議和相同的存儲器地址不同類型的存儲器可以分別進行
    發表于 04-12 08:50 ?21次下載

    基于小數據同步的回I/O調度器

    將會導致嚴重的放大問題,使得系統的I/O性能大幅度降低.為了解決上述問題,提出了一種I/O
    發表于 12-26 18:05 ?0次下載

    關于標準I/O庫執行I/O操作

    當在輸入和輸出中遇到換行符時,標準I/O庫執行I/O操作。這允許我們一次
    的頭像 發表于 07-01 17:17 ?2404次閱讀

    如何使用QSPI Flash控制器開發板上的 QSPI Flash進行操作

    學習內容 本文首先介紹Flash和QSPI Flash控制器的相關內容,然后使用 QSPI Flash 控制器,開發板上的 QSPI Flash 進行操作
    的頭像 發表于 06-10 17:08 ?1.4w次閱讀
    如何使用QSPI Flash控制器開發板上的 QSPI Flash<b class='flag-5'>進行</b><b class='flag-5'>寫</b><b class='flag-5'>讀</b><b class='flag-5'>操作</b>

    PIC24HJ128GP506A I/O,定時器中斷操作

    /O輸出方向,x表示端口類別,比如TRISA就是操作A端口輸出方向的,TRISx = 0,表示輸出;TRISx = 1,表示輸入。2.PO
    發表于 11-16 16:06 ?3次下載
    PIC24HJ128GP506A <b class='flag-5'>I</b>/<b class='flag-5'>O</b>,定時器中斷<b class='flag-5'>操作</b>

    Linux磁盤I/O的性能指標和查看性能工具

    在我之前的文章:《探討 Linux 的磁盤 I/O》中,我談到了 Linux 磁盤 I/O 的工
    的頭像 發表于 05-14 15:21 ?2663次閱讀

    使用System IO Ports SerialPort進行串行/

    電子發燒友網站提供《使用System IO Ports SerialPort進行串行/.zip》資料免費下載
    發表于 11-21 09:56 ?0次下載
    使用System IO Ports SerialPort<b class='flag-5'>進行</b>串行<b class='flag-5'>讀</b>/<b class='flag-5'>寫</b>

    為什么異步fifo中地址同步在時鐘域時序分析通過

    為什么異步fifo中地址同步在時鐘域時序分析通過? 異步FIFO中地址同步在時鐘域時序
    的頭像 發表于 10-18 15:23 ?779次閱讀

    Linux系統下I/O操作講解

    Linux系統下I/O 一、I/O簡介 I/O(輸入/輸出
    的頭像 發表于 11-08 15:13 ?1303次閱讀
    Linux系統下<b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>操作</b>講解

    磁盤I/O是怎么工作的

    同前面講述的CPU、內存一樣,文件系統和磁盤I/O,也是Linux操作系統最核心的功能。 磁盤為系統提供了最基本的持久化存儲。 文件系統則在
    的頭像 發表于 11-13 11:20 ?1072次閱讀
    <b class='flag-5'>磁盤</b><b class='flag-5'>I</b>/<b class='flag-5'>O</b>是怎么工作的
    主站蜘蛛池模板: 四虎永久在线精品| 68日本xxxxxxxxx| 男人的j桶女人的j视频| 美女视频网站免费播放视 | 成人激情在线| 天天干天天草| 夜夜爱视频| 丁香五婷婷| 精品伊人久久香线蕉| 欧美一级高清免费播放 | 成人福利在线视频| 很黄的网站在线观看| 国产高清免费午夜在线视频| 天天干夜夜怕| 永久观看| 91tm视频| 夜夜夜夜操| 欧美黑人黄色片| 欧美一级爱操视频| 高清在线免费观看| 日本在线亚洲| 嗯!啊!使劲用力在线观看| 午夜性视频播放免费视频| 一区二区不卡视频在线观看| 五月激情六月| xxxx日本69护士| 爱爱456高清国语在线456| 国内视频一区| 一级黄色毛片播放| 永久免费看毛片| 香蕉久久影院| 四虎永久在线精品| 美女艹逼视频| 久久性色| 国产欧美高清| 俺也来俺也去俺也射| aa毛片| 一级片免费视频| 国产网站大全| 欧美黑人粗暴另类多交| 五月婷婷六月丁香在线|