6

This tag is for questions about kernel buffer caches, including pipe buffers. These are used to store the recently accessed files and/or frequently accessed files.

Many questions use the tag instead, or sometimes in combination. And the tag is "abused" for questions which are not about kernel buffer caches (and not about pipe buffers either - ?!).

I think this is to be expected. The term buffer cache has become less widely used. Modern Unixes implement unified buffer cache. At least Linux developers seem to refer to the page cache instead. One poster told me that an OS with a "unified buffer cache" has no buffer cache anymore, only a page cache :-). (However cached IO is still often referred to as buffered IO).

I've checked my recent questions and made sure I'm using the tag. And then it seems redundant to use the tag.

Should we do something about the tag - to make the tag description more consistent with how it is used - or the other way around - or to simply avoid using it?

(I don't think we need to start using a specific tag for "page-cache", though maybe you disagree :-)

1 Answer 1

3

I think there is a fundamental difference between buffer and cache:

A buffer is to assemble smaller portions of data until a specific amount is reached; then the data is processed in some way. Like the write or read buffers fread() and fwrite() use in C. Or like in double-buffering when streaming data to a sound-card, maybe. Or the well-known line-buffer for keyboard input or line-printer output. Classical Ethernet cards had packet buffers, too; either in system RAM or dedicated on board.

Opposed to that, a (read) cache is some memory that is intended to be re-used often, meaning that the contents are read multiple times. So a write cache is actually a buffer IMHO. For example the result of a function can be cached.

Another difference IMHO is that caches are optional, while buffers are typically required.

And the buffer cache is a combination of both: Assembling (read) data in a block, and the reading that block buffer multiple times.

Finally historical mis-use of the terms isn't helpful in cleaning up the confusion.

2
  • Good point. Unix "buffer cache" is used to provide both buffering and caching. But there's a number of other important things that [buffer] might mean in our context, even if the term had not also become obsolete in the narrower context of Linux kernel development.
    – sourcejedi
    Commented Nov 20, 2018 at 15:15
  • IMO the question is what does this site most need. 1) If [buffer] was removed from all Q's that are only about the [cache] features, would we find some use for the [buffer] tag? 2) Alternatively, if we wanted to label everything with a [buffer] tag that was relevant to the current tag description (maybe renaming it [kernel-cache]) - is that useful & realistically maintainable, when we already have tags like [cache], [kernel], [linux] etc. ?
    – sourcejedi
    Commented Nov 20, 2018 at 15:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .