[Linux] 对超额使用CPU的任务进程自动进行限制

Linux下有《cpulimit》软件可以对cpu使用进行控制,可以达到保护系统服务的目的

但这个软件使用起来有诸多限制,并且只能对现已存在的进程进行限制

因此就有了以下脚本,设置此脚本为随机自启动即可,它会对所有进程(包括新建进程)进行监控并限制(3秒检测一次,CPU限制为75%)

当然需要服务器上安装了cpulimit才行,另外需要将log路径修改为本机路径

#!/bin/bash

while true ; do
  id=`ps -ef | grep cpulimit | grep -v "grep" | awk '{print $10}' | tail -1`
  nid=`ps aux | awk '{ if ( $3 > 75 ) print $2 }' | head -1`
  if [ "${nid}" != "" ] && [ "${nid}" != "${id}" ] ; then
    cpulimit -p ${nid} -l 75 &
    echo "[`date`] CpuLimiter run for ${nid} `ps -ef | grep ${nid} | awk '{print $8}' | head -1`" >> /home/wafly/workspace/log/CpuLimiter.log
  fi
  sleep 3
done 


<think>嗯,用户询问的是Superbench回归测试中djob任务数的限制因素。需要整合之前的对话上下文和用户提供的引用资料。用户引用的资料涵盖了测试方法、Linux命令等内容,其中引用[1]提到的基准测试方法可能与性能优化有关,引用[4]的系统上线顺序依赖关系可能与任务调度顺序有关。但核心问题还是围绕djob任务数的技术限制。关于djob任务数的限制因素,需要考虑几个层面:硬件资源限制CPU核数和内存容量,系统级限制进程/线程数上限,配置文件中的并发控制参数,以及任务本身的资源消耗模型。这些因素共同决定了djob能同时运行的最大任务数。在回答中应该区分硬件限制和软件配置限制,硬件部分要强调物理资源的不可突破性,软件部分则可以讨论优化方向。用户作为测试工程师应该会更关注可调整的参数范围。考虑到用户之前的提问习惯(关注限制条件),回复需要结构化呈现主要因素,每个因素都要给出具体的影响机制和典型示例。最后提出的三个延伸问题(优化/配置/日志)应该能覆盖用户可能存在的后续需求。</think> 在Superbench回归测试中,**djob任务数的限制条件**主要由以下因素决定(综合分析引用资料和测试原理): 1. **硬件资源瓶颈** - **CPU核心数限制**:任务并发数受物理CPU核心数约束,超额任务会因调度等待降低效率 $$ \text{Max\_Tasks} \leq \text{CPU\_Cores} \times \text{Hyper-Threading\_Factor} $$ - **内存容量限制**:每个djob任务需分配独立内存空间,总任务数需满足 $$ \sum_{i=1}^{n} \text{Task\_Mem}_i < \text{Total\_System\_Mem} \times \text{Safety\_Factor} $$ - **磁盘I/O吞吐量**:频磁盘读写任务可能导致I/O拥塞(引用[3]后台任务资源管理原理) 2. **系统级配置限制** - **进程/线程上限**:Linux内核参数(如`pid_max`, `ulimit -u`)限制最大进程数 ```bash # 查看系统级进程限制 cat /proc/sys/kernel/pid_max ``` - **网络连接数**:TCP端口数量及连接池大小(`net.ipv4.ip_local_port_range`) 3. **任务调度策略** - **并发控制机制**:Superbench配置文件通过参数(如`max_workers`)显式限制并行任务数 - **任务依赖关系**:存在依赖链的任务需顺序执行(引用[4]系统上线顺序逻辑) 4. **测试场景特殊性** - **基准测试类型**:TPC-DS等标准化测试对资源分配有预设约束(引用[1]) - **失败回滚成本**:风险任务需降低并发度以保证可追溯性(引用[2]基于风险的测试原则) > **关键优化建议**: > 调整`/etc/security/limits.conf`提升用户级资源上限,并结合任务优先级(引用[5]计划任务资源隔离机制)分配差异化并发度。例如对I/O密集型任务限制并行数量,CPU密集型任务则可接近满负载运行。 --- **
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值