閱讀249 返回首頁    go 微軟 go windows


如何更改 Linux I/O 調度器來調整性能

為了從 Linux 服務器榨取盡可能多的性能,請了解如何更改 I/O 調度器以滿足你的需求。

Linux I/O 調度器Linux I/O scheduler控製內核提交讀寫請求給磁盤的方式。自從 2.6 內核以來,管理員已經能夠更改這個調度器,所以他們可以自定義他們的平台以完全適合他們的需要。

有三個調度器可供選擇,每個調度器都有其優點。這些調度器是:

  • CFQ (Completely Fair Scheduler完全公平調度器)(cfq) :它是許多 Linux 發行版的默認調度器;它將由進程提交的同步請求放到多個進程隊列中,然後為每個隊列分配時間片以訪問磁盤。
  • Noop 調度器(noop) : 基於先入先出(FIFO)隊列概念的 Linux 內核裏最簡單的 I/O 調度器。此調度程序最適合於 SSD。
  • 截止時間調度器(deadline) : 嚐試保證請求的開始服務時間。

當你想要讓 Linux 機器發揮最佳性能時,這可能是你所要做的事情之一。幸運的是,更改 I/O 調度器非常簡單。讓我告訴你怎麼做。

找出你有的調度器

你需要做的第一件事是找出哪個調度器正在處理你係統上的 I/O。這是從命令行完成的,你必須知道磁盤的名稱。為簡單起見,我假設磁盤是 sda。據此信息,打開終端窗口並輸入以下命令:


  1. cat /sys/block/sda/queue/scheduler

該命令的結果將顯示當前運行的調度程序(下圖)。

Elementary OS Loki 運行 deadline 調度器。

Elementary OS Loki 運行 deadline 調度器。

更改你的調度器

你可以通過兩種方式更改你的調度器:即時或永久。如果你即時更改調度器,它會在重啟後恢複到之前的默認調度器。你可能希望首先進行即時更改,以查看哪個調度器能為你的需求帶來最佳性能。

說到你要即時改到 noop 調度器。 為此,輸入以下命令:


  1. sudo echo noop > /sys/block/hda/queue/scheduler

你可以將 noop 更改為 cfq 或 deadline

此更改可以在不重新啟動計算機的情況下生效。 一旦更改,I/O 調度器將會切換,(希望)你能看到性能提高(再說一次,根據你的需要而定)。

如果要將調度器更改為永久,則必須在 GRUB 配置文件中執行此操作。 為此,請輸入 sudo nano /etc/default/grub,然後修改下麵的行:


  1. GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"


  1. GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

同樣,你可以改變 noop 為任何你需要的調度器。如果你用的是即時修改,則不必重新啟動以使新調度器生效。

這些就是修改調度器的方法了。

做出明智的選擇

你應該做研究,找出什麼調度器最適合你的特殊情況。要了解每個調度器的更多信息,請查看這些 Wiki 頁麵:CFSNoop和 Deadline

原文發布時間為:2017-02-06

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-26 09:32:47

  上一篇:go  2016信息之美入選作品設計者自白:如何做好可視化“再”設計
  下一篇:go  如何在 Ubuntu 16.04 中安裝 Ceph 存儲集群