红帽linux限制传输文件大小,Linux每个进程的资源限制 - 深红帽之谜

我有自己的多线程C程序,可以根据CPU内核的数量平滑地扩展速度。我可以用1,2,3等线程运行它并获得线性加速..在6核上最高可达5.5x速度Ubuntu Linux机器上的CPU。

我有机会在一个非常高端的Sunfire x4450上运行该程序,其中包含4个四核Xeon处理器,运行Red Hat Enterprise Linux。我热切期待看到16个内核以16个线程运行程序的速度有多快。

但它的运行速度与两个线程相同!

稍后进行了大量的拔毛和调试,我发现我的程序确实在创建所有线程,它们实际上是同时运行的,但是线程本身比它们应该更慢。 2个线程的运行速度比1快1.7倍,但是3个,4个,8个,10个,16个线程的运行速度仅为1.9倍!我可以看到所有线程都在运行(没有停滞或睡眠),它们只是很慢。

为了检查硬件是否有问题,我同时独立地运行了我的程序的第六个副本。他们全速奔跑。真的有16个内核,它们确实全速运行,并且确实有足够的RAM(实际上这台机器有64GB,而且每个进程只使用1GB)。

所以,我的问题是,是否有一些操作系统解释,也许是一些每进程资源限制,它自动缩减线程调度,以防止一个进程占用机器。

线索是:

我的程序无法访问磁盘或网络。它的CPU有限。它的速度在a上线性变化

Ubuntu Linux中的单CPU盒

一个用于1-6线程的hexacore i7。 6

线程实际上是6倍的加速。

我的程序运行速度不会超过

这款16核心Sunfire的速度提升了2倍

Xeon框,适用于任意数量的线程

从2-16。

运行16份

我的程序单线程运行

完美的,所有16个同时运行

全速。

顶部显示1600%的

分配的CPU。 / proc / cpuinfo显示

所有16个核心都以2.9GHz的速度运行

速度(不是低频怠速

1.6GHz)

有48GB的RAM免费,它没有交换。

发生了什么?是否有一些进程CPU限制策略?如果是这样我怎么测量呢?

还有什么可以解释这种行为?

感谢您的解决方案,2010年的伟大至强减速之谜!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值