性能之颠-应用程序性能技术
5.2 应用程序性能技术
本节讨论了一些提高应用程序性能的常用技术:选择I/O 大小、缓存、缓冲区、轮询、并发和并行、非阻塞I/O 和处理器绑定。参考应用程序文档看看这些技术哪些在应用,看看有没有应用程序其他的独有特性。
5.2.1 选择I/O 尺寸
执行I/O 的开销包括初始化缓冲区、系统调用、上下文切换、分配内核元数据、检查进程权限和限制、映射地址到设备、执行内核和驱动代码来执行I/O,以及,在最后释放元数据和缓冲区。“初始化开销”对于小型和大型的I/O 都是差不多的。从效率上来说,每次I/O 传输的数据越多,效率越高。
增加I/O 尺寸是应用程序提高吞吐量的常用策略。考虑到每次I/O 的固定开销,一次I/O 传输128KB 要比128 次传输1KB 高效得多。尤其是磁盘I/O,由于寻道时间,每次I/O 开销都较高。
如果应用程序不需要,更大的I/O 尺寸也会带来负面效应。一个执行8KB 随机读取的数据库按128KB I/O 的尺寸运行会慢得多,因为120KB 的数据传输能力被浪费了。选择小一些的I/O尺寸,更贴近应用程序所需,能降低引起的I/O 延时。不必要的大尺寸I/O 还会浪费缓存的空间。
5.2.2 缓存
操作系统用缓存提高文件系统的读性能和内存的分配性能,应用程序使用缓存也出于类似的原因。将经常执行的操作的结果保存在本地缓存中以备后用,而非总是执行开销较高的操作。数据库缓冲区高速缓存就是一例,该缓存会保存经常执行的数据库查询结果。
部署应用程序时,一个常见的操作就是决定用什么样的缓存,或能启用什么样的缓存,然后配置适合系统的缓存尺寸。
缓存一个重要的方面就是如何保证完整性,确保查询不会返回过期的数据。这称为缓存一致性(cache coherency),而且执行的代价不低——理想
文章来源: blog.csdn.net,作者:隔壁老瓦,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/wxb880114/article/details/114356204
- 点赞
- 收藏
- 关注作者
评论(0)