1. 程式人生 > 其它 >命令列檢視Gluster卷頻寬方法

命令列檢視Gluster卷頻寬方法

首先在gluster客戶端使用fio工具往gluster卷中寫入資料,不要用dd,dd工具會寫入快取,不好觀察磁碟IO,fio參考命令:

fio -filename=file4 -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=128k -size=32G -numjobs=10  -group_reporting -name=gfstest

GlusterFS Volume Profile簡介

GlusterFS Volume Profile命令提供了一個介面,用於獲取卷中每個Brick的I / O資訊,有助於分析儲存系統中的瓶頸。

Usage:
volume profile <VOLNAME> {start|info [peek|incremental [peek]|cumulative|clear]|stop} [nfs]

首先要開啟卷的效能分析選項:

# gluster volume profile fuben start

檢視卷效能命令:

# gluster volume profile fuben info

引數說明:

Cumulative Stats:Brick的累計統計資料資訊

Block Size:每次讀取或寫入的塊大小,這個值會根據當前客戶端的IO大小自動調整

修改引數:performance.rda-request-size,可減少客戶端與伺服器的互動,增強效能,通過該命令檢視:gluster v get fuben all|grep performance.rda-request-size,上圖的Block Size是128k

No. of Reads:從該Brick中累計讀取的Block Size次數

No. of Writes:累計寫入該Brick中的Block Size次數,這個值是從下面的Fop欄位中的WRITE欄獲取的

%-latency:Brick中每個Fop步驟的延時比例佔比;

Duration:累計統計時間

Data Read:從該Brick中累計讀取的資料量,這個值是由No. of Reads乘以Block Size得到的;

Data Written:累計寫入該Brick中的資料量,這個值No. of Writes乘以Block Size得到的;

由上引數說明可得出:

卷的讀寫iops=每個Brick中的No. of Reads或No. of Writes除以Duration後相加的值;

卷的讀寫頻寬=每個Brick中的Data Read或Data Written除以Duration後相加的值;

檢視最新的幾條效能資料資訊:

# gluster v profile fuben info incremental

列印副本卷所有Brick的寫延時資料

gluster v profile gfspool2 info incremental|egrep 'Brick|latency|WRITE'

列印副本卷所有Brick的數量和平均寫延時之和【寫延時=平均寫延時之和/Brick數量,單位是us】

gluster v profile gfspool2 info incremental|egrep 'WRITE'|awk '{sum+=$2} END {print sum} END{print NR}'

列印副本卷統計間隔

gluster v profile gfspool2 info incremental|egrep 'Duration'|awk '{print $2}'|uniq

列印副本卷所有Brick讀頻寬資料

gluster v profile gfspool2 info incremental|egrep 'Data Read'|awk '{print $3}'

列印副本卷所有Brick寫頻寬資料

gluster v profile gfspool2 info incremental|egrep 'Data Written'|awk '{print $3}'

列印副本卷所有Date Brick資料卷(不含仲裁卷)寫頻寬之和並轉換為MB(讀類似)

gluster v profile gfspool2 info incremental|egrep 'Brick|Duration|Data Read|Data Written'|grep -A 3 'data$'|grep 'Data Written'|awk '{sum+=$3} END {print sum/1024/1024}'

列印副本卷所有Date Brick(含仲裁卷)統計間隔和寫頻寬之和【計算寫頻寬結果:(寫頻寬之和-統計間隔)/統計間隔】

注1:如果卷是2副本的,實際頻寬要乘以副本數,因為檔案寫進來會同時往2個Brick上面寫

注2:要看讀的話,把下面命令中的Data Written換成Data Read即可

注3:命令列中的head -5,這個5指的是卷的所有Brick數量+1

gluster v profile gfspool2 info incremental|egrep 'Duration|Data Written'|sort|uniq|awk -F ": " '{print $2}'|awk '{sum+=$1} END {print sum/1024/1024} END{print $1}'
gluster v profile fuben info incremental|egrep 'Duration|Data Written'|sort -r|awk -F ": " '{print $2}'|head -5|awk '{sum+=$1} END {print "ALL Data Written(bytes): " sum} END{print "Duration: " $1} END{print "Bandwidth(MB/S): " sum/1024/1024/$1-1}'

列印副本卷所有Date Brick統計間隔和寫IOPS之和【計算寫IOPS結果:(寫IOPS之和-統計間隔)/統計間隔】

注1:要看讀的話,把下面命令中的No. of Writes換成No. of Reads即可

gluster v profile gfspool2 info incremental|egrep 'Duration|No. of Writes'|sort -r|uniq|awk -F ": " '{print $2}'|awk '{sum+=$1} END {print sum} END{print $1}'
gluster v profile fuben info incremental|egrep 'Duration|No. of Writes'|sort -r|awk -F ": " '{print $2}'|head -5|awk '{sum+=$1} END {print "ALL No. of Writes: " sum} END{print "Duration: " $1} END{print "iops: " sum/$1-1}'

演示效果:

列印糾刪卷所有Date Brick統計間隔和寫IOPS之和【計算寫IOPS結果:(寫IOPS之和-統計間隔)/統計間隔】

gluster v profile ecpool info incremental|egrep 'Duration|No. of Writes'|sort -r|awk -F ": " '{print $2}'|head -21|awk '{sum+=$1} END {print "ALL No. of Writes: " sum} END{print "Duration: " $1} END{print "iops: " sum/$1-1}'

注1:命令列中的head -21,這個21是卷的所有Brick數量+1(加的這個1是統計間隔的資料所在行數),比如卷是分散式為2,糾刪比為8:2的型別,那麼head後面的值就是(8+2)×2+1

列印糾刪卷所有Date Brick統計間隔和寫頻寬之和【計算寫頻寬結果:(寫頻寬之和-統計間隔)/統計間隔】

gluster v profile ecpool info incremental|egrep 'Duration|Data Written'|sort|awk -F ": " '{print $2}'|head -21|awk '{sum+=$1} END {print "ALL Data Written(bytes): " sum} END{print "Duration: " $1} END{print "Bandwidth(MB/S): " sum/1024/1024/$1-1}'

列印糾刪卷所有Brick的寫延時

gluster v profile ecpool info incremental|egrep 'WRITE|%-latency'|sort -r|uniq

列印糾刪卷所有Brick的讀和寫的延時

gluster v profile fuben info incremental|egrep 'READ$|WRITE'|sort|awk '{print $9 ": "$2 " " $3}

列印糾刪卷所有Brick的數量和平均寫延時之和【寫延時=平均寫延時之和/Brick數量,單位是us】

gluster v profile ecpool info incremental|egrep 'WRITE'|awk '{sum+=$2} END {print "SUM Avg-latency: " sum}  END{print "Number of Brick: " NR} END{print "Avg-latency(us): " sum/NR-1}'

演示效果: