微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

监控Linux中的文件访问

有没有办法收集有关磁盘上访问的块的统计信息?

我有一个场景,一个任务是内存和I / O密集型,我需要找到一个很好的平衡,我可以分配给流程多少可用的RAM以及我应该留给系统构建它的I / O缓存用于正在使用的块设备.

我怀疑当前正在发生的大多数I / O是访问相当小的文件子集(或大文件的一部分),并且可以通过增加可用于I / O缓冲的RAM来优化性能.

理想情况下,我可以创建类似“热图”的东西,向我显示大多数时间访问文件的哪些部分.

安装程序目前基于AWS / EC2 m1.large实例上的CentOS 5.磁盘设置可以是RAID0设置(LVM)中的短暂块设备,也可以是单个(500GB)EBS

更新:最初,这个问题是讨论磁盘块,这是误导,因为我实际上对正在访问的逻辑块感兴趣,我不关心它们在物理设备上的位置.我改变了这一点,以明确它是我感兴趣的文件的一部分.我为这种混乱道歉.

解决方法

我不确定你是否完全理解 how modern buffer caches work – 你大约有一半是因为你想要限制你的进程使用多少RAM(所以缓冲区缓存有足够的“可用”,但是你正在考虑它错误道.

您要求的内容对调整缓冲区缓存并不是很有用 – 如果您有一个连续的磁盘(或一个呈现为一个并且表现为一个的阵列)并且正在考虑优化磁盘布局,那么它可能很有用,但这已经进入Deep Filesystem Magic.
您可以阅读McKusick关于文件系统设计的论文(or spend 42 minutes and watch this great video),以获得文件系统如何为您优化文件系统的基本概念 – 文件系统非常擅长将on-disklayout设置为正确.

在缓冲区高速缓存优化方面,您需要查看缓存命中数与缓存未命中数(特别是导致未命中的原因).磁盘上的物理位置并不重要 – 重要的是你需要多少次才能获得你想要的磁盘,以及你的缓存是否足够大以至于不会一直搅动(基本上否定了缓存效率).

调整比其他任何东西都更加试错 – 一个非常低效的经验法则是将缓冲区缓存的最大文件/数据块的大小减去2倍,但是你几乎总是更好的开始非常倾向于应用程序或缓存,并调整到最佳性能.

原文地址:https://www.jb51.cc/linux/396137.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