---
name: "gcache"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/gcache/8"
---

# gcache(8)

control utility for CACHE GEOM class

## NAME

**gcache** – control utility for CACHE GEOM class

## SYNOPSIS

**gcache** **create** \[**-v**\] \[**-b** *blocksize*\] \[**-s** *size*\] *name* *prov*

**gcache** **configure** \[**-v**\] \[**-b** *blocksize*\] \[**-s** *size*\] *name*

**gcache** **destroy** \[**-fv**\] *name*

**gcache** **label** \[**-v**\] \[**-b** *blocksize*\] \[**-s** *size*\] *name* *prov*

**gcache** **stop** \[**-fv**\] *name* *...*

**gcache** **clear** \[**-v**\] *prov* *...*

**gcache** **dump** *prov* *...*

**gcache** \[**--libxo**\] **list**

**gcache** \[**--libxo**\] **status** \[**-s** *name*\]

**gcache** **load** \[**-v**\]

**gcache** **unload** \[**-v**\]

## DESCRIPTION

The **gcache** utility is used to control GEOM cache, which can speed up read performance by sending fixed size read requests to its consumer.  It has been developed to address the problem of a horrible read performance of a 64 KiB blocksize FS residing on a RAID3 array with 8 data components, where a single disk component would only get 8 KiB read requests, thus effectively killing disk performance under high load.

Caching can be configured using two different methods: “manual” or “automatic”. When using the “manual” method, no metadata are stored on the devices, so the cached device has to be configured by hand every time it is needed. The “automatic” method uses on-disk metadata to detect devices. Once devices are labeled, they will be automatically detected and configured.

The first argument to **gcache** indicates an action to be performed:

- **create**

  Cache the given devices with specified *name*. This is the “manual” method. The kernel module *geom\_cache.ko* will be loaded if it is not loaded already.

- **label**

  Cache the given devices with the specified *name*. This is the “automatic” method, where metadata are stored in every device's last sector. The kernel module *geom\_cache.ko* will be loaded if it is not loaded already.

- **stop**

  Turn off existing cache device by its *name*. This command does not touch on-disk metadata!

- **destroy**

  Same as **stop**.

- **clear**

  Clear metadata on the given devices.

- **dump**

  Dump metadata stored on the given devices.

- **list**

  See [geom(8)](/geom/8.md).

- **status**

  See [geom(8)](/geom/8.md).

- **load**

  See [geom(8)](/geom/8.md).

- **unload**

  See [geom(8)](/geom/8.md).

- **--libxo**

  Generate output via [libxo(3)](/libxo/3.md) in a selection of different human and machine readable formats. See [xo\_options(7)](/xo_options/7.md) for details on command line arguments.

Additional options:

- **-f**

  Force the removal of the specified cache device.

- **-v**

  Be more verbose.

## SYSCTL VARIABLES

The following [sysctl(8)](/sysctl/8.md) variables can be used to control the behavior of the **CACHE** GEOM class. The default value is shown next to each variable.

- *kern.geom.cache.used\_hi*: 20

  - *kern.geom.cache.used\_lo*: 5

  - *kern.geom.cache.idletime*: 5

  - *kern.geom.cache.timeout*: 10

  - *kern.geom.cache.enable*: 1

  - *kern.geom.cache.debug*: 0

  Debug level of the **CACHE** GEOM class. This can be set to a number between 0 and 3 inclusive. If set to 0 minimal debug information is printed, and if set to 3 the maximum amount of debug information is printed.

## EXIT STATUS

Exit status is 0 on success, and 1 if the command fails.

## SEE ALSO

[geom(4)](/geom/4.md), [xo\_options(7)](/xo_options/7.md), [geom(8)](/geom/8.md)

## HISTORY

The **gcache** utility appeared in FreeBSD 7.0.

## AUTHORS

Ruslan Ermilov ⟨*ru@FreeBSD.org*⟩
