我正在尝试通过 xinetd 为 rsync 设置 Nice 和 ionice。我正在运行 Fedora 16。我想使用这些值的原因是将 rsync 进程减少到空闲状态,以便其他进程运行不受影响。
我试图用来/etc/default/rsync
设置nice和ionice值,但看起来这些对我不起作用。 rsync 进程始终以良好的 0 值启动,即使我将其设置为 19。这些设置在 xinetd 中有效吗?还有另一种方法可以通过 xinetd 实现良好的 rsync 吗?
这是我的配置文件:
/etc/rsync.conf:
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[share]
<shares go here>
/etc/xinetd.d/rsync:
service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
/etc/default/rsync:
RSYNC_ENABLE=inetd
RSYNC_OPTS=''
RSYNC_NICE='19'
RSYNC_IONICE='-c3'
答案1
感谢 sr_ 的指点,我似乎有了解决方案。
我/etc/xinet.d/rsync
添加/更改了这些行:
service rsync
{
...
nice = 19
server = /usr/bin/ionice
server_args = -c 3 /usr/bin/rsync --daemon
...
}
要使用ionice
,我需要将服务器值更改为ionice
而不是rsync
。然后添加rsync
到参数部分以便ionice
启动它。
答案2
这些 Debian 的片段/etc/default/rsync
(Fedora 可能不会转移太多),
# run rsyncd at a nice level?
# ...
RSYNC_NICE=''
# run rsyncd with ionice?
# ...
# RSYNC_IONICE='-c3'
让我觉得*NICE
价值观只影响rsyncd
守护进程。观察一下/etc/init.d/rsync
,我们发现
if [ -s $RSYNC_DEFAULTS_FILE ]; then
. $RSYNC_DEFAULTS_FILE
case "x$RSYNC_ENABLE" in
xtrue|xfalse) ;;
xinetd) exit 0
# ... the next lines examine the *NICE variables...
即,如果rsync
与 一起使用inetd
,则这些*NICE
值根本不重要。
您可以尝试替换rsync
中的行inetd.conf
,
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
^^^^^^^^^^^^^^
我想,用一些命令行设置你的[io]nice
值。
编辑划掉您正在使用的最后一句话,xinetd
因此,如果您想尝试它,则必须更改rsync
您所包含的片段中的命令:
service rsync
{
...
server = /usr/bin/rsync
...
}
编辑2判断从这,有一个xinetd
配置项要求nice
命令的良好性:
nice Changes the server priority like the nice command does.
因此,您可以尝试组合设置nice=19
并/etc/xinetd.d/rsync
在server
命令前面加上有人ionice
打电话,例如ionice -c3
。
(不过,我不确定这是否有效。但如果不起作用,您仍然可以rsyncd
作为守护进程运行并让/etc/init.d
脚本处理一切。)