cachectl
is a controller for regular file's page cache.
posix_fadvise
is required.
go get -u github.com/cubicdaiya/cachectl/...
If you don't have go-runtime, you may download the binary from here.
cachectl -f /var/log/access_log
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
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.
[[targets]]
path = "/vagrant/cachectl.go"
purge_interval = 30
[[targets]]
path = "/vagrant/cachectld.go"
purge_interval = 20
[[targets]]
path = "/vagrant/cachectl"
purge_interval = 5
filter = "\\.go$"
rate = 0.9
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.