Add more data to log in residency and direct submission

Related-To: NEO-4338

Change-Id: I146d6f6caddea540a6d48f86b07ad37d4045269e
Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz 2020-04-03 14:43:13 +02:00 committed by sys_ocldev
parent 74cb8dd41e
commit 11154bd9a1
4 changed files with 29 additions and 6 deletions

View File

@ -372,7 +372,14 @@ void DirectSubmissionHw<GfxFamily, Dispatcher>::createDiagnostic() {
disableCacheFlush = DebugManager.flags.DirectSubmissionDisableCacheFlush.get();
disableMonitorFence = DebugManager.flags.DirectSubmissionDisableMonitorFence.get();
uint32_t executions = static_cast<uint32_t>(DebugManager.flags.DirectSubmissionDiagnosticExecutionCount.get());
diagnostic = std::make_unique<DirectSubmissionDiagnosticsCollector>(executions, workloadMode == 1);
diagnostic = std::make_unique<DirectSubmissionDiagnosticsCollector>(
executions,
workloadMode == 1,
DebugManager.flags.DirectSubmissionBufferPlacement.get(),
DebugManager.flags.DirectSubmissionSemaphorePlacement.get(),
workloadMode,
disableCacheFlush,
disableMonitorFence);
}
}
}

View File

@ -11,13 +11,21 @@
namespace NEO {
DirectSubmissionDiagnosticsCollector::DirectSubmissionDiagnosticsCollector(uint32_t executions, bool storeExecutions)
DirectSubmissionDiagnosticsCollector::DirectSubmissionDiagnosticsCollector(uint32_t executions,
bool storeExecutions,
int32_t ringBufferLogData,
int32_t semaphoreLogData,
int32_t workloadMode,
bool cacheFlushLog,
bool monitorFenceLog)
: storeExecutions(storeExecutions) {
UNRECOVERABLE_IF(executions == 0);
executionList.resize(executions);
executionsCount = executions;
std::stringstream value;
value << std::dec << "executions-" << executions;
value << std::dec << "mode-" << workloadMode << "_executions-" << executions;
value << "_ring_" << ringBufferLogData << "_semaphore_" << semaphoreLogData;
value << "_cacheflush-" << cacheFlushLog << "_monitorfence-" << monitorFenceLog;
std::stringstream filename;
filename << "ulls_diagnostic_" << value.str() << ".log";
logFile = IoFunctions::fopenPtr(filename.str().c_str(), "at");

View File

@ -29,7 +29,13 @@ using DirectSubmissionExecution = std::vector<DirectSubmissionSingleDelta>;
class DirectSubmissionDiagnosticsCollector {
public:
DirectSubmissionDiagnosticsCollector(uint32_t executions, bool storeExecutions);
DirectSubmissionDiagnosticsCollector(uint32_t executions,
bool storeExecutions,
int32_t ringBufferLogData,
int32_t semaphoreLogData,
int32_t workloadMode,
bool cacheFlushLog,
bool monitorFenceLog);
~DirectSubmissionDiagnosticsCollector() {
storeData();

View File

@ -32,7 +32,9 @@ WddmDirectSubmission<GfxFamily, Dispatcher>::WddmDirectSubmission(Device &device
if (device.getPreemptionMode() != PreemptionMode::Disabled) {
commandBufferHeader->NeedsMidBatchPreEmptionSupport = true;
}
perfLogResidencyVariadicLog(wddm->getResidencyLogger(), "Starting Wddm ULLS\n");
perfLogResidencyVariadicLog(wddm->getResidencyLogger(), "Starting Wddm ULLS. Placement ring buffer: %d semaphore %d\n",
DebugManager.flags.DirectSubmissionBufferPlacement.get(),
DebugManager.flags.DirectSubmissionSemaphorePlacement.get());
}
template <typename GfxFamily, typename Dispatcher>
@ -85,8 +87,8 @@ bool WddmDirectSubmission<GfxFamily, Dispatcher>::submit(uint64_t gpuAddress, si
template <typename GfxFamily, typename Dispatcher>
bool WddmDirectSubmission<GfxFamily, Dispatcher>::handleResidency() {
perfLogResidencyVariadicLog(wddm->getResidencyLogger(), "ULLS residency wait\n");
wddm->waitOnPagingFenceFromCpu();
perfLogResidencyVariadicLog(wddm->getResidencyLogger(), "ULLS residency wait exit\n");
return true;
}