相关疑难解决方法(0)

clone()/ fork()/进程创建在某些机器上很慢

在我的一些机器上创建新进程非常慢,而在其他机器上则不然.

这些机器都很相似,有些慢速机器在同一硬件和内核(2.6.32-26,Ubuntu 10.04)上运行与一些快速机器完全相同的工作负载.不涉及创建流程的任务在所有计算机上的速度相同.

例如,该程序在受影响的计算机上执行速度慢约50倍:

int main()
{
    int i;
    for (i=0;i<10000;i++)
    {
        int p = fork();
        if (!p) exit(0);
        waitpid(p);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

什么可能导致任务创建速度慢得多,以及我可以在机器中寻找其他差异?

Edit1:运行bash脚本(因为它们产生了很多子进程)在这些机器上运行速度也非常慢,并且对慢速脚本的分析显示了clone()内核调用的减速.

Edit2:vmstat在快速与慢速机器上没有显示任何显着差异.它们都有足够的RAM用于工作负载,而不是交换.

编辑3:我没有看到任何可疑的内容 dmesg

编辑4:我不知道为什么现在这是在stackoverflow上,我不是在问上面的示例程序(只是用它来演示问题),而是linux管理/调优,但如果人们认为它属于这里,很酷.

linux ubuntu performance kernel

9
推荐指数
1
解决办法
3416
查看次数

bash中`<(...)`'运算符'的名称是什么?

我熟悉为bash中的命令输入创建"临时文件",例如

cat file_1 <(echo hello) file_2
Run Code Online (Sandbox Code Playgroud)

我想更多地了解这个主题,但我不知道<( )运营商的名字.我怀疑这是一种IO重定向.

这个符号/运算符有名字吗?

bash io-redirection

3
推荐指数
1
解决办法
207
查看次数

标签 统计

bash ×1

io-redirection ×1

kernel ×1

linux ×1

performance ×1

ubuntu ×1