¿Por qué una aplicación se ejecuta tan lentamente cuando se inicia con launchctl?

3

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>
    
pregunta JeremyFromEarth 14.04.2018 - 23:05

0 respuestas

Lea otras preguntas en las etiquetas