ceph jewel手動編譯安裝的一些優化

1、手動安裝ceph。linux

    根據http://my.oschina.net/linuxhunter/blog/682013,手動安裝jewel版本ceph到硬件服務器。ubuntu

2、測試ceph集羣的方法。服務器

    使用ceph自帶的rados bench命令簡單測試手動搭建ceph集羣的性能,查看系統性能的工具使用perf命令。因爲默認安裝的ubuntu環境沒有安裝perf工具及其依賴,全部要手動安裝perf工具。#apt-get install perf linux-tools-4.4.0-21-generic。安裝完成後啓用兩個終端分別運行#perf top命令和#rados banch -p test_rbd 60 write --no-cleanup命令。架構

3、發現的問題。函數

    在運行#perf top命令的終端上發現ceph-osd在調用ceph_crc32_sctp這個函數上佔用了35%的CPU時間,而此時集羣的壓力並不大,所以決定從源代碼上找找ceph_crc32_sctp爲何佔用那麼多的CPU時間。工具

    ceph_crc32_sctp這個函數位於src/common/sctp_crc32.c這個文件中,只有ceph_choose_crc32函數調用ceph_crc32_sctp函數。分析ceph_choose_crc32這個函數不難發現,該函數根據當前CPU的架構來選擇計算crc32的方法。若CPU是intel的CPU且支持sse4指令集,則使用硬件計算crc32值(調用ceph_crc32_intel_fast函數),不然使用軟件計算crc32值(調用ceph_crc32_sctp函數)。咱們使用的CPU是intel Xeon 2560 v2,固然支持sse4指令集。性能

4、解決問題的方法。測試

    要想讓ceph支持硬件計算crc32值,就的在編譯ceph的時候安裝yasm工具包,使得ceph能夠正確經過彙編語句訪問硬件。所以須要手動安裝yasm工具包,即:#apt-get install yasm。以後按照http://my.oschina.net/linuxhunter/blog/682013從新手動編譯並安裝ceph。優化

5、優化結果。.net

    基於yasm工具包編譯後的ceph,再通過rados bench測試後發如今perf top中ceph-osd進程中crc32_iscsi_00函數佔用8%左右的CPU時間,而crc32_iscsi_00函數正是被ceph_crc32_intel_fast函數所調用。所以基於yasm編譯後的ceph會充分利用硬件CPU特性來計算crc32的值,所以cpu佔用率會降低不少,從35%降低到8%。

相關文章
相關標籤/搜索