当前位置:嗨网首页>书籍在线阅读

22-经济实用的操作提示

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.4.3 “经济实用”的操作提示

通过向内核传递良好的操作提示,很多普通应用的效率可以获得明显提升。这种提示信息对于减轻繁重的I/O负荷很有助益。由于磁盘速度(很慢)与现代处理器速度(很快)的不匹配,每个提示位的设置都很重要,良好的提示信息对应用大有帮助。

在读取文件的一个块的内容时,进程可以通过设置POSIX_FADV_WILLNEED ,告诉内核把文件预读到页缓存中。预读的I/O 操作将在后台异步进行。当应用最终要访问文件时,访问操作可以立即返回,不会有I/O阻塞。

相反地,在读写大量数据后(比如往磁盘写入连续的视频数据流),进程可以设置POSIX_FADV_DONTNEED,告诉内核丢弃页面缓存中指定文件块的内容。大量的流操作会连续填满页缓冲区。如果应用不想再次访问这些数据,则意味着页缓冲区中充斥了过量的数据,其代价是导致没有空间保存有用的数据。因此对于视频流这类应用,应该定期请求将数据从缓存中清除。

如果一个进程想要读取整个文件时,可以设置POSIX_FADV_SEQUENTIAL,告诉内核要大量预读。相反地,如果一个进程知道自己将随机访问文件,可以设置POSIX_FADV_RANDOM,告诉内核预读没有用,只会带来无谓的开销。