如何减少 radix_tree_node 的缓存大小?

如何减少 radix_tree_node 的缓存大小?

radix_tree_node是否可以在不减少总体缓存大小的情况下减少 Linux 中用于缓存的空间?

例如,我目前有

$ sudo slabtop -sc --once | awk '{ if (0 + $1  > 0) { printf "%20s: % 6d MB, active %3.0f%%\n", $8, $7 / 1024, (100*$2/$1); } }'
    ext4_inode_cache:  10387 MB, active 100%
              dentry:   2042 MB, active 100%
     radix_tree_node:    263 MB, active  90%
         buffer_head:    117 MB, active 100%
      kmalloc-rcl-64:     92 MB, active 100%
      kmalloc-rcl-96:     79 MB, active 100%
   dmaengine-unmap-2:     43 MB, active 100%
      vm_area_struct:     18 MB, active  99%
         task_struct:     13 MB, active  98%
  ext4_extent_status:     12 MB, active 100%
   ext4_groupinfo_4k:     10 MB, active 100%
         inode_cache:     10 MB, active  90%
          kmalloc-4k:      7 MB, active  99%
     kmalloc-rcl-128:      7 MB, active 100%
   kernfs_node_cache:      5 MB, active 100%
    proc_inode_cache:      5 MB, active  99%

所以所有其他缓存都有至少98% 活跃,但radix_tree_node只有 90% 活跃。该系统并没有浪费大量内存,但如果radix_tree_node减小大小以消除非活动缓存,似乎整体缓存使用率将会提高。如果我只是跑步slabtop -scUSE 0%radix_tree_node我认为这只是不正确的会计。

例如,似乎我可能需要减少,/proc/sys/vm/vfs_cache_pressure因为dentry缓存只有 20%,而ext4_inode_cache两者都具有 100% 活动状态。对于我的工作负载,系统需要统计大量目录条目。

答案1

经过试验后,我想说您应该运行 Linux 内核版本 5.4 或更高版本,然后/proc/sys/vm/vfs_cache_pressure根据需要进行调整。我会尝试使用尽可能小的值,但仍然不会导致系统速度变慢。根据我的经验,vfs_cache_pressure1-10 范围内的值适用于内核版本 5.3,但内核版本 5.4 需要接近 100 的值才能获得类似的行为。

较低的值vfs_cache_pressure有利于将更多的目录元数据保存在 RAM 中,这样当进程访问文件时,存储介质只需要获取文件的实际内容。这对于随机访问速度较慢的 HDD 尤其重要。对于存储介质而言,获取深层目录层次结构的元数据似乎是随机数据访问,因为系统需要读取多个级别的目录,并且每个目录位于实际存储介质上的不同区域。

但是,如果减少vfs_cache_pressure太多,系统可能会开始交换而不是从缓存中删除目录元数据,这显然也会导致性能不佳。我认为这是内核版本 5.3 和 5.4 之间最重要的区别。在 5.3 版本中,您可以vfs_cache_pressure一直设置为1,系统不会开始交换以保留dentries在 RAM 中。对于内核版本 5.4 的系统,如果您了解以下内容,那么交换会更加愉快100

我想我需要尝试对/proc/sys/vm/vfs_cache_pressure和的不同组合进行基准测试/proc/sys/vm/swappiness。我目前的运行速度 vfs_cache_pressure为 120 和swappiness80,当后台进程检查系统中的大量目录(例如,备份脚本检查系统中的新文件)时,有时会遇到速度变慢的情况。在我看来,目前系统使用 RAM 进行缓存的方式dentries有点过于激进,当在请求得到服务之前需要通过删除一些其他缓存来释放 RAM 时,请求更多内存的程序会变慢。

相关内容