Ben*_*cks 5 linux storage documentation
有人可以指出我对 Linux I/O 系统的相当完整的参考,主要是如何处理和刷新所有缓冲区和缓存?
到目前为止,我的理解是有
显然,这是一个相当混乱的帐户,但希望它显示了我正在寻找的信息类型。我发现 Linux 内部文档非常稀少;也许有一本好书涵盖了所有这些?讨论缓冲区复制与传输的位置也很好。
哇。显然,您需要非常特殊的零件来解决特定问题。否则你不会意识到你刚刚签署了你生命中的下一周的研究。了解您的主题的所有内核内部结构将是一件痛苦的事情,因此您需要做的就是:提出一个简单的问题并开始跟踪。考虑到一个简单、明确的问题需要关注,Linux 内核邮件列表上有许多开发人员,他们是解释为什么内部行为在您的情况下会如此运行的专家。这可能需要几个回合,但他们可以提供帮助。
对于具有单一目的的问题,您可以使用的另一种方法是跟踪内核中的可疑活动并了解它所涉及的各个部分,而不是仅仅尝试理解全部内容。幸运的是,有一个名为ftraceSystemTap ( stap) 的命令可以让您开始冒险。许多内核开发人员希望更多的人提出有关他们的内核的重要问题,这些工具将帮助他们做到这一点。Linux Weekly News 最近发表了几篇文章ftrace:跟踪:不乏选项(2008 年 7 月)、看看 ftrace(2009 年 3 月)、使用 ftrace 调试内核 -第 1 部分(2009 年 12 月)和第 2 部分(2009 年 12 月)、Ftrace 函数的秘密(2010 年 1 月),最后是内核附带的旧文档(2008 年)。
通过使用跟踪实用程序,您可以了解内核如何进行缓冲以及内核、硬件(控制器、芯片组、CPU、磁盘技术)、文件系统、IO 调度程序所特有的许多其他内容。每个发行版在这方面都不同。如果您有复杂的存储设备(集群 FS、带有企业阵列的 SAN、SSD),那么也要准备好亲自了解它们的怪癖。关于集群文件系统的警告:它们经常涉及用户空间组件,这可能会导致许多意外的延迟,我们大多数人将其归因于内核,但比这复杂得多。
到目前为止,我能找到的最好的文本是 Neil Brown 在 2009 年写的,题为“ Linux 内核设计模式”。尼尔谈到了你提到的很多话题等等。
我确信的一件事是,这种情况正在不断变化,尤其是在调度领域。只需尝试了解您所在的特定角落正在发生的事情,并庆幸您不必为这些组件之一编写代码。