CentOS 7.4 基礎設定 (13) - 調整 I/O Scheduler 為 Noop 加速 Disk I/O


前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.4 (1709) Kernel 3.10.0-693.el7.x86_64) 映像檔,也就是新版 CentOS 7.4 最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




調整 I/O Scheduler 為 Noop 加速 Disk I/O

由於本文的運作環境為 Windows Server 2016 Hyper-V 虛擬化平台。因此,根據官方最佳作法 Best Practices for running Linux on Hyper-V | Microsoft Docs 以及 What is the suggested I/O scheduler to improve disk performance when using Red Hat Enterprise Linux with virtualization? 文件內容可知,建議將 CentOS I/O Scheduler 調整為 Noop 以便加速 Disk I/O。
# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
# echo "noop" > /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler
[noop] deadline cfq


但是,上述方式只是調整 CentOS 運作中的 I/O Scheduler,倘若 CentOS 主機重新啟動時又會恢復預設值。因此,請修改「/etc/default/grub」設定檔在 GRUB_CMDLINE_LINUX 結尾加上「elevator=noop」,並且重新產生 grub.cfg 檔案後,便能避免 CentOS 主機重新啟動時恢復為 cfq 預設值,調整完成後請重新啟動 CentOS 主機。
# grep noop /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet elevator=noop"


接著,執行重建 grub.cfg 檔案的動作,值得注意的是採用 BIOS 或 UEFI 在檔案的重建路徑上會有所不同。
  • BIOS-Based: grub2-mkconfig -o /boot/grub2/grub.cfg
  • UEFI-Based: grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-005705789ca240cabc6c4c6e307e549e
Found initrd image: /boot/initramfs-0-rescue-005705789ca240cabc6c4c6e307e549e.img
done




超過 7 vCPU 或 30 GB vRAM 時應關閉 NUMA

由於本文的運作環境為 Windows Server 2016 Hyper-V 虛擬化平台,根據官方最佳作法 Best Practices for running Linux on Hyper-V | Microsoft Docs 以及 How to disable NUMA in Red Hat Enterprise Linux system? - Red Hat Customer Portal 文件內容可知。

當 Hyper-V 虛擬化平台中的 CentOS 虛擬主機,配置的虛擬硬體超過 7 vCPU 或 30GB vRAM 時,建議加上 numa=off 關閉 NUMA 機制以便最佳化系統運作。因此,請修改「/etc/default/grub」設定檔在 GRUB_CMDLINE_LINUX 結尾加上「numa=off」,並且重新產生 grub.cfg 檔案後重新啟動 CentOS 主機。
# grep numa /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet elevator=noop numa=off"


接著,執行重建 grub.cfg 檔案的動作,值得注意的是採用 BIOS 或 UEFI 在檔案的重建路徑上會有所不同。
  • BIOS-Based: grub2-mkconfig -o /boot/grub2/grub.cfg
  • UEFI-Based: grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-005705789ca240cabc6c4c6e307e549e
Found initrd image: /boot/initramfs-0-rescue-005705789ca240cabc6c4c6e307e549e.img
done




CentOS 7.4 基礎設定系列文章: