In Computing, what is a Buffer?

A computer buffer is an area of memory used for the temporary storage of data when a program or hardware device needs an uninterrupted flow of information. Buffers are typically created in Random Access Memory (RAM) rather than on the hard disk, as fetching data from RAM is faster than retrieving it from the platter technology used in conventional hard drives. Some hardware devices come with their own on-board RAM, as in the case of printers.

Printers designed for small workloads generally have smaller buffers, while work horse models have greater amounts of RAM. When clicking a button to print a job, the computer sends the data to the printer RAM, freeing the system RAM to handle other tasks. This allows print jobs to run in the background, referred to as spooling. A printer buffer prints jobs on a first-come, first served basis, capable of maintaining a cue, especially important in a networked environment.

Another example of this is in streaming online multimedia content. Without use of a buffer, the user would either have to wait for the entire file to load to the local machine before playing it, or to sit through playback with breaks and jumps created by millisecond (or longer) delays in the data stream.

Here’s how it works: Files, data, music and video are all transported across the Internet in small, discreet data packets. These packets arrive independently and have to be recombined and reordered to recreate the original data stream without interruption. If a data packet is missing, video playback will “jump” to the next packet in line. To avoid this, a few seconds worth of the stream is stored in the buffer, then as playback begins, it stays just ahead of the display, “paving the way” for smooth sailing.

Some people might deduce it’s a good idea to configure this area of memory to be very large to ensure smooth playback. The problem is, the bigger the buffer, the less system RAM is available for other tasks. In the case of graphics cards that share memory with system RAM, creating temporary storage that is too large can actually degrade playback, as the graphics card might run short on the memory required to display streaming content. This can cause playback to appear as though it’s being viewed through heat waves, become jumpy, break up, or intermittently hang.

Since the optimum buffer size is determined mostly by connection speed and system RAM, playback problems can often be improved or fully corrected by adjusting this area of memory to be either slightly smaller or slightly larger. The correction that will serve best also depends on the reliability and speed of the source of the streaming content. A smaller buffer can work quite well with a fast source, offering quicker playback and additional RAM for graphics rendering. A slower source might require a slightly larger one, all else being equal. Users might need to experiment to find the right size.
Adding RAM to a system that shares memory with the graphics card (referred to as integrated graphics) can also improve streaming media by allowing a larger buffer without compromising playback quality. Adding system RAM can also help if the graphics card has only a nominal amount of on-board RAM.

Users can usually change the buffer size for multimedia content through the software used for listening or watching streaming materials. Typically, a slider control allows the user to increase or decrease the amount of memory set aside.
Word processors, spreadsheet programs and nearly all productivity packages use buffers to keep track of changes within a document or project so that reversion (the “undo” command) is possible. This memory is also responsible for saving temporary copies of material in progress so that, in the case of a crash or power outage, the document can be retrieved even when it was not officially saved.