gpt4 book ai didi

linux - 在 Perl 中以修改后的调度优先级运行 OS 函数

转载 作者:IT王子 更新时间:2023-10-29 00:36:53 27 4
gpt4 key购买 nike

是否可以让 Perl 在没有外部命令的情况下运行具有修改的调度和/或 IO 调度优先级的 Linux 操作系统功能?我正在尝试模拟以下内容:

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, 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, # 1
$$,
IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 7) # 0x4007
);

顺便说一下,你可以用 strace 找出库调用和类似的东西。

关于linux - 在 Perl 中以修改后的调度优先级运行 OS 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com