Ceph 引數效能調優

2021-07-07 07:06:47 字數 3244 閱讀 5581

網路的各種ceph引數的優化比較多,有些有效果,有些在某些場景下不但達不到預期的效果,反而有相反的效果。很多引數如果不了解其意義,面對不同的應用場景就顯得無所適從,所以有必要簡單的了解一下相關的原理。

圖1: osd 寫請求的流程

如圖1 所示:

一次寫操作的最大的size,也就是fio測試的到時候一次寫的blocksize,同時也是日誌的最小size,也就是說日誌的大小至少大於一次寫操作的大小。

這兩個引數是在msg層做的限制。如圖1所示的osd的最頂層

限制osd在網路層接受client的請求的msg的總的大小和數量,預設值為500m,100

osd_client_message_cap的值要往大調。可以通過ceph daemon osd.0 perf dump 命令檢視相對應的兩個throttle的統計資訊。如果該限制起作用,就他調到相應的引數。

throttle-osd_client_bytes

throttle-osd_client_messages

filesotre 的op_wq裡對應的限制

filestore_queue_max_ops = 25000 (預設值為 50)

filestore_queue_max_bytes = 1048576000 (預設值 100m)

filestore_queue_committing_max_ops 和filestore_queue_committing_max_bytes這兩個引數對可以checkpoint的檔案系統如btrfs,zfs有用,對於xfs沒有作用。

如圖1所示,這兩個引數控制日誌的write_thread執行緒,

一次寫入磁碟的最大條數和位元組數,預設值分別為100和10m,這個必須調高

journal_max_write_bytes = 1073714824

journal_max_write_entries = 10000

如圖1所示的filejournal的writeq的限制。這是乙個throttle,預設值為300和32m,這個可以往大調。

journal_queue_max_ops = 50000

journal_queue_max_bytes = 10485760000

osd的執行緒池 osd_tp, 其主要處理peering_wq的請求,執行緒數量 osd_op_threads,因其不再讀寫的關鍵路徑上,其一般不做調整。

執行緒池osd_op_tp 處理op_shardedwq 佇列裡的請求。如圖1所示,它是主要的osd的處理執行緒池,其數量為:osd_op_num_threads_per_shard * osd_op_num_shards,預設值分別為5,2, 總共10個執行緒,可以往大調整,測試發現它對效能影響不是特別大。

disktp 對於的處理的任務:snap_trim_wq, scrub_wq, rep_scrub_wq,remove_wq, 執行緒池的數量 osd_disk_threads,預設值為1,它不在讀寫的關鍵路徑上,對效能影響不大。

filestore_op_threads,這個引數設定filestore的op_wq執行緒池數量。預設值為2 ,測試時設定為8,對效能影響不大。一般不做調整。

osdmap 檢視歷史的osdmap的資料

osd_pg_object_context_cache_count (default 64)

filestore_fd_cache_shard (default 16)

filestore_fd_cache_size ( default 128)

filestore_omap_header_cache_size (default 1024)

這幾個引數都是這種和物件相關的快取機制,分別為 object_context,fd,omap

的快取,這幾個引數對於順序讀寫沒有太大的影響。對於隨機讀寫來說,可以調到一點。 測試時設定為1024和10240,對隨機io效能略有提公升。

filestore_commit_timeout=30000

filestore _min_sync_interval = 5

filestore _max_sync_interval = 10

如圖1所示的osd的讀寫流程,sync_thread至少filestore _max_sync_interval秒的時間喚醒一次,在filestore _min_sync_interval內呼叫syncfs同步日誌一次。如果日誌比較大的話,可以設定的比較長一點。

[osd]

filestore_op_threads=4

filestore_journal_parallel=false

filestore_journal_writeahead=true

journal_dio = true

journal_aio = true

journal_force_aio = true

filestore_fiemap = true

filestore_wbthrottle_enable=false

filestore_fd_cache_size = 1024

filestore_omap_header_cache_size = 1024

osd_pg_object_context_cache_count= 1024

filestore_commit_timeout=30000

filestore _min_sync_interval = 5

filestore _max_sync_interval = 10

osd client message size cap = 2147483648

osd_client_message_cap = 5000

filestore_queue_max_ops = 25000

filestore_queue_max_bytes = 1048576000

journal_max_write_bytes = 1073714824

journal_max_write_entries = 10000

journal_queue_max_ops = 50000

journal_queue_max_bytes = 10485760000

[client]

rbd cache = true

rbd cache size = 268435456

rbd cache max dirty = 134217728

rbd cache max dirty age = 5

調優 Nginx效能調優

一.nginx優化配置 1.主配置檔案優化 注 部分配置詳解 worker processes 8 nginx程序數,建議按照cpu數目來指定,一般為它的倍數。worker cpu affinity 00000001 00000010 00000100 00001000 00010000 00100...

Spark效能調優 JVM調優

通過一張圖讓你明白以下四個問題 1.jvm gc機制,堆記憶體的組成 2.spark的調優為什麼會和jvm的調優會有關聯?因為scala也是基於jvm執行的語言 3.spark中oom產生的原因 4.如何在jvm這個層面上來對spark進行調優 補充 spark程式執行時 jvm堆記憶體分配比例 r...

mysql效能調優 引數說明

1 skip external locking 避免mysql的外部鎖定,減少出錯機率增強穩定性,預設為啟用 2 skip name resolve 禁止mysql對外部連線進行dns解析,使用這一選項可以消除mysql進行dns解析的時間。啟用後,所有的授權必須使用ip位址。3 back log ...