手把手教你怎么将linux的一个函数性能搞奔溃

Posted 安庆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你怎么将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函数,当传入某些参数的,并没有保护。?

 

以上是关于手把手教你怎么将linux的一个函数性能搞奔溃的主要内容,如果未能解决你的问题,请参考以下文章

Linux环境搭建 | 手把手教你安装Linux虚拟机

手把手教你写嵌入式Linux中的Makefile

手把手教你写Linux设备驱动---定时器(基于友善之臂4412开发板)

手把手教你读Vue2源码-2

Linux机器添加硬盘后的使用方式,手把手教你具体操作步骤

手把手教你在Linux下搭建Jenkins实现自动部署