You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以root身份设置实时调度优先级失败:sched_setscheduler返回操作不允许

解决实时调度优先级设置失败(Operation not permitted)的方案

针对你在Jetson(5.10.104-tegra内核)上遇到的sched_setscheduler始终返回"Operation not permitted"的问题,可按以下步骤排查修复:

  • 修复root用户的实时优先级限制
    你提到sudo su -进入root后ulimit -r返回0,这是核心问题之一。默认root用户的limits配置可能被系统覆盖,需在/etc/security/limits.conf中明确添加root的条目:

    root - rtprio 99
    * - rtprio 99
    

    同时检查/etc/security/limits.d/目录下的所有文件,确保没有其他配置覆盖rtprio设置。修改后重启系统或重新登录root shell,验证ulimit -r是否返回99。

  • 确认内核实时调度参数未被禁用
    虽然你已验证内核支持实时调度,但需确认/proc/sys/kernel/sched_rt_runtime_us的值:

    cat /proc/sys/kernel/sched_rt_runtime_us
    

    如果返回0,表示内核完全禁用了实时进程的CPU时间分配,需修改为允许的值(如950000,代表实时进程最多占用95%的CPU时间):

    echo 950000 > /proc/sys/kernel/sched_rt_runtime_us
    

    若要永久生效,将kernel.sched_rt_runtime_us=950000添加到/etc/sysctl.conf,然后执行sysctl -p生效。

  • 验证setcap权限是否正确生效
    执行setcap后,需确认权限已正确附加到二进制文件:

    getcap /path/to/your_binary
    

    输出应显示/path/to/your_binary cap_sys_nice=ep。如果未生效,检查二进制文件所在的文件系统是否挂载了noexec选项(可通过mount命令查看),noexec会导致setcap权限失效,需重新挂载文件系统去掉该选项。

  • 检查Jetson特有的安全限制
    NVIDIA Jetson系统可能启用了AppArmor或SELinux,阻止实时调度操作:

    1. 检查SELinux状态:
      sestatus
      
      若处于enforcing模式,可临时切换为permissive测试:
      setenforce 0
      
      若问题解决,需添加对应的SELinux规则或永久设置为permissive。
    2. 检查AppArmor状态:
      aa-status
      
      若存在针对你的程序的限制profile,可临时停用该profile测试。
  • 代码层面的小调整(可选)
    虽然你的代码逻辑无明显问题,但可尝试先将进程切换到普通调度策略再设置实时优先级,避免潜在的冲突:

    int set_priority()
    {
        struct sched_param param;
        memset(&param, 0, sizeof(struct sched_param));
        
        // 先切换到普通调度策略
        if (sched_setscheduler(0, SCHED_NORMAL, &param) == -1) {
            perror("sched_setscheduler (normal)");
            return -1;
        }
        
        int policy = SCHED_RR;
        int max_priority = sched_get_priority_max(policy);
        param.sched_priority = 1;
        printf("max_priority=%d\n", max_priority);
        
        if (sched_setscheduler(0, policy, &param) == -1) {
            perror("sched_setscheduler (rr)");
            return -1;
        }
        return 0;
    }
    

内容的提问来源于stack exchange,提问作者Timothy Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:17:42