到目前为止,我的理解是有
>应用程序缓冲区(包括libc分配的fread / fwrite缓冲区)
>读取和写入 *** 作的VFS缓冲区
> mmaped页面(与VFS缓冲区相同?)
>特定于文件系统的缓冲区(与VFS缓冲区相同?文件系统至少提供一些策略,例如XFS对写缓存更积极)
>在转换为SCSI / ATA命令并传递给…之前,磁盘驱动程序可能有一些缓冲区.
>磁盘控制器可以具有易失性,电池备份或无缓存.刷新易失性缓存的机制是什么?障碍如何影响?
>磁盘本身可以有一些缓存,与控制器具有相同的刷新问题.
显然这是一个相当混乱的帐户,但希望它显示我正在寻找的那种信息.我发现linux内部文档相当稀疏;也许有一本好书涵盖了这一切?讨论缓冲区复制与传输的位置也很不错.
解决方法 哇.显然,你是在经历非常特殊的零件和零件来解决特定问题.或者你没有意识到你只是签下了你生命的下一周去研究.通过所有内核内容来获取主题将会很痛苦,所以这就是你需要做的事情:问一个简单的问题并开始跟踪.鉴于一个简单,无融合的问题需要关注,Linux Kernel Mailing List上有许多开发人员都在解释为什么内部行为与他们在你的情况下的行为方式有关.可能需要几轮,但他们可以提供帮助.在给出具有单一目的的问题的情况下,您可以使用的另一种方法是将可疑活动跟踪到内核中,并了解它所触及的各个部分,而不是仅仅尝试理解它.幸运的是,有一个名为ftrace甚至SystemTap(stap)的命令可以让你开始冒险.许多内核开发人员希望更多人提出有关其内核的重要问题,这些工具将帮助他们完成. linux Weekly News最近发表了几篇关于ftrace的文章:Tracing: no shortage of options(2008年7月),A Look at ftrace(2009年3月),使用ftrace调试内核 – Part 1(2009年12月)和Part 2(2009年12月),Secrets of the Ftrace function(2010年1月),最后是好老documentation that ships with the kernel(2008).
通过使用跟踪实用程序,您可以了解内核如何进行缓冲以及内核,硬件(控制器,芯片组,cpu,磁盘技术),文件系统,IO调度程序所特有的许多其他功能.在这方面,每个分布都不同.如果您有复杂的存储设备(群集FS,带有企业阵列的SAN,SSD),那么请准备好让您亲自了解他们的怪癖.关于集群文件系统的一个警告:它们经常涉及一个用户空间组件,它可能导致我们大多数人归因于内核的大量意外延迟,但要复杂得多.
到目前为止,迄今为止我能找到的最好的文字是由Neil brown在2009年撰写的题为“Linux kernel design patterns”的文章.尼尔打了你提出的很多话题,还有更多.
我确切知道的一件事是,这种情况在不断变化,特别是在调度领域.只是试着了解你特定角落里发生了什么,并计算你没有必要编码给其中一个组件的祝福.
总结以上是内存溢出为你收集整理的Linux I / O缓冲参考全部内容,希望文章能够帮你解决Linux I / O缓冲参考所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)