Linux性能学习(3.3):IO_如何优化IO性能

文章目录

  • 1 应用程序优化
  • 2 文件系统优化
  • 3 磁盘优化

参考资料:
1. Linux性能优化之磁盘优化(三)

1 应用程序优化

应用程序的优化,核心就是尽可能利用缓存I/O来优化性能。

比如使用外部缓存系统类似Redis来构建自己的缓存系统;

使用fopen/fread等库函数来替代open/read等系统调用,因为库函数会有自己的缓存;

读写文件时,不要使用DirectI/O(O_DIRECT);

写文件时,不使用同步I/O(O_SYNC),等写完毕,显性调用fsync() /sync()进行同步;

将频繁访问的文件或数据放到内存中,减少对磁盘的读写。

上面的方式,要根据自己的实际场景进行取舍,比如是否使用同步I/O,使用同步I/O可以将内核缓冲区的数据输出到文件中,可以保证数据的完整性以及数据安全,但是另一方面也会降低系统的性能。

2 文件系统优化

优化文件系统的配置选项,如挂载时指定同步或异步写入async/sync、禁用atime等选项;

优化文件系统的缓存,优化脏页的刷新频率和限额、调整vfs_cache_pressure值 来优化内核回收目录项缓存和索引节点缓存的倾向。

3 磁盘优化

针对磁盘和应用程序I/O特性,选择不同的I/O调度算法;
在顺序读比较多的场景,增大磁盘的预读数据,可以调整内核选项 /sys/block/sdb/queue/read_ahead_kb或使用blockdev 工具进行设置;
优化内核块设备I/O的选项,调整磁盘队列的长度,提升磁盘的吞吐量。

你可能感兴趣的:(linux,linux,学习,性能优化,嵌入式,IO)