
在不知道 ionice 功能如何运作的情况下,我想知道 ionice 是否可以更智能地批处理磁盘 I/O 操作,以实现更高效的物理移动(特别是旋转磁盘)。
我在 cron 作业中运行了很多内容索引(grep、tee)和传输(rsync)操作,因此想知道我是否可以立即降低它们的破坏性。
答案1
如果您有一个物理磁盘,则磁盘会以相同的速度不断旋转。ionice 可能会为一个进程提供磁盘访问优先级,但随机读写的数量取决于您正在执行的特定操作。HDD 的磨损大部分是恒定的,在其活动期间您做什么并不重要。要让 HDD 持续很多年,您只需减少使用它。SSD 会因写入周期而磨损。HDD 并不介意您从中写入或读取多少次,它们会一直旋转,直到因跌落、过压或其他外部冲击而损坏。您的磁盘不太可能因为盘片和驱动器磁头移动太多而散架而停止工作。
ionice 有可能减少磁盘的磨损。但影响非常小。磁盘磨损的最大改善是它使读写操作完成得更快,因此您的磁盘活动时间更短。无论哪种方式,都无需担心 HDD 活动,只需照顾好您的 HDD,不要将其掉落或弄湿即可。
答案2
任何先进的操作系统都会按照其认为的最佳顺序重新排序待处理的磁盘写入,其中可能包括磁盘顺序和其他参数。这是磁盘缓存和磁盘调度程序的功能之一。
任何此类操作系统都会将写入的数据保留在缓存中,并仅根据其 I/O 调度参数将其写出。写入将按最佳顺序发出,而不仅仅是按写入时间顺序发出。
不建议更改操作系统的任何磁盘调度参数。操作系统算法肯定比你能发明的任何东西都要好,这是过去几十年操作系统研究的成果。
我想说的是,从硬件和文件系统的角度来看,磁盘写入已经尽可能地优化:相信你的操作系统。
请注意,许多磁盘都有自己的板载磁盘缓存,并且会使用可能未传达给操作系统的参数进一步优化写入。
ionice
不会产生任何明显的区别,只是会使您的数据的优先级低于其他正在运行的作业。操作系统调度程序将在其他程序的缓存操作之后处理您对缓存的写入操作。一旦数据进入内存缓存,ionice 就不再起作用,并且您写入磁盘的数据将与其他任何数据一样得到处理。