stu*_*uck 10 linux filesystems ext4
我有一个只有 128MB RAM 的小型嵌入式设备
连接到此设备的是一个 2TB USB2 硬盘
直到最近,当文件数量超过阈值时,我对设备的性能感到非常满意,磁盘容量超过了阈值(我不确定是哪个)
磁盘上有许多小文件,由于写入应用程序的性质,文件以非常平衡的方式组织- 没有叶节点目录有超过 200 个文件,而只有 800,000 个文件。
我希望得到一些调查的线索。磁盘性能显着下降,设备运行良好,然后突然性能像石头一样下降。
我的假设是我在磁盘上为我的文件选择的组织结构在某种程度上损害了 inode 缓存保持 zippy 的能力。
作为实验,我卸载了磁盘(刷新缓存,免费验证)。然后从命令提示符我深入到目录结构。总而言之,这个目录(及其子目录)下只有大约 3200 个文件,此时“空闲”显示 >117MB 的可用内存
在这一点上,我输入命令'find',然后是'free'
'find' 显示大约 3000 个文件,但内存使用量从 ~117MB 到 ~2MB
我了解缓存与可用内存之间的平衡,以及内核如何将空页面视为坏页面——但是,来自 3000 个文件的目录中的 115MB 缓存内容表明我的理解存在严重差距。我希望有人能帮助我了解发生了什么
我可以假设平衡树是拥有大量文件的方法吗?
很好的问题描述。
根据您所说的,我认为您所看到的是平板使用率很高。一个很好的实验将运行cat /proc/meminfo
并cat /proc/slabinfo
在3秒钟的延迟,而你深入到fs的层次结构,并发现3000个文件。本质上发生的是内核将遍历 fs 结构并扫描单个文件及其 inode,并且所有这些文件都存储在内存中。如果您检查,/proc/slabinfo
您将看到一个名为的对象ext4_inode_cache
,它告诉您每个 inode 将占用多少内存。将其与对象数量 (obj_size * no_obj) 相乘,您将获得该对象使用的内存量。您进入 fs 层次结构越深,将消耗更多内存,直到系统达到内存区域的高水位线。此时,内核将开始回收。
如果你进入 meminfo 和slabinfo,你会得到你正在寻找的细节。如果你想让我看,粘贴它;)
归档时间: |
|
查看次数: |
2981 次 |
最近记录: |