转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~
推荐与GPU+CPU核绑一起用:
https://blog.csdn.net/sxf1061700625/article/details/139725011
sudo chrt -f <优先级> <指令>
当然也可以不是启动Python脚本,普通的指令都可以,可自行适当修改。
#!/bin/bash
# 默认参数值
DEFAULT_CHRT_PRIORITY=99
# 必须是绝对路径
DEFAULT_PYTHON="/home/anaconda3/envs/abc/bin/python"
# 脚本名称
DEFAULT_SCRIPT="train.py"
# 解析命令行参数
while getopts "c:p:s:" opt; do
case $opt in
c) CHRT_PRIORITY=$OPTARG ;;
p) PYTHON=$OPTARG ;;
s) SCRIPT=$OPTARG ;;
\?) echo "Invalid option -$OPTARG" >&2 ;;
esac
done
# 设置默认值,如果没有提供参数
CHRT_PRIORITY=${CHRT_PRIORITY:-$DEFAULT_CHRT_PRIORITY}
PYTHON=${PYTHON:-$DEFAULT_PYTHON}
SCRIPT=${SCRIPT:-$DEFAULT_SCRIPT}
# 启动训练脚本并设置实时调度策略和优先级
sudo chrt -f $CHRT_PRIORITY $PYTHON $SCRIPT
# 获取并显示进程ID (PID)
SCRIPT_PID=$!
echo "Started script with PID: $SCRIPT_PID"
CHRT_PRIORITY=10
:设置实时调度策略的优先级为 10。sudo chrt -f $CHRT_PRIORITY $PYTHON $SCRIPT
:使用 SCHED_FIFO 调度策略和设置的优先级来启动 Python 脚本。TRAIN_PID=$!
:获取最后一个放到后台运行的进程的 PID。echo "Started training script with PID: $TRAIN_PID"
:显示启动的进程的 PID。sudo bash script.sh -c 50 -p /path/to/your/python -s your_script.py
这两个指令都可以用来调整进程的优先级,但略有区别。
nice
命令nice
命令用于启动一个进程并设置其静态优先级(nice 值)。nice
值的范围从 -20 到 19,-20 表示最高优先级,19 表示最低优先级。默认值为 0。nice
命令不会更改进程的调度策略,仅调整其在默认调度策略(通常是 CFS,即 Completely Fair Scheduler)中的优先级。chrt
命令chrt
命令用于设置或更改进程的调度策略和实时优先级。chrt
提供多种调度策略,包括 SCHED_OTHER、SCHED_FIFO、SCHED_RR、SCHED_BATCH、SCHED_IDLE 和 SCHED_DEADLINE。最常用的是实时调度策略 SCHED_FIFO 和 SCHED_RR。非实时调度策略适用于大多数普通用户程序,操作系统会尽量公平地分配 CPU 时间给所有进程。这些策略包括:
实时调度策略用于需要严格时间限制的任务,保证高优先级任务能够在需要时及时执行。这些策略包括:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。