lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 23 Apr 2009 22:23:14 +0100
From:	Jamie Lokier <jamie@...reable.org>
To:	Jens Axboe <jens.axboe@...cle.com>
Cc:	Christoph Hellwig <hch@....de>, linux-fsdevel@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: get_fs_excl/put_fs_excl/has_fs_excl

Jens Axboe wrote:
> The intent was to add some sort of notification mechanism from the file
> system to inform the IO scheduler (and others?) that this process is how
> holding a file system wide resource. So if you have a low priority
> process getting access to such a resource, you want to boost its
> priority to avoid higher priority apps getting stuck beind it. Sort of a
> poor mans priority inheritance.

Very closely related to this: I'm building something where I want one
particular task to have absolute higher I/O priority than all other
tasks.  No problem, use the lovely RT I/O priority facility.

But if that task needs access to a buffer or page which is already
undergoing I/O started by another task - what happens?  I'd like the
_I/O_ priority to be boosted in that case, so that the high priority
task does not have to wait on a long queue of low priority I/Os.

E.g. this happens when the high priority task reads from a file, and a
low priority task has already initiated readahead for that file.  It's
a particular problem if the low priority task's I/O is queued behind a
lot of other low priority I/O.

That can be avoided by just not reading the same files :-)  But more
subtly, the high priority task may find itself waiting on metadata
blocks which overlap metadata blocks from I/O in a low priority tasks.
The application can't easily avoid this.

So I'd like operations which wait for I/O to complete to compare the
task's I/O priority with the I/O request already queued, and boost the
request priority if it's lower, moving it forward in the elevator if
necessary.

All this to guarantee a high I/O priority task has a maximum response
time no matter what low priority I/O is doing.  Even O_DIRECT has to
read metadata sometimes...

It seems if I/O priority boosting were implemented like this, that
might solve the superblock priority thing too, without needing
filesystem changes and generically for all metadata?

How hard would it be to do this?

Thanks,
-- Jamie
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