Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Jul 1999 04:08:48 -0500 (CDT)
From:      Kevin Day <toasty@dragondata.com>
To:        hackers@freebsd.org
Subject:   Replace/rewrite reverse.c for tail(1)
Message-ID:  <199907280908.EAA07996@celery.dragondata.com>

next in thread | raw e-mail | index | archive | help

An application I use quite often requires me to reverse the lines in the
file to get the desired output.

'tail -r' appears to be very inefficient in it's use of mmap(). It mmap's
the entire file in, which encourages the kernel to swap out the rest of the
system to keep pages of the input file in memory.

58350 root      54   0   412M 85244K RUN      0:14 19.78% 19.19% tail

Out of 128M of ram, it's swapped nearly everything else out to keep 85M of
this 400M file in ram, even though it will never touch it again. :)

I see two possible fixes for this. One could be madvise'ing periodically
with MADV_DONTNEED. If I understand correctly, this would help a bit, right?

Or, mmap smaller regions of the file, and keep moving the buffer. This would
also help with files exceeding mmap's limits.


Any thoughts?


Kevin


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199907280908.EAA07996>