我是一名研究Linux内核开发的计算机工程专业的学生。我的4人团队的任务是提出一个内核开发项目(将在6周内实施),我们想出了一个暂定的“自我优化硬盘驱动器Linux内核模块”。我不确定这个标题对专业人士是否有意义。
我们根据此project提出了提案。
该项目的目标是最大限度地减少硬盘访问时间。计划是创建一个特殊的分区,其中放置“最常用”的文件。 LKM将对I / O操作进行配置,分析,计划和重定向到硬盘。此LKM应主要能够以最小的开销预测和重定向所有文件访问(在大小<10 MB的文件上),并减少对硬盘的平均读/写访问时间。我相信Apple的HFS有这个功能。
有人可以提出一个起点吗?我最近找到了一种通过拦截系统调用来重定向I / O操作的方法(通过hijacking所有读/写操作)。但是,我不相信这是最好的方式。有没有办法编写重定向这些读/写操作的驱动程序?我们可以利用读/写缓存来达到同样的效果吗?
任何反馈都表示赞赏。
答案 0 :(得分:2)
您可能想看看Unionfs。您甚至不需要LKM - 只需要一些用户空间守护程序,它可以订阅inotify事件,保留统计信息并在分区之间迁移文件。 Unionfs将两个分区合并为一个逻辑文件系统。
答案 1 :(得分:1)
这种优化有许多方法可能有用:
A
意味着文件B
即将访问。示例:媒体播放器打开媒体文件的图标文件G
文件中的任何文件意味着很快就会访问该组中的其他文件。示例:mysql
收到use somedb
命令,表示将访问所有文件表,索引等。我认为有这么多的可能性,至少50%的有效解决方案对于您将尝试实现的功能以及您不会实现的功能是一个明智的,有限的规范。研究微软Vista的攻击性文件缓存机制disappointed。
可能很有价值现代Linux发行版可能遇到的另一个问题是系统已经完成了您计划改进的大部分内容。事实上,衡量改进可能是一个巨大的挑战。我建议编写一个基准程序,打开并读取一系列文件并精确计算完整序列。在启用和禁用改进的情况下多次运行它。但是你必须在两者之间重新启动以获得有效的时间....