# Disk

+ I/O scheduler
  + I/O 调度程序确定 I/O 操作何时在存储设备上运行以及持续多长时间，也称为 I/O 升降机。
  + 1.NOOP
  + 2.CFQ
  + 3.DEADLINE
+ Mount Parameters
  + 默认的方式下 linux 会把文件访问的时间 atime 做记录，文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳，比如：文件创建时间、最近一次修改时间和最近一次访问时间；这在绝大部分的场合都是没有必要的。 
  + 可以尝试使用 noatime 和 nodiratime 禁止记录最近一次访问时间戳。
-------------------------------------------------------------
Disk
- I/O scheduler
  - 定义：
Linux 内核 I/O 调度程序的工作是以合理和优化的方式将数据传递到底层存储设备。 根据 I/O 调度程序的策略，TiDB 数据库实例的性能可能会有所不同。 当然，如果您的系统负载较低，I/O 调度器不会有太大的不同。
但是，如果您面临 I/O 限制并且您的系统必须处理高负载，选择正确的 I/O 调度程序可能是至关重要的。 
通常，Linux 支持以下 I/O 调度程序：
NOOP：
NOOP 是所有 I/O 调度程序中最简单的。它只是将数据发送到 FIFO 队列，合并请求以保存在磁盘上查找并传递数据。
CFQ：
CFQ 是“完全公平调度程序”的缩写。 CFQ 的思想是给属于同一优先级的所有进程相同大小的时间片。执行顺序 I/O 的进程可能比执行随机 I/O 的进程获得更多的带宽（在数据库中随机 I/O 在 OLTP 工作负载期间经常发生）。
CFQ 是默认值，通常是桌面应用程序的首选，它应该保持响应。对于数据库服务器来说，这不一定是最优配置。
DEADLINE：
DEADLINE 调度程序试图确保没有进程会遭受饥饿。内核为每个 I/O 强加了一个 deadline （截止日期）。实际测试表明，使用 deadline 实际上总是比依赖默认值（= CFQ）快。但是，在许多情况下，它们没有区别。
  - I/O 调度程序确定 I/O 操作何时在存储设备上运行以及持续多长时间，也称为 I/O 升降机
  - 对于 SSD 设备，宜设置为 noop
- Mount Parameters
  - 默认的方式下 linux 会把文件访问的时间 atime 做记录，文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳，比如：文件创建时间、最近一次修改时间和最近一次访问时间；这在绝大部分的场合都是没有必要的。 
因为系统运行的时候要访问大量文件，如果能减少一些动作（比如减少时间戳的记录次数等）将会显著提高磁盘 IO 的效率、提升文件系统的性能。 
如果遇到机器 IO 负载高或是 CPU WAIT 高的情况，可以尝试使用 noatime 和 nodiratime 禁止记录最近一次访问时间戳。
  - 读取文件时 noatime 将禁用对元数据的更新
  - 读取目录时 nodiratime 会禁用对元数据的更新
