Failure Emulator Profiler Results - Database Structure

Applies to AQTime 8.81, last modified on January 18, 2022

When you export the Failure Emulator profiler results to a database, AQTime creates a number of tables in it. The contents of most of these tables correspond to the contents of AQTime panels in which the profiling results are displayed. This topic describes the structure of the database table that contains the exported Failure Emulator profiler results.

The database consists of the following tables:

The relationship between the mentioned tables is illustrated in the image below. This relationship is similar to the relationship of the data in AQTime’s Explorer, Report and Details panels that hold the Failure Emulator profiler results.

Relationship between database tables

Click the image to enlarge it.

The root table of the database is the INSTANCES table. It contains a list of all exported result sets and is shared by AQTime’s profilers. Each result set is identified by the INST_ID field value, which is unique among the table. All other database tables also have the INST_ID field that indicates the result set to which data of a specific table item belongs.

Since AQTime traces routine calls by threads, the database contains a special FAILURE_EMULATOR_THREADS table that holds the list of application threads traced by the Failure Emulator profiler. The FAILURE_EMULATOR_FAILURE_OBJECTS table, in turn, have the PARENT_ID field that indicates the thread where a specific failure occurred.

Note: The ID and REC_ID columns of the FAILURE_EMULATOR_xxxx tables are not key columns. They may contain repetitive values. In queries you should use these values along with the INST_ID value (the result set identifier).

Below is detailed information about the tables.

The INSTANCES table

This table contains a list of exported result sets. Each result set is identified by the INST_ID value.

Field Name Description
CAPTION String. The name of the result set. This is the same name that is displayed in the Explorer panel.
COUNTER_DESCRIPTION String. The name of the counter that was used during profiling. For example, Elapsed Time, CPU Cache Misses, and so on. For more information about counters, see Counters Overview.
COUNTER_FREQUENCY Decimal. The counter frequency.
COUNTER_NAME String. The type of the counter used during profiling. This field can contain one of the following values:
  • Branches
  • Conflicts
  • Faults
  • Misses
  • Replays
  • Switches
  • Time
INST_ID Integer. The result set’s identifier.

The FAILURE_EMULATOR_FAILURE_OBJECTS table

This table contains information about failures emulated while profiling the application. The fields of this table correspond to the columns of the table shown in the Report panel.

Field Name Description
COL_FAILURE_TYPE String. The type of the emulated failure. This field corresponds to the Failure Type column of the Report panel.
COL_FUNCTION_NAME String. The name of the function to which the emulated failure belongs. This field corresponds to the Function Name column of the Report panel.
COL_RETURN_VALUE String. The value returned by the function specified in the COL_FUNCTION_NAME column. This field corresponds to the Return Value column of the Report panel.
COL_TIME String. Time when the appropriate failure was emulated. This field corresponds to the Time column of the Report panel.
COL_USER_PARAMETER String. The parameters for the emulated failure specified by the user before profiling the application. This field corresponds to the User Parameter column of the Report panel.
ID Integer. The failure emulation’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given FAILURE_EMULATOR_FAILURE_OBJECTS table item belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table.
PARENT_ID Integer. The identifier of the thread that caused this failure. This is the same value as the thread ID value in the FAILURE_EMULATOR_THREADS table.
REC_ID Integer. The failure emulation’s identifier within the failure objects list.

The FAILURE_EMULATOR_FAILURE_STACK table

This table contains information about the stack of the emulated failure. This stack contains functions that belong to the profiling area. If the application was compiled without debug information, this stack contains only the name of the called API function.

The fields of this table correspond to the columns of the Failure Stack tabbed page of the Details panel.

Field Name Description
COL_HITCOUNT Decimal. Number of calls to the appropriate function that were profiled.
COL_LINERID Integer. The line's identifier in the FAILURE_EMULATOR_META_LINES table.
COL_ROUTINERID Integer. The routine's identifier in the FAILURE_EMULATOR_META_ROUTINES table.
ID Integer. The failure stack’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given FAILURE_EMULATOR_FAILURE_STACK table item belongs. This is the same value as the results’ INST_ID value in the INSTANCES table.
PARENT_ID Integer. The identifier of the failure emulation to which the call stack belongs. This is the same value as the failure emulation’s ID value in the FAILURE_EMULATOR_FAILURE_OBJECTS table.
REC_ID Integer. The failure stack’s identifier within the list of failure objects specified in the FAILURE_EMULATOR_FAILURE_OBJECTS table.

