MySQL資料庫環境如何調整磁碟IO排程演算法
檢視當前系統支援的磁碟IO排程演算法
[root@alpha-mongo-140-52 ~]# dmesg | grep -i scheduler
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
default代表當前裝置使用的預設的IO排程演算法
也可以用以下命令檢視:
[root@test ~]# more /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
備註:括號裡括起來的即為當前排程演算法值
修改當前塊裝置使用的io排程演算法為deadline:
[root@test ~]# echo "deadline" > /sys/block/sda/queue/scheduler
備註:修改立即生效
[root@test ~]# more /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
排程演算法介紹:
Linux有四種IO排程演算法,分別為完全公平佇列演算法(Complete Fair Queuing/CFQ), NOOP演算法(No Operation),最後期限演算法(Deadline)和預期演算法(anticipatory).
[root@alpha-mongo-140-52 ~]# dmesg | grep -i scheduler
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
default代表當前裝置使用的預設的IO排程演算法
也可以用以下命令檢視:
[root@test ~]# more /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
備註:括號裡括起來的即為當前排程演算法值
修改當前塊裝置使用的io排程演算法為deadline:
[root@test ~]# echo "deadline" > /sys/block/sda/queue/scheduler
備註:修改立即生效
[root@test ~]# more /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
排程演算法介紹:
Linux有四種IO排程演算法,分別為完全公平佇列演算法(Complete Fair Queuing/CFQ), NOOP演算法(No Operation),最後期限演算法(Deadline)和預期演算法(anticipatory).
- 完全佇列公平演算法把磁碟I/O請求按照程式分別放入程式對應的佇列中。CFQ的公平是針對程式而言的,每一個提交I/O請求的程式都會有自己的I/O佇列,CFQ以時間片演算法為前提,輪流調動佇列,預設當前佇列中取出4個請求來處理,然後接著處理下一個佇列裡的4個請求,確保每個程式享有的IO資源是均衡的。CFQ是Linux預設的I/O排程演算法。
- NOOP演算法是不對I/O請求排序,除了合併請求也不會進行其他任何最佳化,用最簡單的先進先出佇列順序提交I/O請求,NOOP演算法面向的主要是隨機IO訪問裝置SSD等。
- 最後期限演算法(Deadline)除了維護了一個擁有合併和排序功能的請求佇列外,額外維護了兩個佇列,分別是讀請求佇列和寫請求佇列,他們都是帶有超時的請求佇列,當新來一個IO請求時,會被同時插入普通佇列和讀寫佇列,然後I/O排程器正常處理普通佇列中的請求。當排程器發現讀寫請求佇列中的請求超時的時候,會優先處理這些請求,保證儘可能不產生飢餓請求。對於MYSQL來說,建議設定為Deadline,對MYSQL來說是很好的排程演算法。
- 預期演算法(anticipatory)是基於預測的I/O演算法,它和Deadline類似,也維護了三個請求佇列,區別在於,預期演算法處理完一個IO請求後並不會直接返回處理下一個請求,而是等待預設6秒,等待期間如果有新進來的相鄰扇區的請求,會直接處理新來的請求,當等待6秒結束後,排程才返回處理下一個佇列請求。anticipatory適合寫多讀少的環境,不適合MySQL等隨機讀取較多的資料庫環境。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2155220/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql資料庫磁碟io高的排查MySql資料庫
- 神通資料庫測試環境調優過程資料庫
- MySQL優化--IO排程演算法優化MySql優化演算法
- linux之 修改磁碟排程演算法Linux演算法
- 如何選擇IO排程器
- Win環境至Linux環境Oracle資料庫遷移全過程LinuxOracle資料庫
- 【MySQL資料庫】認識資料庫+環境搭建--------Windows系統MySql資料庫Windows
- 資料庫高io問題調查資料庫
- Linux IO排程方法Linux
- MySQL 磁碟 IO 過高MySql
- 資料排程
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- 達夢資料庫引數調整方法資料庫
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- wdcp環境innodb結構mysql資料庫表異常需要重建MySql資料庫
- MySql資料庫——儲存過程MySql資料庫儲存過程
- python環境連結Oracle資料庫PythonOracle資料庫
- MySQL 8.0 | CATS排程演算法的效能提升MySql演算法
- Linux環境下的Mysql資料庫入門-基於Centos系統LinuxMySql資料庫CentOS
- 19c ADG環境中主庫PDB調整SGA_TARGET自動同步到備庫
- 在容器環境搭建mysql備庫MySql
- 企業環境下MySQL5.5調優MySql
- 為什麼資料庫調整大小如此困難?資料庫
- 教小白搭建sybase資料庫環境資料庫
- Mac環境下安裝MongoDB資料庫MacMongoDB資料庫
- 生產環境故障處理演練-mysql資料庫主從恢復MySql資料庫
- MySQL-12.資料庫其他調優策略MySql資料庫
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- 資料庫IO有多慢?資料庫
- 聊聊kube-scheduler如何完成排程和調整排程權重
- 如何連線MySQL資料庫MySql資料庫
- Vapor如何配置MySQL資料庫VaporMySql資料庫
- 如何修復mysql資料庫MySql資料庫
- MySQL資料庫如何啟動?MySql資料庫
- openGauss資料庫JDBC環境連線配置(Eclipse)資料庫JDBCEclipse
- MySQL 8.0 —— CATS事務排程演算法的效能提升MySql演算法
- C語言寫的磁碟排程演算法,歡迎大家來討論C語言演算法
- LVS排程演算法演算法