linux切换多任务,如何在Linux中控制并行任务以避免过多的上下文切换

现在我使用

Linux来执行以下任务:

while read parameter

do

./program_a $parameter $parameter.log 2>&1 &

done < parameter_file

每个参数指的是要处理的文件的名称.每个文件包含要处理的不同行数.

例如:

参数文件包含:

File_A

File_B

File_C

File_A包含1k行,File_B包含10k行,File_C包含1000k行,这意味着在上面的脚本中program_a分别同时处理1000行,10k行和1000k行.每个任务的处理时间几乎线性地取决于行数,每个任务是独立的.

我有6核CPU和12个线程.因为处理时间可能不同,所以在运行File_A和File_B的任务之后,只有一个核心将处理File_C的任务.这是在浪费资源.

我想将每个文件拆分为1k行并同时运行它们.但是对于这个例子,将运行1011个任务(每个任务1k).我认为这将导致严重的上下文切换问题.也许我可以调整每行中的数字来解决这个问题,但我不认为这是一个很好的解决方案.

我的想法是限制运行的任务将始终是6个任务,这意味着始终使用最大数量的核心来运行并将上下文切换减少到尽可能少.但我不知道如何修改我的脚本来实现这个目标.有人可以给我一些建议吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值