He escrito una aplicación en C++, utilizando OpenGL y Cinder . Cuando lanzo el archivo de la aplicación desde el Finder, se ejecuta bien y sin problemas a 60FPS. Sin embargo, cuando la ejecuto usando launchctl load
el rendimiento es terrible, la interfaz de usuario es lenta y en general funciona a la mitad de los FPS deseados.
Me gustaría utilizar launchctl
para mantener la aplicación viva en caso de que se cuelgue o tenga que reiniciarse para actualizar el contenido. He leído este tutorial: http://www.launchd.info/ y encontré algunos ajustes de configuración que podrían ser útiles, a saber, Data, MemoryLock, NumberOfProcesses, ResidentSetSize y Stack, pero no estoy seguro de qué valores establecer, o si son siquiera útiles.
Una nota interesante, es que he notado que en el Monitor de Actividad, que el uso de la CPU es mucho menor cuando se utiliza 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: He encontrado una solución a este problema. En lugar de apuntar al ejecutable, podemos utilizar open
y proporcionar una ruta de acceso al archivo de la aplicación. No he averiguado cuál es la diferencia entre lanzar el ejecutable directamente, pero parece remediar el problema.
He aquí un ejemplo:
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-W</string>
<string>/Applications/Safari.app</string>
</array>