Matrix für Client-Cache, MDS-Session-Timeouts, rsync-Drosseln, 1TB/2TB-Wasserstände und Mehrprojekt-Buildlocks. Vertiefung: JuiceFS S3-Caches, SeaweedFS rsync, Artefakt-rsync, Nomad-Buildlocks.
Drei operative Engpässe
- Client-Cache: Hohe
client_cache_size-Werte beschleunigen sequenzielle Reads, verdecken aber MDS-Stalls; Builds sehen veraltete Verzeichnislisten, bis der Cache explizit invalidiert wird. - MDS-Session: Zu lange Timeouts binden Metadaten-Caps, wenn IDE- oder rsync-Prozesse hängenbleiben; kurze Werte erhöhen Reconnects über WAN-Regionen hinweg.
- rsync und APFS: Ohne bwlimit und ionice sättigen Artefakt-Syncs die lokale Platte und triggern Spotlight- oder Time-Machine-Hintergrundjobs parallel zu clang.
Entscheidungsmatrix CephFS-Client, MDS und rsync
Die Tabelle ist ein Startpunkt für dedizierte Apple-Silicon-Knoten; produktive Freigaben erfordern Messung von RTT, MDS-Auslastung und freiem APFS-Speicher je Mandant.
| Profil | Client-Cache | MDS-Session s | rsync KiB | Streams | 1TB Gate | 2TB Gate |
|---|---|---|---|---|---|---|
| Interaktiv | moderat, TTL kurz | vierhundertfünfzig | achtzehntausend | eins | Warnung bei achtzig Prozent | Stop bei neunzig Prozent |
| CI Batch | groß, invalidierbar | sechshundert | fünfunddreißigtausend | zwei | gelb bei fünfundsiebzig Prozent | Queue freeze bei achtzig Prozent |
| Canary Hot | klein, strikt | dreihundert | zweiundzwanzigtausend | eins | sofort Alarm | Promotion nur mit Freigabe |
| DR Kalt | maximal, read-only | neunhundert | sechzigtausend | drei | Archivtrim bei siebzig Prozent | Healer pausieren bei achtzig Prozent |
| Steuergröße | Zielmetrik | Startwert | Sicherheit | Stabilität | Audit |
|---|---|---|---|---|---|
| mds_session_timeout | Cap-Druck | vierhundertfünfzig bis sechshundert Sekunden | kein Root-Persist | WAN-tolerant | MDS-Log Slice |
| client_cache_size | RAM-Budget | einhundertachtzig bis zweihundertfünfzig MiB interaktiv | Quota je Tenant | kein OOM | monatlicher Report |
| flock-Offset | Mehrprojekt-CI | eine Datei pro Pipeline-ID | keine Kreuzlocks | deterministisch | Lock-Pfad im Ticket |
| freier Speicher | APFS pro Mount | mindestens zwanzig Prozent Reserve | Snapshot-Policy | grün | täglicher Export |
Ausführbare Beispiele: Cache-Größe und rsync-Drossel
Passen Sie Pfade an Ihre Mandantenstruktur an; Werte spiegeln die Matrix-Spalten CI Batch wider und sind auf clustervps-Knoten als Planungsgröße gedacht.
# ceph.conf (Ausschnitt, Client) [client] client_cache_size = 268435456 client_oc_max_dirty = 128 mds_session_timeout = 600
ionice -c3 nice -n10 rsync -az --partial --delete-delay --bwlimit=35000 \\ --info=stats2 ./artifacts/ios/ ceph-build-mac:/Volumes/CephFS/tenant-a/ci-artifacts/
Sechs Rollout-Schritte für Mehrregion und Mehrprojekt
- Topologie fixieren: Primären CephFS-Mount je Region dokumentieren, MDS-Standby notieren, Latenz-Baselines in der Konsole hinterlegen.
- Cache kalibrieren: client_cache_size aus Matrix setzen, interaktive Profile kleiner halten als CI, und geplante Invalidierungen nach großen Branch-Switches einplanen.
- MDS-Session abstimmen: mds_session_timeout gegen mittlere Compiler-Laufzeiten legen; bei WAN-Peaks konservativer werden und Canary-Knoten strikter limitieren.
- rsync entkoppeln: bwlimit und ionice ausführen, parallele Streams mit flock serialisieren, große Binärpakete nachts verschieben.
- Mehrprojekt-Buildlocks: Pro Pipeline eine flock-Datei unter
/var/tmp/buildlocks/<projekt>.lockverwenden, damit Xcode-, Gradle- und rsync-Jobs nicht dieselbe DerivedData-Hierarchie zerstören. - Abnahme: Künstliche Last fahren, 1TB- und 2TB-Schwellen aus der Matrix verifizieren, MDS-Slow-Requests und freien APFS-Speicher im Post-Mortem archivieren.
1TB- und 2TB-Wasserstände auf geteilten Mac-Clustern
Gemeinsames NVMe für CephFS-Client-Cache und lokale Builds erzwingt strengere Kappen; Hot- und Cold-Pfade trennen, sobald Gelb wiederholt.
FAQ: MDS meldet slow requests
Typische Ursachen. Zu viele kleine Dateien ohne Batch, Client-Cache verdeckt echte Latenz, oder Session-Timeouts sind zu kurz für lange Link-Schritte.
Maßnahmen. rsync drosseln, flock serialisieren, mds_session_timeout anheben, Verzeichnisse stichprobenartig prüfen.
Zitierfähige Leitplanken
- IO-Budget: Zweiten rsync pausieren, wenn CephFS-Metadaten-p90 zwanzig Prozent über der Baseline liegt.
- Cache: Nach großen Rebases client_cache_size testweise halbieren und Metriken vergleichen.
- Buildlocks: flock immer mit absolutem Pfad und Projektpräfix; keine gemeinsame Lockdatei für alle Pipelines.
- Hilfe: Supportpfade in der Hilfe; Zahlen sind Planungsgrößen, keine Garantiewerte.
Zusätzliche Mac mini M4 für Ceph-Clients und rsync-Gates mieten
Buchen Sie weitere dedizierte Mac mini M4-Instanzen, trennen Sie CephFS-Clients pro Team und halten Sie 1TB-/2TB-Wasserstände mit separaten Knoten stabil — öffentliche Pakete auf der Preisseite, Detailfragen in der Hilfe, Buchung über den Mietflow.