Administration native sur le Mac, réencodage sélectif et aide intégrée
- admin.sh : RTG lancé directement sur le Mac (plus de conteneur), nginx joint l'interface par host.docker.internal:8765 ; variante conteneur conservée (admin-docker.sh, docker-compose-conteneur.yml) - Compression : réglages lus dans les fichiers (CRF, codec), refaire seulement le 1080p ou le 720p, seulement si les réglages ont changé ; réglages vidéo propres à chaque voyage ; « Compression actuelle » affichée - Plus d'arrêt automatique après 2 h d'inactivité (--arret-inactif, 0 par défaut) ; arrêt propre qui attend la fin des encodages en cours - Aide contextuelle dans l'interface (rtg/interface/aide) ; README centré sur l'installation et la mise en place - Cœurs attribués au conteneur détectés (cgroup) et signalés Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mf2kATMtqVABHSYdxJMnim
This commit is contained in:
1 parent
b54ae69b19
commit
ada3d76f50
38 files changed
+1067
-264
No files matched your search
+19
-1
@@ -83,7 +83,15 @@ def a_jour(sortie, source, force=False):
|
||||
|
||||
def coeurs_performance():
|
||||
"""Cœurs « performance » sur Apple Silicon (les cœurs d'efficience
|
||||
ralentiraient tout le pool de threads x265), sinon tous les cœurs."""
|
||||
ralentiraient tout le pool de threads x265), sinon les cœurs utilisables
|
||||
(dans un conteneur : ceux qui lui sont attribués)."""
|
||||
if hasattr(os, "sched_getaffinity") and sys.platform != "darwin":
|
||||
try:
|
||||
n = len(os.sched_getaffinity(0))
|
||||
quota = _quota_cgroup()
|
||||
return max(1, min(n, quota) if quota else n)
|
||||
except OSError:
|
||||
pass
|
||||
if sys.platform == "darwin":
|
||||
for cle in ("hw.perflevel0.logicalcpu", "hw.logicalcpu"):
|
||||
r = subprocess.run(["sysctl", "-n", cle], capture_output=True, text=True)
|
||||
@@ -92,6 +100,16 @@ def coeurs_performance():
|
||||
return os.cpu_count() or 4
|
||||
|
||||
|
||||
def _quota_cgroup():
|
||||
"""Limite de processeurs d'un conteneur (cgroup v2 « cpu.max »), ou None."""
|
||||
try:
|
||||
with open("/sys/fs/cgroup/cpu.max") as f:
|
||||
quota, periode = f.read().split()
|
||||
return None if quota == "max" else max(1, int(int(quota) / int(periode)))
|
||||
except (OSError, ValueError):
|
||||
return None
|
||||
|
||||
|
||||
def taille_lisible(octets):
|
||||
for unite in ("o", "Ko", "Mo", "Go"):
|
||||
if octets < 1024 or unite == "Go":
|
||||
|
||||
Reference in new issue
Block a user