我有一套在 Linux 上运行的实时金融交易程序。该代码是用 C++ 编写的,并且是数据库密集型 (MySQL)。我们尝试在重要的地方使用内存表。虽然我总是关心延迟,但在一天中的某些时候,只有原始吞吐量才是瓶颈。
我怎样才能正确地分析这个系统?我希望能够查看(a)运行我的应用程序代码,即我的应用程序代码 CPU 绑定,(b)在 MySQL 中运行,或(c)在 OS 系统调用中运行所花费的时间百分比,例如与网络相关的调用. 我还想看看,至少对于数据库来说,等待磁盘的时间。
我还意识到针对延迟进行分析和优化与针对吞吐量进行分析和优化是非常不同的。为了优化吞吐量,我想一个可以测量上述情况的传统分析器是合适的。为了优化延迟,我认为只记录微秒准确的时间戳就足够了,但是当我看到异常值时,仍然很难确定所有时间都花在了哪里。
我是否以正确的方式思考这个问题?有哪些工具可以帮助我?