我们在VxWorks 5.5.1上运行了一个相当大的应用程序,现在已经开发和修改了大约10年。我们有一些简单的本土工具来表明我们没有使用太多太多内存或太多多处理器,但是我们对多少空间没有很好的感觉我们实际上有。它开始难以对未来的增强做出估计。
有人对如何配置此类系统有任何建议吗?我们从来没有太多运气让Wind River工具起作用。
奖励积分:另一个复杂因素是我们的系统在不同时间有不同的行为;在启动期间它会做很多事情,然后它会相对空闲,除了短暂的活动爆发。如果有一个剖析器以某种编程方式记录状态信息,我认为这也非常有用。
FWIW,这是用GCC编译的,完全用C语言编写。
答案 0 :(得分:3)
我已经对各种软件进行了大量的性能调整,包括嵌入式应用程序。我不会讨论内存分析 - 我认为这是一个不同的问题。
我只能猜出“众所周知”这个想法的起源,以找出衡量各个部分性能所需的性能问题。这是一种自上而下的方法,类似于政府试图通过细分来控制预算浪费的方式。恕我直言,它不能很好地工作。 测量是可以的,看看你做了什么有所作为,但它很难告诉你要修复什么。
什么是好告诉你要解决的是一种自下而上的方法,在这种方法中,你可以检查一个代表性的微观单位样本,并找出<的完整解释< em>为什么每个人都被花掉了。这适用于简单的统计原因。如果有一个原因可以保存一些百分比(例如40%)的样品,平均40%的样品会显示它,并且它不需要大量的样品。它确实要求您仔细检查每个样品,而不仅仅是将它们聚合成更大的一束。
作为一个历史的例子,这就是哈里杜鲁门在美国卷入二战爆发时所做的事情。国防工业存在极大的浪费。他刚上车,开车去工厂,采访了站在那里的人。然后他又回到了美国参议院,解释了问题究竟是什么,并解决了问题。
也许这比你想要的更多。具体而言,this is the method I use和this is a blow-by-blow example of it。
补充:我想通过测量找到的想法很自然。在82年左右,我正在研究嵌入式系统,我需要做一些性能调整。硬件工程师提出在我可以阅读的电路板上放一个定时器(从他的大量提供)。以下他认为发现性能问题需要时机。我感谢他并拒绝了,因为那时我知道并信任随机停止技术(使用在线仿真器完成)。
答案 1 :(得分:1)
如果您有辅助时钟可用,您可以使用SPY实用程序(可通过config.h文件配置),它可以非常粗略地显示使用CPU的任务。
关于它的好处是它不需要连接到Tornado环境,你可以从内核shell中使用它。
否则,btpierre过去使用taskHookAdd的建议已成功使用。
答案 2 :(得分:0)
我曾经使用基于taskSwitchHookAdd和相关函数(删除钩子等)的本地构建的监视实用程序运气好的系统。
“简单地”使用它来跟踪给定任务运行的滴答数。我意识到这是用于分析的相当大规模的信息,但根据您的需要它可能是有用的。
要查看每个任务使用的cpu%,请计算分配给每个任务的滴答百分比。
要查看您有多少空间,请添加一个优先级最低的“空闲”任务,该任务只执行“while(1){}”,并查看为其分配了多少cpu%。粗略地说,那就是你的净空。