如何更改Linux I/O調(diào)度器來調(diào)整性能
為了從 Linux 服務(wù)器榨取盡可能多的性能,請了解如何更改 I/O 調(diào)度器以滿足你的需求。Linux I/O 調(diào)度器Linux I/O scheduler控制內(nèi)核提交讀寫請求給磁盤的方式。自從 2.6 內(nèi)核以來,管理員已經(jīng)能夠更改這個(gè)調(diào)度器,所以他們可以自定義他們的平臺以完全適合他們的需要。
有三個(gè)調(diào)度器可供選擇,每個(gè)調(diào)度器都有其優(yōu)點(diǎn)。這些調(diào)度器是:
CFQ (Completely Fair Scheduler完全公平調(diào)度器)(cfq) :它是許多 Linux 發(fā)行版的默認(rèn)調(diào)度器;它將由進(jìn)程提交的同步請求放到多個(gè)進(jìn)程隊(duì)列中,然后為每個(gè)隊(duì)列分配時(shí)間片以訪問磁盤。
Noop 調(diào)度器(noop) : 基于先入先出(FIFO)隊(duì)列概念的 Linux 內(nèi)核里最簡單的 I/O 調(diào)度器。此調(diào)度程序最適合于 SSD。
截止時(shí)間調(diào)度器(deadline) : 嘗試保證請求的開始服務(wù)時(shí)間。
當(dāng)你想要讓 Linux 機(jī)器發(fā)揮***性能時(shí),這可能是你所要做的事情之一。幸運(yùn)的是,更改 I/O 調(diào)度器非常簡單。讓我告訴你怎么做。
找出你有的調(diào)度器
你需要做的***件事是找出哪個(gè)調(diào)度器正在處理你系統(tǒng)上的 I/O。這是從命令行完成的,你必須知道磁盤的名稱。為簡單起見,我假設(shè)磁盤是 sda。據(jù)此信息,打開終端窗口并輸入以下命令:
- cat /sys/block/sda/queue/scheduler
該命令的結(jié)果將顯示當(dāng)前運(yùn)行的調(diào)度程序(下圖)。
Elementary OS Loki 運(yùn)行 deadline 調(diào)度器。
更改你的調(diào)度器
你可以通過兩種方式更改你的調(diào)度器:即時(shí)或***。如果你即時(shí)更改調(diào)度器,它會在重啟后恢復(fù)到之前的默認(rèn)調(diào)度器。你可能希望首先進(jìn)行即時(shí)更改,以查看哪個(gè)調(diào)度器能為你的需求帶來***性能。
說到你要即時(shí)改到 noop 調(diào)度器。 為此,輸入以下命令:
- sudo echo noop > /sys/block/hda/queue/scheduler
你可以將 noop 更改為 cfq 或 deadline。
此更改可以在不重新啟動(dòng)計(jì)算機(jī)的情況下生效。 一旦更改,I/O 調(diào)度器將會切換,(希望)你能看到性能提高(再說一次,根據(jù)你的需要而定)。
如果要將調(diào)度器更改為***,則必須在 GRUB 配置文件中執(zhí)行此操作。 為此,請輸入 sudo nano /etc/default/grub,然后修改下面的行:
- GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
到
- GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"
同樣,你可以改變 noop 為任何你需要的調(diào)度器。如果你用的是即時(shí)修改,則不必重新啟動(dòng)以使新調(diào)度器生效。
這些就是修改調(diào)度器的方法了。
做出明智的選擇
你應(yīng)該做研究,找出什么調(diào)度器最適合你的特殊情況。要了解每個(gè)調(diào)度器的更多信息,請查看這些 Wiki 頁面:CFS、Noop和 Deadline。