Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/vfs_cache.c
Show First 20 Lines • Show All 339 Lines • ▼ Show 20 Lines | |||||
SYSCTL_INT(_debug_sizeof, OID_AUTO, namecache, CTLFLAG_RD, SYSCTL_NULL_INT_PTR, | SYSCTL_INT(_debug_sizeof, OID_AUTO, namecache, CTLFLAG_RD, SYSCTL_NULL_INT_PTR, | ||||
sizeof(struct namecache), "sizeof(struct namecache)"); | sizeof(struct namecache), "sizeof(struct namecache)"); | ||||
/* | /* | ||||
* The new name cache statistics | * The new name cache statistics | ||||
*/ | */ | ||||
static SYSCTL_NODE(_vfs, OID_AUTO, cache, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, | static SYSCTL_NODE(_vfs, OID_AUTO, cache, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, | ||||
"Name cache statistics"); | "Name cache statistics"); | ||||
#define STATNODE_ULONG(name, descr) \ | #define STATNODE_ULONG(name, descr) \ | ||||
SYSCTL_ULONG(_vfs_cache, OID_AUTO, name, CTLFLAG_RD, &name, 0, descr); | SYSCTL_ULONG(_vfs_cache, OID_AUTO, name, CTLFLAG_RD, &name, 0, descr); | ||||
#define STATNODE_COUNTER(name, descr) \ | #define STATNODE_COUNTER(name, descr) \ | ||||
static counter_u64_t __read_mostly name; \ | static COUNTER_U64_DEFINE_EARLY(name); \ | ||||
SYSCTL_COUNTER_U64(_vfs_cache, OID_AUTO, name, CTLFLAG_RD, &name, descr); | SYSCTL_COUNTER_U64(_vfs_cache, OID_AUTO, name, CTLFLAG_RD, &name, \ | ||||
descr); | |||||
STATNODE_ULONG(numneg, "Number of negative cache entries"); | STATNODE_ULONG(numneg, "Number of negative cache entries"); | ||||
STATNODE_ULONG(numcache, "Number of cache entries"); | STATNODE_ULONG(numcache, "Number of cache entries"); | ||||
STATNODE_COUNTER(numcachehv, "Number of namecache entries with vnodes held"); | STATNODE_COUNTER(numcachehv, "Number of namecache entries with vnodes held"); | ||||
STATNODE_COUNTER(numcalls, "Number of cache lookups"); | STATNODE_COUNTER(numcalls, "Number of cache lookups"); | ||||
STATNODE_COUNTER(dothits, "Number of '.' hits"); | STATNODE_COUNTER(dothits, "Number of '.' hits"); | ||||
STATNODE_COUNTER(dotdothits, "Number of '..' hits"); | STATNODE_COUNTER(dotdothits, "Number of '..' hits"); | ||||
STATNODE_COUNTER(numchecks, "Number of checks in lookup"); | STATNODE_COUNTER(numchecks, "Number of checks in lookup"); | ||||
STATNODE_COUNTER(nummiss, "Number of cache misses"); | STATNODE_COUNTER(nummiss, "Number of cache misses"); | ||||
▲ Show 20 Lines • Show All 1,570 Lines • ▼ Show 20 Lines | nchinit(void *dummy __unused) | ||||
for (i = 0; i < numneglists; i++) { | for (i = 0; i < numneglists; i++) { | ||||
mtx_init(&neglists[i].nl_lock, "ncnegl", NULL, MTX_DEF); | mtx_init(&neglists[i].nl_lock, "ncnegl", NULL, MTX_DEF); | ||||
TAILQ_INIT(&neglists[i].nl_list); | TAILQ_INIT(&neglists[i].nl_list); | ||||
} | } | ||||
mtx_init(&ncneg_hot.nl_lock, "ncneglh", NULL, MTX_DEF); | mtx_init(&ncneg_hot.nl_lock, "ncneglh", NULL, MTX_DEF); | ||||
TAILQ_INIT(&ncneg_hot.nl_list); | TAILQ_INIT(&ncneg_hot.nl_list); | ||||
mtx_init(&ncneg_shrink_lock, "ncnegs", NULL, MTX_DEF); | mtx_init(&ncneg_shrink_lock, "ncnegs", NULL, MTX_DEF); | ||||
numcachehv = counter_u64_alloc(M_WAITOK); | |||||
numcalls = counter_u64_alloc(M_WAITOK); | |||||
dothits = counter_u64_alloc(M_WAITOK); | |||||
dotdothits = counter_u64_alloc(M_WAITOK); | |||||
numchecks = counter_u64_alloc(M_WAITOK); | |||||
nummiss = counter_u64_alloc(M_WAITOK); | |||||
nummisszap = counter_u64_alloc(M_WAITOK); | |||||
numposzaps = counter_u64_alloc(M_WAITOK); | |||||
numposhits = counter_u64_alloc(M_WAITOK); | |||||
numnegzaps = counter_u64_alloc(M_WAITOK); | |||||
numneghits = counter_u64_alloc(M_WAITOK); | |||||
numfullpathcalls = counter_u64_alloc(M_WAITOK); | |||||
numfullpathfail1 = counter_u64_alloc(M_WAITOK); | |||||
numfullpathfail2 = counter_u64_alloc(M_WAITOK); | |||||
numfullpathfail4 = counter_u64_alloc(M_WAITOK); | |||||
numfullpathfound = counter_u64_alloc(M_WAITOK); | |||||
zap_and_exit_bucket_relock_success = counter_u64_alloc(M_WAITOK); | |||||
numneg_evicted = counter_u64_alloc(M_WAITOK); | |||||
shrinking_skipped = counter_u64_alloc(M_WAITOK); | |||||
} | } | ||||
SYSINIT(vfs, SI_SUB_VFS, SI_ORDER_SECOND, nchinit, NULL); | SYSINIT(vfs, SI_SUB_VFS, SI_ORDER_SECOND, nchinit, NULL); | ||||
void | void | ||||
cache_changesize(u_long newmaxvnodes) | cache_changesize(u_long newmaxvnodes) | ||||
{ | { | ||||
struct nchashhead *new_nchashtbl, *old_nchashtbl; | struct nchashhead *new_nchashtbl, *old_nchashtbl; | ||||
u_long new_nchash, old_nchash; | u_long new_nchash, old_nchash; | ||||
▲ Show 20 Lines • Show All 776 Lines • Show Last 20 Lines |