首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少radix_tree_node的缓存大小?

如何减少radix_tree_node的缓存大小?
EN

Unix & Linux用户
提问于 2020-05-31 17:19:54
回答 1查看 1.4K关注 0票数 1

是否有可能在不减少整个缓存大小的情况下减少用于Linux中radix_tree_node缓存的空间?

例如,我目前

代码语言:javascript
复制
$ 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 -sc,就会得到radix_tree_nodeUSE 0%,但我认为这只是不正确的会计。

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

EN

回答 1

Unix & Linux用户

发布于 2022-08-16 07:44:48

在对此进行了实验之后,我想说,您应该运行LinuxVersion5.4或更高版本,然后根据需要调整/proc/sys/vm/vfs_cache_pressure。我会尝试使用尽可能小的价值,这仍然不会导致系统的减速。在我的经验中,范围为1-10的vfs_cache_pressure值对于内核版本5.3很好,但是内核版本5.4需要接近100的值才能得到类似的行为。

vfs_cache_pressure的低值将有利于在内存中保留更多的目录元数据,这样当处理访问文件时,存储介质只需要获取文件的实际内容。这是特别重要的HDD,因为它是缓慢的随机访问。对于存储介质,获取深层目录层次结构的元数据似乎是随机的数据访问,因为系统需要在多个级别上读取目录,而每个目录位于不同的目录中,都位于实际的存储介质上。

但是,如果您减少了太多的vfs_cache_pressure,系统可能会开始交换,而不是从缓存中删除目录元数据,这显然也会导致性能低下。

我想我需要尝试对/proc/sys/vm/vfs_cache_pressure/proc/sys/vm/swappiness的不同组合进行基准测试。我目前运行的vfs_cache_pressure为120,swappiness运行为80,当后台进程检查系统中的许多目录(备份脚本检查系统中的新文件)时,有时会遇到减速。在我看来,系统对RAM的使用有点过于激进,当RAM需要释放时,请求更多内存的程序就会慢下来,因为在请求得到服务之前,需要丢弃一些缓存。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/590141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档