使用launchctl启动时,为什么应用程序运行速度如此之慢?


3

我用C ++编写了一个使用OpenGL和Cinder的应用程序。当我从Finder启动应用程序文件时,它在60FPS下运行良好且流畅。然而,当我使用launchctl load性能很糟糕的时候启动它时,用户界面很慢,一般来说它的运行速度大约是所需FPS的一半。

我想用它launchctl来保持应用程序在它崩溃或需要重新启动以进行内容更新时保持活动状态。我已经阅读了本教程:http//www.launchd.info/并找到了一些可能有用的配置设置,即Data,MemoryLock,NumberOfProcesses,ResidentSetSize和Stack,但我不确定要设置这些值的值at,或者如果它们甚至是有用的。

一个有趣的注意事项是,我注意到在Activity Monitor中,使用时CPU使用率要低得多launchctl

这是我当前的plist文件。

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

更新: 我想出了解决这个问题的方法。我们可以使用open并提供app文件的路径,而不是指向可执行文件。我还没弄清楚直接启动可执行文件之间有什么区别,但它似乎可以解决问题。

这是一个例子:

<key>ProgramArguments</key>
  <array>
  <string>/usr/bin/open</string>
  <string>-W</string>
  <string>/Applications/Safari.app</string>
</array>

plist文件在哪里?(LaunchDaemon或LaunchAgent)
JBis

它是在LaunchAgent
JeremyFromEarth

Answers:


4

我遇到了同样的问题,并通过添加ProcessType标签解决了这个问题。

    <key>ProcessType</key>
    <string>Interactive</string>

我一直在从各种角度来看这个问题,比较cpu / gpu的使用情况,归因于系统资源等(因为你必须拥有它)并且只是不明显差异是什么,即为什么性能会受到影响。在手册页中指出:

该可选键在较高层次上描述了作业的预期目的。系统将根据工作类型应用资源限制。如果未指定,系统将对作业应用光源限制,限制其CPU使用率和I / O带宽。

在查看流程属性时,您必须经历过这种限制并不是非常明显。

当我通过电子邮件向launchd.info的优秀人员发送电子邮件时,我得到了这个解决方案。希望这对你有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.