The FAILURE_EMULATOR_FUNCTION_PARAMETERS table

This table contains information about the stack of the emulated failure. The fields of this table correspond to the columns of the Function Parameters tabbed page of the Details panel.

Field Name Description
COL_PARAM_NAME String. The name of the parameter that belongs to the function in which the failure occurred. This field corresponds to the Param Name column of the Details panel.
COL_PARAM_NO String. The ordinary number of the parameter specified in the COL_PARAM_NAME column. This field corresponds to the Param No column of the Details panel.
COL_PARAM_TYPE String. The type of the parameter specified in the COL_PARAM_NAME column. This field corresponds to the Param Type column of the Details panel.
COL_PARAM_VALUE String. The value of the parameter specified in the COL_PARAM_NAME column. This field corresponds to the Param Value column of the Details panel.
ID String. The identifier of the function parameter within the results set.
INST_ID Integer. Specifies the identifier of the result set. This is the same value that is stored in the INST_ID field of the INSTANCES table.
PARENT_ID Integer. The identifier of the failure emulation to which the function parameter corresponds. This is the same value as the failure emulation’s ID value in the FAILURE_EMULATOR_FAILURE_OBJECTS table.
REC_ID Integer. The parameter's identifier within the list of failure objects specified in the FAILURE_EMULATOR_FAILURE_OBJECTS table.

The FAILURE_EMULATOR_META_LINES table

This table stores the information about which code lines of the profiled module belongs to a certain routine. This table is related with the FAILURE_EMULATOR_META_ROUTINES table.

Table Field Name Description
COL_SOURCE_LINE Integer. This field stores the number of a code line that belongs to a specific routine.
ID Integer. Identifier of the line within the result set.
INST_ID Integer. Specifies the identifier of the result set. This is the same value that is stored in the INST_ID field of the INSTANCES table.
PARENT_ID Integer. Identifier of the routine, to which the source line belongs. This is the same value that is stored in the ID field of the FAILURE_EMULATOR_META_ROUTINES table.
REC_ID Integer. The identifier of a specific line within the list of routine’s lines.

The FAILURE_EMULATOR_META_ROUTINES table

This table stores results for each single routine that was included in profiling tasks whose results were exported.

Table Field Name Description
COL_ACTIONACTIVE Integer. Specifies whether the routine is an active action. This field contains -1 if the routine is an action and this action is enabled. Otherwise it contains 0. This value is not displayed in the Report panel.
COL_ACTIONDISABLEDROUTINE Not used. Always contains 0.
COL_ACTIONPLACEMENT Integer. Specifies the action’s execute type. This field can contain one of the following values:
  • 0 - The action is executed at the beginning of the routine.
  • 1 - The action is executed at the end of the routine.

This value is not displayed in the Report panel.

COL_ACTIONTYPE Integer. Specifies the action type. This field can contain one of the following values:
  • 0 - Enable profiling
  • 1 - Disable profiling
  • 2 - Get results
  • 3 - Clear results

This value is not displayed in the Report panel.

COL_ADDRESS Decimal. Routine’s address in memory.
COL_ANALYSIS_RESULT String. Specifies if the routine was instrumented or not. If the routine was instrumented, this column is empty. Otherwise, the column displays a short description why the routine was not instrumented:

Less than 5 bytes - The routine occupies less than 5 bytes in memory.

No line info - The routine was added to a line-level area, but the debug information stores no info about routine lines.

Unsafe code - AQTime was not able to instrument the routine safely. This typically occurs when the routine’s binary code is intermixed with data areas.

No ret instruction - The routine’s binary code does not contain the ret instruction (this may happen if the routine finishes with the jmp instruction).

Duplicated code - The routine whose code coincides with code of another routine.

