Sommaire
FAQ : combien de builds concurrents sur un Mac partagé ?
La concurrence est le moyen le plus rapide de transformer un nœud M4 réactif en machine saccadée. Pour le partage multi-utilisateurs, tranchez « combien de builds » comme une décision de stabilité, pas comme un benchmark.
- Compilation lourde / archive Xcode : 1 job actif par nœud. Un second job lourd saturations souvent RAM et E/S et rend SSH ou VNC inutilisable.
- Tâches légères (lint, petits tests) : jusqu’à 2 en parallèle si le CPU soutenu reste sous ~75 % et la RAM libre au-dessus de ~8 Go après macOS.
- VNC + CI : gardez 1 build lourd côté CI et planifiez les archives ; Simulateur et WindowServer partagent le même budget GPU / session graphique.
Si le temps d’attente médian en file dépasse environ 15 minutes sur les journées ouvrées, vous êtes sous-dimensionnés : ajoutez un nœud ou séparez pool « interactif » et « CI seule » plutôt que d’augmenter la concurrence sans marge.
FAQ : quelle stratégie de file pour un petit pool Mac ?
La file évite l’effet « cinq personnes, deux machines ». Au début, vous avez surtout besoin d’état visible et d’un comportement prévisible.
- FIFO : simple et équitable. Associez une profondeur max d’environ 20 jobs en attente ; au-delà, refusez avec une erreur explicite pour éviter les clients bloqués sans feedback.
- Priorités avec plafonds : ex. releases priorité 1, au plus 2 en attente ; branches feature priorité 2, au plus 10 en attente — pour limiter la famine des basses priorités.
- Créneaux horaires : journée pour PR courtes ; fenêtre nuit (ex. 22h–6h) pour archives longues ou lots lourds afin de stabiliser la latence diurne.
Avec OpenClaw ou un orchestrateur sur MeshMac, alignez la sémantique avec file de tâches et retry et déploiement unifié et sync des tâches afin que les retries ne dupliquent pas le travail ni ne coincent le pool.
FAQ : comment allouer quotas (CPU, RAM, disque) ?
Les quotas sont le contrat qui empêche un dépôt de remplir le disque ou un développeur de monopoliser les slots de compilation.
- Slots par utilisateur ou projet : par défaut 1 job en cours, montée à 2 seulement pour tâches légères si la supervision montre de la marge.
- Disque : plafonner DerivedData / artefacts à ~30–80 Go par projet ; nettoyage auto au-delà de ~80 % du plafond. Alerte si l’espace libre système < ~15 % ou < ~40 Go (prendre le plus contraignant).
- RAM : conserver 8–16 Go de tête pour macOS, WindowServer et l’indexation Xcode ; si swap fréquent, baissez la concurrence ou montez de gamme.
- Propriété des chemins : documentez qui écrit où (
/builds/shared/…vs bac à sable par utilisateur). Croisez avec la FAQ SSH, VNC et isolation et le guide de nœud de build partagé.
Les quotas soutiennent aussi la stabilité : des limites prévisibles valent mieux qu’un grand ménage après incident « disque plein ».
FAQ : quels conflits sur Mac distants partagés — et comment les corriger ?
Beaucoup d’« échecs mystérieux » sont des problèmes de coordination, pas de matériel.
- Même copie de travail : deux pipelines sur un clone → état Git ou artefacts corrompus. Corrigez par répertoire unique par job (hash branche + numéro de build) ou clones éphémères.
- Simulateur / tests UI : courses au boot ou contention GUI. Sérialisez les suites, privilégiez destinations headless, ou dédiez un nœud aux tests UI.
- Signature & Trousseau : invites bloquantes en CI sans tête. Keychains ou identités par job / par utilisateur, déverrouillage non interactif, calendrier de rotation des certificats.
- Ports & services : collisions de proxys ou serveurs locaux. Plage de ports dynamiques et health checks qui échouent vite sur erreur de bind.
Si le même conflit revient chaque semaine, traitez-le comme signal d’architecture : pools séparés, nœud supplémentaire, ou limites plus nettes en collaboration multi-nœuds sur mesh Mac.
FAQ : combien de temps garder les journaux sur le pool ?
Les logs sont « bon marché » jusqu’à ce qu’ils remplissent le disque et ralentissent tout le monde. Utilisez des niveaux de rétention :
- Métadonnées CI structurées (id job, commit, durée, résultat) : 14–30 jours sur nœud ou stockage objet.
- Logs verbeux (bundles xcodebuild, console complète) : 7 jours par défaut ; prolongez si la conformité l’exige.
- Rotation : quotidienne ; compression au-delà d’environ 48 h. Conservez au moins un bundle complet par release en échec jusqu’à la livraison.
Peu de rétention sur le nœud + envoi vers stockage durable équilibre exploitabilité (debug) et stabilité (E/S, espace libre).
Mémo seuils (à copier dans le runbook)
| Domaine | Seuil exemple | Pourquoi |
|---|---|---|
| Concurrence build lourd | 1 par nœud | Protège RAM, E/S et sessions interactives |
| Concurrence tâches légères | Jusqu’à 2 si CPU < ~75 %, RAM libre > ~8 Go | Parallélisme borné sans saturation |
| Profondeur max de file | ~20 jobs en attente (échec rapide au-delà) | Évite les files d’attente invisibles |
| Alerte attente médiane | > 15 min de façon soutenue | Signal pour capacité ou replanification |
| Alerte disque libre | < 15 % ou < 40 Go | Limite échecs de build et perte de logs |
| Rétention logs verbeux | 7 jours (compression après ~48 h) | Équilibre debug et santé disque |
| Métadonnées CI | 14–30 jours | Tendances, audits, revue d’incident |
Checklist conflits & exploitation (pool multi-utilisateurs)
À parcourir à l’onboarding d’un nouveau projet ou après un incident :
-
1
Isolation des espaces de travail : chaque job a un répertoire dédié ; pas de clone mutable partagé entre jobs concurrents.
-
2
Visibilité de la file : tableau de bord ou CLI avec position, motif de refus si plafond ; l’échec d’enqueue est explicite.
-
3
Politique Simulateur / GUI : quel nœud exécute les tests UI ; sérialisation ou matériel dédié documentés.
-
4
Runbook signature : déverrouillage non interactif, calendrier de rotation, propriétaire unique des certificats de distribution.
-
5
Automatisation du nettoyage : hebdomadaire DerivedData / tmp ; taille simulateurs ; vérification rotation des logs.
-
6
Baselines stabilité : aligner keepalive SSH/VNC avec la FAQ stabilité, latence et SLA et la checklist reconnexion.
Synthèse, lectures liées et prochaine étape
Un pool Mac sain repose moins sur le nombre de cœurs que sur des plafonds de concurrence clairs, une file honnête, des quotas disque et RAM et des runbooks sensibles aux conflits. Partez conservateur (un build lourd par nœud, file bornée, rétention courte sur machine avec export), puis scalez quand les métriques — pas les plaintes — le demandent.
Parcourez la liste des articles du blog (collaboration, MeshMac, OpenClaw) ; sur l’accueil Meshmac, comparez les offres. Pour appliquer ces seuils sur des nœuds gérés, vous pouvez consulter les tarifs et louer un Mac sans créer de compte : choisissez une offre, vérifiez SSH/VNC, puis invitez l’équipe une fois ces règles intégrées à votre documentation interne.
Déployez vos règles de pool sur des Mac distants
Meshmac propose des nœuds Mac avec SSH et VNC, adaptés aux pools petite équipe et à la CI. Enrichissez cette FAQ avec le guide SSH vs VNC, le cluster permissions et bascule et la sync d’équipe MeshMac, puis choisissez une capacité cohérente avec votre politique de file et de concurrence.
Partez des seuils de cet article, branchez votre file et vos journaux en conséquence, et passez au multi-nœud lorsque l’attente médiane ou la pression disque franchit les lignes d’alerte — nos nœuds sont pensés pour s’insérer dans ce playbook.