我正在尝试为 Linux 内核 arp 缓存超时配置合理的值,但我找不到有关它们如何在任何地方工作的详细说明。即使 kernel.org 文档也没有给出很好的解释,我只能找到推荐值来缓解溢出。
这是我拥有的价值观的一个例子:
net.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh3 = 1024
Run Code Online (Sandbox Code Playgroud)
现在,从我迄今为止收集到的:
gc_thresh1 是垃圾收集器开始删除任何条目之前允许的 arp 条目数。
gc_thresh2 是软限制,它是垃圾收集器主动删除 arp 条目之前允许的条目数。
gc_thresh3 是硬限制,高于此数字的条目将被积极删除。
现在,如果我理解正确的话,如果 arp 条目的数量超过 gc_thresh1 但仍低于 gc_thresh2,则超出部分将定期删除,间隔由 gc_interval 设置。
我的问题是,如果条目数超过 gc_thresh2 但低于 gc_thresh3,或者如果数量超过 gc_thresh3,如何删除条目?换句话说,“积极地”和“积极地”删除到底是什么意思?我认为这意味着它们比 gc_interval 中定义的更频繁地被删除,但我找不到多少。
小智 2
每次对条目进行强制垃圾收集时,last_flush
邻居表中的字段都会更新neigh_table
。
如果满足以下条件之一,则会发生条目的强制垃圾回收:
gc_thresh3
gc_thresh2
,且时间last_flush
大于或等于5 HZ
当请求对条目进行强制垃圾收集时,满足以下两个条件的条目将被丢弃:
定期工作,neigh_periodic_work
如果条目总数大于 ,则尝试释放未引用的条目gc_thresh1
。
来源: Linux 内核源代码,neighbour.c
归档时间: |
|
查看次数: |
4909 次 |
最近记录: |