zoukankan      html  css  js  c++  java
  • 手把手教你怎么将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函数,当传入某些参数的,并没有保护。​

  • 相关阅读:
    Atcoder Grand Contest 003 题解
    Atcoder Grand Contest 002 题解
    Atcoder Grand Contest 001 题解
    网络流24题
    AGC005D ~K Perm Counting
    loj6089 小Y的背包计数问题
    CF932E Team Work
    组合数学相关
    SPOJ REPEATS
    [SDOI2008]Sandy的卡片
  • 原文地址:https://www.cnblogs.com/10087622blog/p/13236244.html
Copyright © 2011-2022 走看看