J'ai écrit une application en C++, utilisant OpenGL et Cendres . Lorsque je lance l'application à partir du Finder, elle fonctionne correctement à 60FPS. Cependant, lorsque je le lance en utilisant launchctl load
les performances sont terribles, l'interface utilisateur est lente et en général il fonctionne à environ la moitié du FPS désiré.
J'aimerais utiliser launchctl
pour maintenir l'application en vie au cas où elle tomberait en panne ou devrait être redémarrée pour des mises à jour de contenu. J'ai lu ce tutoriel : http://www.launchd.info/ et j'ai trouvé quelques paramètres de configuration qui pourraient être utiles, à savoir Data, MemoryLock, NumberOfProcesses, ResidentSetSize & Stack, mais je ne sais pas à quelles valeurs les fixer, ni même si elles sont utiles.
J'ai remarqué dans le moniteur d'activité que l'utilisation du processeur est beaucoup plus faible lorsque l'on utilise la fonction launchctl
.
Voici mon fichier plist actuel.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>PROCESS_ID</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>ThrottleInterval</key>
<integer>30</integer>
<key>Program</key>
<string>PATH_TO_EXECUTABLE</string>
</dict>
</plist>
Mise à jour : J'ai trouvé une solution à ce problème. Plutôt que de pointer vers l'exécutable, nous pouvons utiliser open
et indiquer le chemin d'accès au fichier de l'application. Je n'ai pas encore compris quelle était la différence entre le lancement direct de l'exécutable, mais cela semble remédier au problème.
En voici un exemple :
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-W</string>
<string>/Applications/Safari.app</string>
</array>