Как я могу получить доступ к статистике потоков gem5? - PullRequest
2 голосов
/ 05 марта 2019

Я хочу использовать gem5 с некоторыми из моих работ, и у меня есть очень общий вопрос относительно его возможностей.

Мой вопрос, используя gem5, могу ли я получить статистику по поведению / использованию системных ресурсов отдельными потоками, либо в режиме SE, либо в режиме FS. Например, если в моем приложении запущено 2 потока, могу ли я увидеть, что поток 1 использует циклы X в ЦП 1, циклы Y в ЦП 2 и т. Д., А поток 2 использует циклы Z в ЦП 3 и т. Д. Если это возможно, это также распространяется на использование кэша, использование памяти и т. д.?

Я видел следующие вопросы: Доступ к логическому (программному) идентификатору потока в gem5 , но я думаю, что использование статистики аппаратных потоков подойдет для нашего варианта использования.

Я вижу, что класс ThreadState в src / cpu / thread_state.hh имеет следующие поля:

/** 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;

Это похоже на то, что я мог бы использовать. Кто-нибудь знает, могут ли эти статистические данные быть легко выведены на поток в файле статистики?

Спасибо!

1 Ответ

1 голос
/ 05 марта 2019

Я сам этого не делал, но сделаю следующие обоснованные предположения:

  • se.py: SE имеет ограничение, что он может запускать только один поток на ядро, поэтому я подозреваю, что это будет отображаться непосредственно на статистику для каждого ядра

  • fs.py: определение потока зависит от ОС, поэтому вам потребуется какая-то гостевая поддержка.

    В контексте трассировки ядра ARM Linux, например, CONFIG_PID_IN_CONTEXTIDR показывает в журналах: Доступ к логическому (программному) идентификатору потока в gem5 , но не уверен, насколько легко будет получить статистику

Так что, скорее всего, se.py будет более легким подходом.

...