Dentry cache behaviour across identical nodes
Running the same negative-lookup workload on three identical Bench Cluster nodes to separate real dentry-cache behaviour from per-machine noise.
This experiment is really a test of the Bench Cluster as much as of the dcache: if three machines that are supposed to be identical disagree, the environment is lying somewhere.
Method#
The same workload runs on all three nodes at once, with nothing else scheduled. It is deliberately negative-lookup-heavy — the case where the dentry cache has to remember absence, not just presence — because that is where small configuration differences tend to show up.
Results#
| Node | Steady hit-rate | Negative entries | Verdict |
|---|---|---|---|
| node-a | 0.88 | 1.2 M | matches |
| node-b | 0.87 | 1.2 M | matches |
| node-c | 0.71 | 0.6 M | diverges |
Discussion#
The useful result is twofold. The dentry cache scales as expected on matched hardware, and the one divergence was caught precisely because the nodes are supposed to be interchangeable. This is the reproducibility argument for the cluster made concrete, and it connects back to the reference-counting rules in inode lifetime: absence has to be accounted for as carefully as presence.
Apparatus
- Bench Cluster, all three nodes, cluster otherwise idle
- Synthetic workload generating 70% negative lookups over a wide directory
- Hit-rate sampled from /proc and dentry slab stats at 1 Hz
- Each node reimaged to the campaign image before the run (intended)