Re: [Ext2-devel] disk throughput

Wojtek Pilorz
2001-11-06T09:16:13Z

On Mon, 5 Nov 2001, Alexander Viro wrote:

[...]
>
> find(1). Stuff that runs every damn night. We end up doing getdents() +
> bunch of lstat() on the entries we had found. And that means access to
> inodes refered from them. Try that on a large directory with child
> inodes spread all over the disk.
>
[...]

Part of the problem is that, as far as I know, there is no sane way to
request the kernel to execute a number of lstat-s or similar calls
in the order that would be convenient to the system (I do not consider
creating threads for this purpose a sane way).
If a program (say find, or tar, or anything) needs an information from
5000 lstats of fstats or reads, it has to specify them one-by-one in some
order, without knowledge which order would be best.
If we had a call to execute a vector of lstats, or open, or reads (from
different handles), program which would use such calls would allow kernel
to take decision what is the best order or individual operations.

I remember that using similar 'vector' functions in old days on IBM OS/MVT
gave dramatical performance improvements (maybe for different
reasons; machine memories were often half a megabyte, so opening a file
required the system to read and execute several modules loaded from system
disks; when opening 10 files each of the modules had to be loaded once
rather than 10 times).

Would it be possible and a good idea to add such 'vector' operations to
the Linux kernel?

Best regards,

Wojtek
--------------------
Wojtek Pilorz
Wojtek.Pilorz@bdk.pl