随笔 - 121  文章 - 1  评论 - 8  阅读 - 20万

nf_conntrack_buckets

conntrack_max 推荐默认值

CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32)

4是hash表里的链表最大长度, 推荐 4 或者 8
HASHSIZE = CONNTRACK_MAX / 4

32位系统 虚拟内存1G, 能用的有896M
64位系统 256T, 能用一半

ARCH: 为CPU架构, 32 或 64。

  • 32位 256M内存:
    CONNTRACK_MAX = (25610241024)/16384/(32/32) = 16384
    HASHSIZE = 16384/4 = 4096

  • 64位 8G内存:
    CONNTRACK_MAX = (810241024*1024)/16384/(64/32) = 262144
    HASHSIZE = 262144/4 = 65536

conntrack 占用内存计算

size_of_mem_used_by_conntrack(in bytes) = CONNTRACK_MAX * sizeof(struct ip_conntrack) + HASHSIZE * sizeof(struct list_head)

sizeof(struct ip_conntrack): 352B
sizeof(struct list_head) = 2 * size_of_a_pointer: 32bit 4B, 64bit 8B

  • 32位系统 buckets:4096, max:16384
    16384 * 352 + 4096 * 4 = 5MB

  • 32位系统 buckets:1024, max:4096
    4096 * 352 + 1024 * 4 = 1.37MB

  • 64位系统 buckets: 262144, max: 1048576
    1048576 * 352 + 262144 * 8 = 371195904(354 MB)

posted on   listenerln  阅读(92)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-06-28 openwrt 一个接口多IP, 多协议配置 (alias)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示