pt-ioprofile分析查看mysql的真實IO情況

來源:互聯網
上載者:User

標籤:

針對IO密集型應用做系統調優的時候,我們通常都需要知道系統cpu  記憶體  io 網路等系統效能 和 使用率,結合應用本身的訪問量,以及 mysql的效能指標來綜合分析。比如說:我們將系統壓力情況分為三個階段:從使用者端開始到web server,再到mysql。

1. 客戶量:我們可以從web app的訪問log,查看訪問量(通常會記錄時間),

2. 系統指標: 對比dstat、 iostat/ mpstat pidstat 等搜集對應的系統效能指標,

3. mysql: 使用mysql status ,或者 mycheckpoint等工具搜集mysql的cache , query等資料。

但是問題來了,我們很容易搜集到了系統層、裝置層的IO資料,但是缺少一個體貼的工具來告訴你應用開啟了多少檔案,檔案讀寫比例,執行了多少次fsync,是隨機讀寫還是順序讀寫,另外,mysql是一個龐大而精心設計的系統,使用了一些列的方案如table cache, thread cache 等來提升IO,我們比較容易獲得他的緩衝量,命中率,檔案數,但是卻不好直觀的知道它到底對物理IO裝置讀寫了多少資料。

ioprofile就是這樣一個工具,提供了直觀的量化的資料來描述進程對io裝置的真實讀寫量。

由於實現方式是使用strace注入到線程中,所以運行時需要sudo,方法如下:

sudo ./pt-ioprofile -p 8534 -c count 

 

sudo ./pt-ioprofile -p 8534 -c sizes 

2015年 04月 23日 星期四 17:55:35 CSTTracing process ID 8534     total       read     pwrite      fsync       open      close filename    613878     613878          0          0          0          0 /redmine/mysql/data/mycheckpoint/sv_diff.frm    406924     406924          0          0          0          0 /redmine/mysql/data/mycheckpoint/sv_sample.frm     18432          0      18432          0          0          0 /redmine/mysql/data/ib_logfile1      3029       3029          0          0          0          0 /redmine/mysql/data/mycheckpoint/custom_query_view.frm

sudo ./pt-ioprofile -p 8534 -c times

2015年 04月 23日 星期四 17:54:09 CSTTracing process ID 8534     total     pwrite      fsync filename  0.100162   0.000271   0.099891 /redmine/mysql/data/ibdata1  0.003826   0.000000   0.003826 /redmine/mysql/data/ib_logfile0

sudo ./pt-ioprofile -p 8534 -c sizes -g filename

有人在生產環境中使用ioprofile時出現導致mysql掛起的現象,雖然是4年前了,但還是請謹慎使用。 

 

以上資料輸出中的 read write  fread fwrite  fsync 等指標分別是指什麼呢? 多大的量才算正常?

read/write/fsync:

1. linux底層操作;

2. 核心調用, 涉及到進程內容相關的切換,即使用者態到核心態的轉換,這是個比較消耗效能的操作。

fread/fwrite/fflush:

1. c語言標準規定的io流操作,建立在read/write/fsync之上
2. 在使用者層, 又增加了一層緩衝機制,用於減少核心調用次數,但是增加了一次記憶體拷貝。

關係參看:

 

1. 對於輸入裝置,調用fsync/fflush將清空相應的緩衝區,其內資料將被丟棄;

2. 對於輸出裝置或磁碟檔案,fflush只能保證資料到達核心緩衝區,並不能保證資料到達物理裝置, 因此應該在調用fflush後,調用fsync(fileno(stream)),確保資料存入磁碟。

參考:

1. http://blog.yufeng.info/archives/995

2. http://blog.csdn.net/ybxuwei/article/details/22727565

pt-ioprofile分析查看mysql的真實IO情況

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.