我目前正在开发具有高磁盘 I/O 需求的基于 Linux 的服务器,并且我正在寻找高级策略来微调系统以获得最佳性能。虽然我已经实现了基本的优化,但我正在寻求更深入、更专业的技术的见解。
具体来说,我想知道:
有哪些高级内核级配置和调整参数可以显着提高 Linux 上的磁盘 I/O 性能?如何利用 I/O 调度程序、文件系统调整和块设备设置等功能?
是否有在高 I/O 环境中表现出色的专用文件系统或存储解决方案?选择或配置它们时应考虑哪些因素?
如何有效监控和分析磁盘 I/O 性能以识别瓶颈或需要改进的地方?是否有特定的工具或实用程序可以深入了解 I/O 操作?
可以实施哪些高级缓存和缓冲策略来减少磁盘 I/O 延迟并提高吞吐量,特别是对于频繁访问的数据?
是否有任何最佳实践可以优化 I/O 密集型应用程序或工作负载(例如数据库或高吞吐量 Web 服务器)以充分利用可用磁盘资源?
答案1
在红帽中,有tuned
.从 RHEL 7.9 a 开始tuned-adm list
显示
Available profiles:
- atomic-guest - Optimize virtual guests based on the Atomic variant
- atomic-host - Optimize bare metal systems running the Atomic variant
- balanced - General non-specialized tuned profile
- cpu-partitioning - Optimize for CPU partitioning
- default - Legacy default tuned profile
- desktop - Optimize for the desktop use-case
- desktop-powersave - Optmize for the desktop use-case with power saving
- enterprise-storage - Legacy profile for RHEL6, for RHEL7, please use throughput-performance profile
- hpc-compute - Optimize for HPC compute workloads
- laptop-ac-powersave - Optimize for laptop with power savings
- laptop-battery-powersave - Optimize laptop profile with more aggressive power saving
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- mssql - Optimize for MS SQL Server
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- oracle - Optimize for Oracle RDBMS
- powersave - Optimize for low power consumption
- server-powersave - Optimize for server power savings
- spindown-disk - Optimize for power saving by spinning-down rotational disks
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
我会研究tuned
他们为个人资料所做的事情,例如enterprise storage
与任何其他看起来相关的个人资料。你不会希望配置spindown-disk
文件发生这样的事情......我想......或任何类型的节能东西。
除非您的 I/O 发生超出了系统的 RAM 容量,768GB 是 4 插槽高端服务器的标准,大约 128GB 不太昂贵的工作站,否则最佳方法是创建一个tmpfs
安装为/data
文件夹这样您就可以直接从 [DDR4 或 DDR5] RAM 读取/写入,然后相应地管理该易失性数据位置。将是做/etc/fstab
类似的事情tmpfs /data tmpfs defaults,size=512G 0 0
。我不会这么称呼它先进的缓冲策略,但是以 6 Gbit/s 或 12 Gbit/s 的 SATA/SAS 速度专门使用 RAM 而不是磁盘,速度会快几个数量级,而且我认为您不必这样做调linux 除了简单地执行适当的电源配置文件之外,例如延迟性能代替节能。
我还认为,您所问的很多问题都可以通过选择最佳硬件来运行来得到更多答案调音linux。 Linux 操作系统本质上将磁盘缓存并完全执行我上面提到的操作,tmpfs
因为它会在必须写入/刷新到实际磁盘之前尽可能在 RAM 中运行。简而言之,如果您想要更好的性能,请增加 RAM - 如果您的 PC 上仅运行 8 或 16GB,则将其更新到 64GB 或更高;同样,对于服务器,如果小于 128GB,则将其最大设置为 768GB 或更高,并支持最快的 RAM DIMM 时序。