Linux kernel 用于自优化硬盘驱动器的Linux内核模块:建议?

Linux kernel 用于自优化硬盘驱动器的Linux内核模块:建议?,linux-kernel,Linux Kernel,我是一名计算机工程专业的学生,学习Linux内核开发。我的四人团队负责提出一个内核开发项目(将在6周内实施),我们提出了一个暂定的“自优化硬盘Linux内核模块”。我不确定这个头衔对职业选手来说是否有意义 我们是根据这一点提出建议的 该项目的目标是最大限度地减少硬盘访问时间。计划是创建一个特殊的分区,在其中放置“最常用”的文件。LKM将分析、规划I/O操作并将其重定向到硬盘。此LKM应主要能够以最小的开销预测和重定向所有文件访问(大小

我是一名计算机工程专业的学生,学习Linux内核开发。我的四人团队负责提出一个内核开发项目(将在6周内实施),我们提出了一个暂定的“自优化硬盘Linux内核模块”。我不确定这个头衔对职业选手来说是否有意义

我们是根据这一点提出建议的

该项目的目标是最大限度地减少硬盘访问时间。计划是创建一个特殊的分区,在其中放置“最常用”的文件。LKM将分析、规划I/O操作并将其重定向到硬盘。此LKM应主要能够以最小的开销预测和重定向所有文件访问(大小<10 MB的文件),并减少对硬盘的平均读/写访问时间。我相信苹果的HFS有这个功能

有人能提出一个起点吗?我最近发现了一种通过拦截系统调用(所有读/写调用)重定向I/O操作的方法。然而,我不认为这是最好的方式。有没有一种方法可以编写重定向这些读/写操作的驱动程序?我们可以利用读/写缓存来达到同样的效果吗


任何反馈都是值得赞赏的。

此类优化有很多有用的方法:

  • 访问文件
    A
    意味着即将访问文件
    B
    。示例:通过媒体播放器打开媒体文件的图标文件
  • 访问某个文件组
    G
    中的任何文件意味着该组中的其他文件将很快被访问。示例:
    mysql
    接收一个
    use-somedb
    命令,该命令意味着将访问所有文件表、索引等
  • 停止读取顺序文件的程序表明该程序已暂停或退出,因此应放弃对与该文件相关的未来访问的预测
  • 将一些经常引用的文件的多个副本(但透明)战略性地散布在周围,可以使用离磁头最近的副本。示例:未缓存的目录或经常访问的小设置文件
有这么多的可能性,我认为一个有效的解决方案中至少有50%是一个合理的、有限的规范,说明您将尝试实现哪些功能,以及您将不实现哪些功能。研究微软Vista的激进的文件缓存机制可能很有价值


现代Linux发行版可能会遇到的另一个问题是,系统已经完成了您计划改进的大部分工作。事实上,衡量改进可能是一个巨大的挑战。我建议编写一个基准测试程序,打开并读取一系列文件,并精确计算完整序列的时间。在启用和禁用改进的情况下运行几次。但在这段时间内,您必须重新启动,以获得有效的时间安排……

您可能需要查看Unionfs。您甚至不需要LKM—只需要一个用户空间守护进程,它将订阅inotify事件、保存统计信息并在分区之间迁移文件。Unionfs将把两个分区合并到一个逻辑文件系统中。

谢谢您的反馈。我同意,尤其是Linux已经有了类似的机制。然而,这一部分并不像学习经历那样重要。哦,如果你知道一些关于重定向磁盘读写的事情,请发帖子。由于开销的原因,我不认为劫持系统调用是最佳的,而且我也找不到更好的方法。@rb3:我唯一想到的是一个用户空间文件系统驱动程序。看看是否有人感兴趣,我正在记录我的一些研究,并在这篇新文章中提问。欢迎在那里发帖…谢谢。我设置了这个新的。是关于工会的。我需要一些帮助来修改它的一些代码。如果有人能提供建议,我将不胜感激。是的,我已经研究代码一段时间了。工会基金和AUF看起来可以胜任这项工作。然而,他们的最新版本似乎没有能力删除所有分支中的所有文件,而不仅仅是删掉它们。当写入时,我还需要更新两个分支中的文件,而不仅仅是顶部分支中的文件。六羟甲基三聚氰胺六甲醚。。。