手把手教你怎么将linux的一个函数性能搞奔溃
static struct fib_table *fib_empty_table(struct net *net)
{
u32 id;
for (id = 1; id <= RT_TABLE_MAX; id++)
if (fib_get_table(net, id) == NULL)
return fib_new_table(net, id);
return NULL;
}
最近查一个问题,发现只要调用这个函数的时候,cpu飙升。
然后仔细推敲了一下这个函数,只要进入循环,则很耗性能。
问题的原因是:
ip rule add from 10.35.98.35 t 0 -------------------ip不限制,只是举例
这个命令传入的时候,没有限制tab,然后找一个新的tab,
找法就是上面的这个函数,假设这个tab占用很大会怎么样?cpu必然会出现100%,
不信你可以写个脚本试一下。
至于故障的来源,则是:
github.com/vishvananda/netlink 中的 ruleHandle函数,当传入某些参数的,并没有保护。?
相关推荐
farwang 2020-11-25
星愿心愿 2020-11-24
tianhuak 2020-11-24
zhjn0 2020-11-24
昭君出塞 2020-11-23
bluecarrot 2020-11-23
linuxwcj 2020-10-21
以梦为马不负韶华 2020-10-20
彼岸随笔 2020-10-20
yutou0 2020-10-17
applecarelte 2020-10-16
ourtimes 2020-10-16
waterhorse 2020-09-19
MRFENGG 2020-11-11
rainandtear 2020-10-30
kyssfanhui 2020-10-20
liuhangtiant 2020-10-20