加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 在Perl中具有修改的调度优先级的Runnig OS功能

发布时间:2020-12-13 22:47:48 所属栏目:Linux 来源:网络整理
导读:是否可以让Perl在没有外部命令的情况下运行具有修改的调度和/或IO调度优先级的 Linux OS功能?我试图模拟以下内容: nice -n19 ionice -c2 -n7 cp largefile largefile2 我可以用File :: Copy,setpriority函数和CPAN模块Linux :: IO_Prio以某种方式做到这一
是否可以让Perl在没有外部命令的情况下运行具有修改的调度和/或IO调度优先级的 Linux OS功能?我试图模拟以下内容:

nice -n19 ionice -c2 -n7 cp largefile largefile2

我可以用File :: Copy,setpriority函数和CPAN模块Linux :: IO_Prio以某种方式做到这一点吗?我只需要降低0美元的调度优先级吗?

编辑:
如果我执行以下操作,将降低copy()的优先级和IO吗?有一个更好的方法吗?

use Linux::IO_Prio qw(:all);
use File::Copy;

setpriority(0,-20);
ionice(IOPRIO_WHO_PROCESS,$$,IOPRIO_CLASS_IDLE,7);

copy("file1","file2") or die "Copy failed: $!";

解决方法

精炼 Oesor’s answer:

use BSD::Resource qw(PRIO_PROCESS setpriority);
use Linux::IO_Prio qw(IOPRIO_WHO_PROCESS IOPRIO_PRIO_VALUE IOPRIO_CLASS_BE ioprio_set);
BEGIN { require autodie::hints; autodie::hints->set_hints_for(&;ioprio_set,{ fail => sub { $_[0] == -1 } } ) };
use autodie qw(:all setpriority ioprio_set);

setpriority(
    PRIO_PROCESS,# 1
    $$,19
);
ioprio_set(
    IOPRIO_WHO_PROCESS,IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE,7)       # 0x4007
);

顺便说一句,你可以找到库调用和类似的东西与strace.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读