如何访问gem5线程统计信息?

时间:2019-03-05 15:53:34

标签: gem5

我希望在某些工作中使用gem5,并且对其功能有一个非常笼统的问题。

我的问题是,使用gem5,我可以在SE或FS模式下获取有关单个线程的行为/系统资源使用情况的统计信息。例如,如果我的应用程序中有2个线程在运行,我是否可以看到线程1在CPU 1上使用X个周期,在CPU 2上使用Y个周期,等等,而线程2在CPU 3上使用Z个周期,等等。它还扩展到缓存使用率,内存使用率等?

我看到了以下问题:Accessing logical (software) thread ID in gem5,但是我认为仅使用硬件线程统计信息就可以满足我们的用例。

我看到src / cpu / thread_state.hh中的ThreadState类具有以下功能:

/** Number of instructions committed. */
Counter numInst;
/** Stat for number instructions committed. */
Stats::Scalar numInsts;
/** Number of ops (including micro ops) committed. */
Counter numOp;
/** Stat for number ops (including micro ops) committed. */
Stats::Scalar numOps;
/** Stat for number of memory references. */
Stats::Scalar numMemRefs;

这看起来像是我可以使用的东西。有人知道这些统计信息是否可以轻松地在stats文件中的每个线程中输出吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我自己还没有做过,但是我会做出以下有根据的猜测:

  • se.py:SE有一个限制,即每个内核只能运行一个线程,因此我怀疑这将直接显示在每个内核的统计信息上

  • fs.py:线程的定义取决于操作系统,因此您需要某种来宾支持。

    例如,在ARM Linux内核跟踪的上下文中,CONFIG_PID_IN_CONTEXTIDR在日志上显示:Accessing logical (software) thread ID in gem5,但不确定获取统计信息有多么容易

因此se.py可能是更简单的方法。