Perché un'applicazione viene eseguita così lentamente quando viene avviata con launchctl?

3

Ho scritto un'applicazione in C ++, usando OpenGL e Cinder . Quando avvio il file dell'app dal Finder, funziona in modo ottimale a 60FPS. Tuttavia, quando lo avvio utilizzando launchctl load le prestazioni sono terribili, l'interfaccia utente è lenta e in genere funziona a circa metà dell'FPS desiderato.

Vorrei utilizzare launchctl per mantenere attiva l'applicazione nel caso in cui si blocchi o debba riavviarsi per gli aggiornamenti dei contenuti. Ho letto questo tutorial: link e ho trovato alcune impostazioni di configurazione che potrebbero essere utili, ovvero Data, MemoryLock, NumberOfProcesses, ResidentSetSize & Stack, ma non sono sicuro di quali valori impostarli o se sono addirittura utili.

Una nota interessante, è che ho notato che nel Monitor attività, l'utilizzo della CPU è molto più basso quando si usa launchctl .

Ecco il mio file plist attuale.

<?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>

Aggiornamento: Ho trovato un modo per ovviare a questo problema. Piuttosto che puntare all'eseguibile, possiamo usare open e fornire un percorso al file dell'app. Non ho capito quale sia la differenza tra il lancio dell'eseguibile direttamente, ma sembra che rimedi al problema.

Ecco un esempio:

<key>ProgramArguments</key>
  <array>
  <string>/usr/bin/open</string>
  <string>-W</string>
  <string>/Applications/Safari.app</string>
</array>
    
posta JeremyFromEarth 14.04.2018 - 23:05
fonte

0 risposte

Leggi altre domande sui tag