ionice in FreeBSD?
jhell
jhell at DataIX.net
Tue Feb 9 05:44:32 UTC 2010
On Mon, 8 Feb 2010 23:37, mv@ wrote:
> On 3/02/2010 10:52 PM, Jordi Espasa Clofent wrote:
>> On 02/03/2010 12:12 PM, Bruce Simpson wrote:
>>> On 02/02/2010 17:19, Jordi Espasa Clofent wrote:
>>>>
>>>> In FreeBSD we've nice(1), renice(8) and even rtprio, idprio(1) but if
>>>> I'm understanding correctly, they're related to CPU priorty only, not
>>>> to I/O.
>>>
>>> That's not entirely true.
>>>
>>> A thread's CPU priority is still going to affect its ability to be
>>> scheduled on the CPU, and if it's waiting in the read() or write()
>>> syscalls, then this will make a difference to how quickly it can
>>> complete the next call.
>>
>> Yes. I've already supposed it.
>>
>>> However, it doesn't explicitly affect relative I/O prioritization. This
>>> is another story entirely. I suspect in a lot of cases adding a weight
>>> to per thread I/O, isn't going to make much difference for disk I/Os
>>> which are being sorted for the geometry (e.g. AHCI NCQ).
>>>
>>> So I guess my question is, 'why do you need I/O scheduling, and what
>>> aspect of system performance are you trying to solve with it' ?
>>
>> Some shell-scripts based on dd or rsync, for example. Even a daily
>> antivirus (ClamAV) scanner means an extensive I/O.
>>
> Programs like Rsync do provide --bwlimit= which work great in slowing it down
> to a desired level.
>
> I can't help but think every program that can use too much IO should have
> it's own IO/speed switch of some sort.
> I can only hope that in general nix evolution that all programs that can over
> use IO will offer a switch to slow it down like Rsync does.
>
> Using a while ionice can be a useful feature it can also be said that there
> are too many instances where it's being used as a hack to deal with a program
> that isn't offering all the functionality that it should.
>
> Cheers,
> Mike
>
In this thread with due respect to the OP the following might be
considered a fruitless hack but it works!.
Piping a processes output to dd(1) if you have a choice is a pretty fair
temporary solution if a program does not offer that capability.
For instance, I don't know if you are familiar with dump(8) at all, but I
use a -P or pipe from that process to dd(8) to slow down the traffic that
it tries to write over the network for backup purposes and then also give
dump(8) a different nice level so it plays along.
So even if you can cat your output and then read it in from fd(4) using
dd(8) you still have a chance at slowing things down a little or writing
at smaller increments that wont impact your environment as hard.
;)
--
jhell
More information about the freebsd-stable
mailing list