2014-01-30 48 views
3

這是blktrace的輸出。我無法理解什麼是「N 0(00 ..)[multipathd]」。我正在測試FS的寫IO性能。blktrace來衡量IO性能

我有2個疑惑,

  1. N - 是一個動作,但我不覺得它在blktrace.pdf使用。
  2. IOSTAT和BLKTRACE有什麼區別?

blktrace O/P:

8,128 7  11 85.638053443 4009 I N 0 (00 ..) [multipathd] 
    8,128 7  12 85.638054275 4009 D N 0 (00 ..) [multipathd] 
    8,128 2  88 89.861199377 5210 A W 384 + 8 <- (253,0) 384 
    8,128 2  89 89.861199876 5210 Q W 384 + 8 [i_worker_0] 
    8,128 2  90 89.861202645 5210 G W 384 + 8 [i_worker_0] 
    8,128 2  91 89.861204604 5210 P N [i_worker_0] 
    8,128 2  92 89.861205587 5210 I WA 384 + 8 [i_worker_0] 
    8,128 2  93 89.861210869 5210 D WA 384 + 8 [i_worker_0] 
    8,128 2  94 89.861499857  0 C WA 384 + 8 [0] 
    8,128 2  95 99.845910681 5230 A W 384 + 8 <- (253,0) 384 
    8,128 2  96 99.845911148 5230 Q W 384 + 8 [i_worker_20] 
    8,128 2  97 99.845913846 5230 G W 384 + 8 [i_worker_20] 
    8,128 2  98 99.845915910 5230 P N [i_worker_20] 
    8,128 2  99 99.845917081 5230 I WA 384 + 8 [i_worker_20] 
    8,128 2  100 99.845922597 5230 D WA 384 + 8 [i_worker_20] 
+1

http://brooker.co.za/blog/2013/07/14/io-performance.html - 非常好的鏈接 – Angus

+0

http://www.admin-magazine.com/HPC/Articles/HPC-Storage-IO -Profiling - 關於iostat和blktrace的一些注意 – Angus

回答

8

有介紹blktrace IOSTAT和BLKTRACE之間http://duch.mimuw.edu.pl/~lichota/09-10/Optymalizacja-open-source/Materialy/10%20-%20Dysk/gelato_ICE06apr_blktrace_brunelle_hp.pdf

差。

檢查載玻片5和6:

的iostat的實用程序提供與請求與 具體設備

  • 相關聯的隊列的信息 - 平均I /隊列O時間,數合併,讀/寫塊的數量,...
  • - 然而,它沒有提供關於perI/O的詳細信息

Blktrace。低開銷,可配置的內核組件,它針對進入塊I/O層的每個I/O執行的特定操作發出事件

因此,iostat是輸出統計信息的通用工具; blktrace是捕獲和輸出有關工具處於活動狀態時所服務的所有I/O請求的更多信息的工具。

幻燈片11有一定的解碼介紹

8,128 7  11 85.638053443 4009 I N 0 (00 ..) [multipathd] 
maj/min cpu seq# timestamp_s.ns pid ACT RWBS blocks process 

在multipathd核心守護進程,因爲它的名字被納入[]括號。

默認格式在blktrace.pdf描述(在此,是pdf的源:http://git.kernel.org/cgit/linux/kernel/git/axboe/blktrace.git/tree/doc/blktrace.tex

"%D %2c %8s %5T.%9t %5p %2a %3d " 

%d顯示事件的設備主要/次要爲:\%3D,\% - 3D 。 %2c CPU ID(2個字符的字段)。 %787-8序號 %5T。%9噸5-字符內的 時間戳的用於時間戳的納秒秒部分和9個字符的場域。 %5p字符的進程ID字段。 %2a其中一個操作的2個字符的字段。 %RWBS數據的3d 3字符字段。

操作

C -- complete 
D -- issued 
I -- inserted 
Q -- queued 
B -- bounced 
M -- back merge 
F -- front merge 
G -- get request 
S -- sleep 
P -- plug 
U -- unplug 
T -- unplug due to timer 
X -- split 
A -- remap 
m -- message 

RWBS

'R' - read, 
'W' - write 
'D' - block discard operation 
'B' for barrier operation or 
'S' for synchronous operation. 

所以,在multipathd我們有 「I」 行動= 「插入」 和N爲RWBS,並且N爲怪。文檔中不存在N,甚至在源文件中:blkparse_fmt.c - fill_rwbs()。爲什麼?因爲它是老醫生和老源。

在現代性的核心,例如,3.12有N的fill_rwbs:http://sources.debian.net/src/linux/3.12.6-2/kernel/trace/blktrace.c?hl=1038#L1038

if (t->action == BLK_TN_MESSAGE) { 
    rwbs[i++] = 'N'; 
    goto out; 
} 

而且blktrace_api.h聲明BLK_TN_MESSAGE作爲

#define BLK_TN_MESSAGE  (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY)) 

* Trace categories 
    BLK_TC_NOTIFY = 1 << 10, /* special message */ 

* Notify events. 
    __BLK_TN_MESSAGE,  /* Character string message */ 

因此, 'N' 是用繩子通知動作信息。我認爲這個消息被看作是代替「塊」字段。我能夠找到添加TN_MESSAGE的補丁,但沒有更新文檔(正如計劃在bazaar -model like linux)http://lkml.org/lkml/2009/3/27/31「[PATCH v2 6/7] blktrace:正確打印出BLK_TN_MESSAGE」2009

+0

感謝您用一個很好的答案來解釋 – Angus

+0

Angus,嗯,這裏還有一個賞金 - 「尋找來自可信和/或官方消息來源的答案。你確定有可能有更可信的官方消息來源,比來自lkml的消息http://lkml.org/lkml/2009/3/27/31? – osgx

+0

我想獎賞你的賞金。所以我打開了一個。 – Angus