aicam opened a new pull request, #8666:
URL: https://github.com/apache/texera/pull/8666

   ### What changes were proposed in this PR?
   
   `bin/mounter/mounter.py` starts geesefs with `--memory-limit 512` and no 
`--cache`, whose default is off. Nothing a mount serves is written to local 
disk, so every read goes back to the object store through the file service and 
LakeFS. Reading the same 200 MiB three times through a mount measured 179, 137 
and 124 MB/s — no warming at all — against 12.4 GB/s for the same file on the 
node's local disk.
   
   This adds `mounter.cacheRoot`, empty by default. When set, geesefs is given 
`--cache <dir>`.
   
   The cache is keyed by repository and commit, not by computing unit: a commit 
is immutable, so every unit on a node reads one cache instead of each new unit 
starting cold — which matters most for a shared public unit, where the first 
execution pays and the rest benefit.
   
   `cacheRoot` is a separate value from `hostMountRoot` rather than a directory 
inside it. `hostMountRoot` holds only mount points and usually sits on the OS 
disk, while a cache is sized by the data being cached, so the two generally 
belong on different volumes.
   
   Off by default, so no deployment changes behaviour until an operator opts in.
   
   ### Any related issues, documentation, discussions?
   
   Fixes #8665.
   
   ### How was this PR tested?
   
   Two cases added to `bin/mounter/tests/test_mounter.py`: that no `--cache` is 
passed by default, and that with a cache root set the directory handed to 
geesefs is `<cacheRoot>/<repo>/<commit>` and exists. Full mounter suite passes 
(95 tests).
   
   The chart was rendered both ways with `mounter.enabled=true`: without 
`cacheRoot` the DaemonSet has no `CACHE_ROOT` env, no extra volumeMount and no 
extra volume; with `cacheRoot` set it has all three, pointing at the configured 
path. `bin/k8s/tests/test_helm_values.sh` passes.
   
   Not exercised against a live mount: that needs restarting the mounter 
DaemonSet, which tears down the FUSE mounts under any in-flight execution, and 
the mounter image would need rebuilding since `mounter.py` is baked into it 
rather than mounted from a ConfigMap.
   
   ### Was this PR authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Opus 5


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to