COL_CLASS_NAME Name of the class where the method is defined.
COL_CODE_TYPE String. Specifies the type of the routine’s code. The following values are possible:
  • MSIL - Managed-code routine with MSIL (Microsoft Intermediate Language) code.
  • x64 - 64-bit code routine.
  • x86 - Native-code (unmanaged) routine.
  • Pseudo - Pseudo routine that was created by the context. For example, <JIT Compiler>, <Garbage Collector>, <Unknown PInvoke> or <Root>.
  • PInvoke - Native-code routine for which there is a declaration in one of managed modules and that is called from within the unmanaged code.
  • NGen - Managed routine that was compiled by the ngen utility (CLR Native Image Generator) with the /prof argument in its command line. The ngen compilation means the routine was compiled before the application starts.
  • Script - The routine belongs to a script that was profiled along with the host application.
COL_HIT_COUNT Integer. The number of routine calls that were profiled.
COL_MODULE_NAME String. The name of the module which contains the profiled routine.
COL_NAMESPACE String. Namespace of the method’s class (this column is used for managed routines only).
COL_PROFILELINES Integer. This field indicates whether a specific routine was profiled by lines.
COL_ROUTINE_NAME String. Method name.
COL_SOURCE_FILE Name of the source file for the method. The values for this column are read from the application’s debug info. If debug info does not contain information on the file name, the column is empty.
COL_SOURCE_LINE Integer. Source file’s line number where the method’s implementation begins. The values for this column are read from the application’s debug info.
COL_SYMBOL_MONIKER String. Symbol moniker for a specific routine.
COL_TOKEN Integer. The routine’s token.
COL_TRIGGERACTIVE Integer. Specifies whether a routine is an active trigger. This field contains -1 if the routine is a trigger and this trigger is enabled; otherwise it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERCYCLING Integer. Specifies whether the routine is a cycling trigger. This field contains -1 is the trigger’s Cycling option is checked; otherwise it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERDISABLEROUTINE Not used. Always contains 0.
COL_TRIGGERENABLING Integer. Specifies whether the routine is an on-trigger or an off-trigger. If the routine is an on-trigger, this field contains -1. Otherwise, if the routine is an off-trigger or not a trigger, it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERGLOBAL Integer. Specifies whether the trigger’s call count is taken over all threads. If the trigger’s For All Threads option is checked, this field contains -1. Otherwise it contains 0. This value is not displayed in the Report panel.
COL_TRIGGERGLOBALHITCOUNT Not used. Always contains 0.
COL_TRIGGERPASSCOUNT Integer. The trigger’s pass count. This value is not displayed in the Report panel.
COL_TRIGGERWORKCOUNT Integer. The trigger’s work count. This value is not displayed in the Report panel.
COL_UNIT_NAME String. Name of the linkage unit that stores the routine. This column is used for unmanaged (native-code) routines only.
ID Integer. Identifier of the routine in the result set.
INST_ID Integer. Specifies the identifier of the result set. This is the same value that is stored in the INST_ID field of the INSTANCES table.
PARENT_ID Not used. Always contains -1.
REC_ID Integer. This field serves as an additional identifier of the routine within the result set and is used to link the tables.

The FAILURE_EMULATOR_THREADS table

This table contains information about the application threads that were profiled with the Failure Emulator profiler. The information in this table corresponds to the list of profiles threads displayed in the Explorer panel.

Field Name Description
COL_NAME String. The thread name. This is the same name that is displayed in the Explorer panel.
COL_SIZE Integer. This size of memory used by the appropriate thread.
COL_WIN32THREADID Integer. The thread’s identifier. This field is only used for Win32 threads.
ID The thread’s identifier within the result set.
INST_ID Integer. The identifier of the result set to which the given FAILURE_EMULATOR_THREADS table item belongs. This is the same value as the results’ INST_ID value in the INSTANCES table.
PARENT_ID Not used. Always contains -1.
REC_ID A helper field.

The RELATIONS table

This table contains information about parent-child relationships between the database tables holding the Failure Emulator profiler results.

Field Name Description
COL_CHILD_TABLE String. The name of a child table.
COL_PARENT_TABLE String. The name of a parent table. The NULL value means that the table specified by the COL_CHILD_TABLE is a top-level table.
ID Integer. The identifier of a specific relation within the RELATIONS table.
INST_ID Integer. The identifier of the INSTANCES table item corresponding to the result set whose data the tables hold.

See Also

Exporting Profiling Results to Database
Failure Emulator Profiler - Overview
Failure Emulator Profiler - Report Panel
Failure Emulator Profiler - Details Panel

Highlight search results