Ceph性能優化

一、硬件選型

(1)服務器

1GHz CPU per  OSD (the  more the better)

1GB  RAM  per OSD

1GHz  CPU*4  per  MON

4GB  RAM  per  MON

(2)硬盤

SSD、HDD配比1:3~5 (推薦使用Intel DC 3700或同等級以上SSD) 

每個物理節點OSD數量最好控制在單機最大網絡帶寬以內(每塊SATA磁盤平均吞吐量100MB/s)

(3)網卡

每個物理節點最多1個10G或最少4個1000M(採用多網卡bonding方式,mode4)

(4)RAID

write through(no cache)

Raid1(OSD)

(5)IDRAC/ILO

(6)10G switch

10GB網口數量 = 服務器數量*2,跨多個機櫃需要用到40GB級聯口

      InfinBand架構是一種支持多併發鏈接的“轉換線纜”技術。InfinBandr的核心就是把I/O子系統從服務器主機中剝離出去,通過光纖介質,採用基於交換的端到端的傳輸模式連接他們。

RDMA

RDMA(Remote Direct Memory Access)技術全稱遠程直接數據存儲,就是爲了解決網絡傳輸中服務器端數據處理的延遲而產生的。RDMA通過網絡把資料直接傳入計算機的存儲區,將數據從一個系統快遞移動到遠程系統存儲器中,而不對操作系統造成任何影響,這樣就不需要用到多少計算機的處理功能。它消除了外部存儲器複製和文本交換操作,因而能解放內存帶寬和CPU週期用於改進應用系統性能。

二、Accelio + ceph

(1)Accelio:https://github.com/accelio/accelio/

Accelio  is an Open Soure high-performance, asynchronous, reliable messaging and RemoteProcedure Call(RPC) library. Accelio optimizes hardware acceleration for Remote Direct MemoryAccess (RADMA),TCP/IP and shared-memory.

(2)Configure ceph

./configure -enable-xio

三、Ceph + Infiniband(RDMA)

SATA  SSD

PCIe  SSD

四、系統優化

(1)開啓HT,充分發揮處理器的性能

(2)關閉NUMA,減少跨NUMA節點訪問的性能損耗

  1. 添加內核參數numa=off
  2. 在BIOS裏關閉NUMA

(3)關閉節能模式,選擇Performance模式

  1. for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor;do [ -f $CPUFREQ] || continue;echo -n performance > $CPUFREQ;done
  2. 在BISO裏設置

(4)CPU bound

(5)Memory Limit

增大kernel pid max

$:echo 4194303 > /proc/sys/kernel/pid_max

增大數據預讀值,提高讀性能

$:echo "8192" > /sys/block/sda/queue/read_ahead_kb

SWAP的使用傾向概略率,在centos7中,最後保留1-10之間

$:sysctl -w vm.swappiness=0

IO調度策略,對於SATA/SAS 選擇deadline.SSD用noop

$:echo "deadline" > /sys/block/sd[x]/queue/scheduler
$:echo "noop" > /sys/block/sd[x]/queue/scheduler

調整髒數據回寫比例

$:echo 5 > /proc/sys/vm/diry_background_ratio
$:echo 10 > /proc/sys/vm/dirty_ratio

(6)文件系統

推薦選擇XFS文件系統,並保證4k對齊。添加以下掛載參數

rw,noatime,nodiratime,nobarrier,inode64,logbufs=8,logbsize=256k,delaylog

(7)上層應用

  1. 在fio測試中可以發現,iodepth值對測試結果有着顯著的影響,所以client端能夠選用Linux aio庫,理論上是可以在一定程度上優化性能
  2. 雲環境中的VM,可以使用virtio scsi實現多隊列支持

(8)網卡MTU

網卡增大MTU值,可以增強傳輸性能,但在交換機上需要同等的設置

臨時設置

$:ifconfig eth0 mtu 9000

永久設置

$:echo "MTU=9000" >> /etc/sysconfig/network-script/ifcfg-eth0
$:service network restart

 

參數名 描述 默認值 建議值
public network 客戶端訪問網絡   192.168.100.0/24
cluster network 集羣網絡   192.168.1.0/24
max open files 如果設置了該選項,Ceph會設置系統的max open fds 0 131072
filestore xattr use omap0 爲XATTRS使用object map,EXT4文件系統時使用,XFS或者btrfs也可以使用 false true
filestore max syncinterval 從日誌到數據盤最大同步間隔(seconds) 5 15
filestore min sync interval 從日誌到數據最小同步間隔(seconds) 0.1 10
filestore queue max sync interval 數據盤最大接受的操作數 500 2500
filestore queue min sync interval 數據盤一次操作最大字節數(bytes) 100<<20 10485760
filestore queue commiting max ops 數據盤能夠commit的操作數 500 5000
filestore queue commiting min ops 數據盤能夠commit的最大字節數(bytes) 100<<20 1048760000
filestore op threads 併發文件系統操作數 2 32
osd journal size OSD日誌大小(MB) 5120 20000
journal max write bytes journal一次性寫入的最大字節數(bytes) 10<<20 1073714824
journal max write entries journal一次性寫入的最大記錄數 100 10000
journal  queue max ops journal一次性最大在對列中的操作數 500 50000
journal queue max bytes journal一次性最大在隊列中的字節數(bytes) 10<<20 10485760000
osd max write size osd一次可寫入的最大值(MB) 90 512
osd client write size 客戶端允許在內存中的最大數據(bytes) 524288000 2147483648
osd client message size cap 在Deep scrub時候允許讀取的字節數(bytes) 524288 131072
osd deep scrub stride

OSD進程操作的線程數

2 8
osd op threads OSD密集型操作例如恢復和scrubbing時的線程 1 4
osd map cache size 保留OSD Map的緩存(MB) 500 1024
osd map cache blsize OSD進程在內存中的OSD Map緩存(MB) 50 128
osd recovery op priority 恢復操作優先級。取值1-63,值越高佔用資源越高 10 4
osd recovery max active 同一時間內活躍的恢復請求數 15 10
osd max backflls 一個OSD允許的最大backfills數 10 4
rbd cache RBD緩存 true true
rbd cache size RBD緩存大小(bytes) 33554432 268435456
rbd cache max dirty 緩存爲write-back時允許的最大dirty字節數(bytes),如果爲0,使用write-through 25165824 134217728
rbd cache max dirty age 在被刷新到存儲盤前dirty數據存在緩存的時間(seconds) 1 5

(9)條帶設置

(10)tcmalloc

  1. 調整max thread cache :TCMALLOC_MAX_TOTAL_CACHE_BYTES=128M
  2. @@-3026+3027@@  /etc/init.d/cepe

    3. cmd="$SYSTEMD_RUN -r bash -c '$files $cmd --cluster $cluster -f' "

五、性能測試

1、rados測試

$:rados -p rbd bench -b 4194304 60 write -t 32 --no-cleanup
$:rados -p rbd bench -b 4194304 60 seq -t 32 --no-cleanup
$:rados -p rbd cleanup --prfix benchmark_data_ubuntu-ceph-06_30928

2、FIo工具

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章