Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


cachectl is a controller for regular file's page cache.


posix_fadvise is required.


go get -u

If you don't have go-runtime, you may download the binary from here.

Show page cache stat for file

cachectl -f /var/log/access_log

Purge page cache for file

cachectl -op purge -f /var/log/access_log

If you want to leave a cache appended recently, assigning a rate for purging page cache with -r is recommended.

cachectl -op purge -f /var/log/access_log -r 0.9


cachectld is a daemon for scheduled purging page cache. Its behavior is described by TOML.

cachectld -c conf/cachectld.toml

Configuration for cachectld

A configuration for cachectld has one or multiple targets.

name type description default note
path string target file path directory or file path
purge_interval int interval for purging page cache for file 3600 unit is second. if -1 is set, purge does not run.
filter string filtering pattern string for target file path .* regular expression with golang's regexp package
rate float rate of purging page cache for file 0.0 0.0 and 1.0 is same behavior (0.0 <= rate <= 1.0)

A example is below.

path = "/vagrant/cachectl.go"
purge_interval = 30

path = "/vagrant/cachectld.go"
purge_interval = 20

path = "/vagrant/cachectl"
purge_interval = 5
filter = "\\.go$"
rate = 0.9

Signal trigger

From v0.3.0, you can trigger with SIGUSR1 to run the targets for cachectld.

$ pkill -USR1 cachectld

When SIGUSR1 is received, cachectld runs all targets including the targets purge_interval is set -1.


Copyright 2014-2016 Tatsuhiko Kubo

Licensed under the MIT License.