Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Oct 2008 00:04:51 +0200
From:      Ivan Voras <ivoras@freebsd.org>
To:        freebsd-hackers@freebsd.org
Subject:   Re: Pipes, cat buffer size
Message-ID:  <gddmip$im0$1@ger.gmane.org>
In-Reply-To: <20081018213502.GL99270@dan.emsphone.com>
References:  <gddjoj$apg$1@ger.gmane.org> <20081018213502.GL99270@dan.emsphone.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig0322905A6EC536F1489FB784
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Dan Nelson wrote:
> In the last episode (Oct 18), Ivan Voras said:
>> I'm working on a program that's intended to be used as a "filter", as
>> in "something | myprogram > file". I'm trying it with cat and I'm
>> seeing my read()s return small blocks, 64 kB in size. I suppose this
>> is because cat writes in 64 kB blocks. So:
>>
>> a) Is there a way to programatically, per-process, set the pipe buffer=

>> size? The program in question is a compressor and it's particularly
>> inefficient when given small blocks and I'm wondering if the system ca=
n
>> buffer enough data for it.
>=20
> Why not keep reading until you reach your desired compression block
> size?  Bzip2's default blocksize is 900k, for example.

Of course. But that's not the point :) From what I see (didn't look at
the code), Linux for example does some kind of internal buffering that
decouples how the reader and the writer interact. I think that with
FreeBSD's current behaviour the writer could write 1-byte buffers and
the reader will be forced to read each byte individually. I don't know
if there's some ulterior reason for this.

>> b) Is there any objection to the following patch to cat:
>=20
> It might be simpler to just use "dd if=3Dmyfile obs=3D1m" instead of
> patching cat.

I believe patching cat to bring its block size into the century of the
fruitbat has its own benefits.


--------------enig0322905A6EC536F1489FB784
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkj6XYkACgkQldnAQVacBchVhACeLs1vVbYU6sYy/6yKGAyvEAV7
WFwAn2rzKZxmt1rRJIjJcMI9KHFQoVaT
=ncjE
-----END PGP SIGNATURE-----

--------------enig0322905A6EC536F1489FB784--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?gddmip$im0$1>