返回列表 发新帖

适用于骁龙8e的全游戏通用线程分配实现代码

[复制链接]

124

主题

1391

回帖

5741

积分

硕士生

Rank: 6Rank: 6

金币
2753
好评
11
信誉
98
QQ
发表于 2025-2-21 08:42:43 来自手机  | 显示全部楼层 | 阅读模式  来自 广西
HIGH_CORES=(6 7)  # 高优先级核心编号
HIGH_MASK=0
# 计算 HIGH_MASK
for CORE in "${HIGH_CORES[@]}"; do
    HIGH_MASK=$((HIGH_MASK | (1 << CORE)))
done
# 转换为十六进制格式
HIGH_MASK_CPU=$(printf "%x" "$HIGH_MASK")

ALL_CORES=(0 1 2 3 4 5 6 7)  # 全部核心编号
ALL_MASK=0
# 计算 ALL_MASK
for CORE in "${ALL_CORES[@]}"; do
    ALL_MASK=$((ALL_MASK | (1 << CORE)))
done
# 转换为十六进制格式
ALL_MASK_CPU=$(printf "%x" "$ALL_MASK")

# 主循环,持续监控进程
while true; do
    # 获取当前前台应用的 PID
    CURRENT_PID=$(ps -eo res,pid,cmdline --sort=+res | tail -n 1 | awk '{print $2}')
    CMDLINE=$(ps -eo res,pid,cmdline --sort=+res | tail -n 1 | awk '{print $3}')
    if [ -n "$CURRENT_PID" ]; then
        # 跳过 system_server 的进程
        if [[ "$CMDLINE" == *"system_server"* ]]; then
            echo "跳过 system_server 进程:PID=$CURRENT_PID"
            
sleep 0.5

            continue
        fi

        # 检查是否已经记录过该 PID 的线程 ID
        if [ -z "${PID_TID_MAP[$CURRENT_PID]}" ]; then
            # 如果未记录,查找并记录 CPU 占用最高的线程的 tid
            cpu_usage=$(ps -T -p $CURRENT_PID -o pid,tid,%cpu | awk 'NR > 1')
            FIRST_TID=$(echo "$cpu_usage" | sort -k3nr | awk 'NR==1 {print $2}')
            PID_TID_MAP[$CURRENT_PID]=$FIRST_TID
            echo "记录新的 PID:$CURRENT_PID,线程 ID:$FIRST_TID"
        else
            FIRST_TID=${PID_TID_MAP[$CURRENT_PID]}
            echo "使用已记录的 PID:$CURRENT_PID,线程 ID:$FIRST_TID"
        fi

        # 为记录的线程分配 CPU 核心
        taskset -p $HIGH_MASK_CPU $FIRST_TID
        # 设置该线程的实时调度优先级
        chrt -r -p $FIRST_TID 1
        echo "$FIRST_TID taskset $HIGH_MASK_CPU $FIRST_TID chrt"

sleep 1

        # 为其余线程分配 CPU 核心 0-7
        for TID in $(ps -T -p $CURRENT_PID -o tid=); do
            if [ "$TID" != "$FIRST_TID" ]; then
                taskset -p $ALL_MASK_CPU $TID
                echo "$TID taskset $ALL_MASK_CPU"
            fi
        done
    fi

sleep 0.5

done

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

54

主题

4527

回帖

1万

积分

博士生

辰夕Mod

Rank: 7Rank: 7Rank: 7

金币
7121
好评
35
信誉
169

MT论坛帅哥考神MT论坛活跃会员

QQ
发表于 2025-2-21 11:25:29 来自手机  | 显示全部楼层  来自 辽宁
用Sense秒了
回复

使用道具 举报

124

主题

1391

回帖

5741

积分

硕士生

Rank: 6Rank: 6

金币
2753
好评
11
信誉
98
QQ
发表于 2025-2-21 12:10:00 来自手机  | 显示全部楼层  来自 广西
辰夕 发表于 2025-2-21 11:25
用Sense秒了

回复

使用道具 举报

40

主题

5888

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5107
好评
35
信誉
112

MT论坛帅哥考神MT论坛最佳新人

发表于 2025-2-21 13:12:51 来自手机  | 显示全部楼层  来自 湖南
辰夕 发表于 2025-2-21 11:25
用Sense秒了

Scene
回复

使用道具 举报

54

主题

4527

回帖

1万

积分

博士生

辰夕Mod

Rank: 7Rank: 7Rank: 7

金币
7121
好评
35
信誉
169

MT论坛帅哥考神MT论坛活跃会员

QQ
发表于 2025-2-21 14:07:53 来自手机  | 显示全部楼层  来自 辽宁
Pantokrátor 发表于 2025-2-21 13:12
Scene

输入法打的,
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表