He escrito una aplicación en C ++, utilizando OpenGL y Cinder . Cuando lanzo el archivo de la aplicación desde el Finder, funciona bien y sin problemas a 60FPS. Sin embargo, cuando lo lanzo con launchctl load
el rendimiento es terrible, la interfaz de usuario es lenta y en general se ejecuta en aproximadamente la mitad del FPS deseado.
Me gustaría usar launchctl
para mantener la aplicación activa en caso de que se bloquee o necesite reiniciarse para las actualizaciones de contenido. He leído este tutorial: enlace y encontré algunas configuraciones que podrían ser útiles, a saber, Data, MemoryLock, NumberOfProcesses, ResidentSetSize & Apile, pero no estoy seguro de en qué valores establecerlos, o si son útiles.
Una nota interesante es que he notado que en el Monitor de actividad, el uso de la CPU es mucho menor cuando se usa launchctl
.
Aquí está mi archivo plist actual.
<?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>
Actualización:
Me di cuenta de una solución para este problema. En lugar de apuntar al ejecutable, podemos usar open
y proporcionar una ruta al archivo de la aplicación. No he descubierto cuál es la diferencia entre lanzar el ejecutable directamente, pero parece remediar el problema.
Aquí hay un ejemplo:
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-W</string>
<string>/Applications/Safari.app</string>
</array>