好的,这是接下来的问题关联。当我在 t 上创建 tmpfs 文件系统并分配 100MB 的空间时,为什么我在 slabtop 或 /proc/slabinfo 中看不到它。我想可能是因为它会被 malloc-2048 等以小块的形式分配,但我没有看到任何证据。
接下来我尝试查看它是否是内核线程,但使用以下命令也无济于事:
ps -eF --sort vsize
那么,tmpfs 使用什么样的 slab 缓存?
最好检查一下以下内容:
Active / Total Objects (% used) : 25717 / 34292 (75.0%)
Active / Total Slabs (% used) : 1497 / 1497 (100.0%)
Active / Total Caches (% used) : 94 / 140 (67.1%)
Active / Total Size (% used) : 4825.17K / 5860.13K (82.3%)
Minimum / Average / Maximum Object : 0.01K / 0.17K / 128.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
6728 2476 36% 0.13K 232 29 928K dentry_cache
3240 3223 99% 0.05K 45 72 180K buffer_head
3024 2949 97% 0.04K 36 84 144K sysfs_dir_cache
2162 2137 98% 0.08K 47 46 188K vm_area_struct
[root@krite ~]# free -m
total used free shared buffers cached
Mem: 249 187 62 0 2 153
-/+ buffers/cache: 31 218
Swap: 3074 0 3074
那么问题是,这些记忆从何而来?
另外,也许这是一个单独的问题,但是如何查看 free/top/vmstat 报告的缓存/缓冲区的细分情况?这三个程序都使用来自 procps 的相同库。有没有办法查看缓冲/缓存的内存连接到哪些磁盘/io 操作(即哪个磁盘)?
答案1
Tempfs 根据需要使用交换空间。在您向其中放入某些内容之前,它可能只分配了挂载结构。