DB SnapShot Function

Declaration

NINT SnapShot(NINT opcode, pTEXT rqstdesc, pVOID snapbufr, VRLEN buflen);

Parameters:

  • opcode specifies the action to be taken by the snapshot function.
  • rqstdesc points to an ASCII string containing the input information.
  • snapbufr points to an output buffer of length buflen.

Different opcodes require different combinations of input and output parameters ranging from using neither of them to both of them.

Description

FairCom DB tracks and reports a wealth of performance-oriented statistics. FairCom DB's Snapshot capability enables the capture of performance monitoring data using a combination of configuration file options and the SnapShot API function. The performance data can be captured automatically at specified intervals or on demand in the following ways:

  • The ctstat utility provides a command-line interface to the SNAPSHOT API function, supporting output of FairCom DB statistics at the core database engine, user, file, and function levels.
  • Configuration file options support automatic performance snapshots by specifying the interval between automatic snapshots and the contents of the snapshots. The performance data captured by automatic snapshots are written to the FairCom DB system event log (SYSLOG) files.
  • Use DIAGNOSTICS options to capture the automatic system snapshot data to the human-readable SNAPSHOT.FCS file.
  • The SnapShot() API function can control automatic snapshots, overriding configuration options (if any), and can capture on-demand performance data:
    • to either the SYSLOG files or to the human-readable SNAPSHOT.FCS file, or
    • as a return to the calling program.

For tips about monitoring system performance using this function, see Performance Monitoring Using the SnapShot API.

Snapshot Contents

Each snapshot is composed of a structure (ctGSMS for system info, ctGUMS for user info, and ctGFMS for file info) followed optionally by a variable region. Each of the three snapshot structures contains information about the size of the structure and the amount of variable information, if any, following the structure. Further, if the output buffer is too small to hold all the variable information, the contents member of the main structure will have the ctSNAPSHOTtruncated bit turned on if information had to be truncated.

Note These structure definitions may vary depending on the version of the FairCom DB and FairCom DB client versions you are using. Please consult the c-tree headers for the actual structure definition that is in use. Differences in definitions between a given ctstat client and FairCom DB may make ctstat incompatible with that server, in which case the ctstat utility displays an error message indicating structure incompatibility.

The only variable information consists of an array of function timing results for the overall system or for a user. The array is composed of ctWRKSTT structures. Function timings are described below, but these timings are only for direct calls from c-tree clients.

^ High-Resolution Timers - Most of the elapsed times accumulated in the snapshots are based on high-resolution timers that report in numbers of ticks and are stored in eight-byte integers. The description following each structure member contains a ‘^’ to indicate results based on high-resolution timers. To convert such times to seconds, divide by the ticks per second, a system dependent value stored in the scthrbastim member of each snapshot structure.

Snapshot Structures

See Snapshot Contents

System Snapshot Support

The SnapShot API function supports logging FairCom DB system statistics. For a listing of the system statistics FairCom DB collects, refer to the ctGSMS structure in the Snapshot Contents section below. The supported operations include:

Snapshot action opcode rqstdesc snapbufr
On-demand system snapshot returned directly in the output buffer. No entry is made in SYSLOG. ctPSSsystem NULL Address of output buffer large enough to hold at least a ctGSMS structure
On-demand system snapshot written to the SNAPSHOT.FCS text file. ctPSStext An optional text description, or NULL NULL

File Snapshot Support

The SnapShot API function supports logging FairCom DB file statistics. For a listing of the file statistics the FairCom DB collects, refer to the ctGFMS structure in the Snapshot Contents section. The supported operations include:

Snapshot action opcode rqstdesc snapbufr
Activate the file with the specified file name. Use a pattern of ‘*’ to activate all files. ctPSSaddFileName File name (e.g., “cust*.*”) NULL
Activate the file with the specified file number. ctPSSaddFileNo Small integer file number (e.g., "0") NULL
On-demand file snapshot returned directly in the output buffer for the file with file number specified by rqstdesc. No entry is made in SYSLOG. ctPSSfile Small integer file number (e.g., "3") Address of output buffer large enough to hold a ctGFMS structure
Undo all file activations. ctPSSclearFiles NULL NULL
On-demand file snapshot returned directly. No entry is made in SYSLOG. ctPSSfileSystemHandle System file number ctGFMS buffer
On-demand snapshot of all open files written to SNAPFILE.FCS, a comma-delimited text file. ctPSScsvFile NULL NULL
On-demand snapshot of all open files written to SNAPFILE.FCS, a simple text file. ctPSStextFile NULL NULL
Starts collection of disk I/O timing stats. It affects the contents of a file snapshot. Disk I/O timings can also be enabled from configuration file with the entry: DIAGNOSTICS SNAPSHOT_IOTIME ctPSStimeFileIoOn NULL NULL
Turn off disk I/O timings. Disk I/O timings require a significant number of calls to the high resolution timer, and are more consistent with diagnostic or testing modes of operation. ctPSStimeFileIoOff NULL NULL

User Snapshot Support

The SnapShot API function supports logging FairCom DB user statistics. For a listing of the user statistics FairCom DB collects, refer to the ctGUMS structure in the Snapshot Contents section below. The supported operations include:

Snapshot action opcode rqstdesc snapbufr
Activate the user with the specified User ID. Use a pattern of ‘*’ to activate all users. ctPSSaddUserID User ID
(e.g., “admin”)
NULL
Activate the user with the specified thread handle. ctPSSaddUserHandle Small integer thread handle (e.g., “12”) NULL
On-demand user snapshot returned directly in the output buffer. No entry is made in SYSLOG. The snapshot is for the user calling ctSNAPSHOT(). ctPSSuser NULL Address of output buffer large enough to hold at least a ctGUMS structure
On-demand user snapshot returned directly in the output buffer. ctPSSuserHandle Small integer thread handle (e.g., “12”) Address of output buffer large enough to hold at least a ctGSMS structure
Undo all user activations. ctPSSclearUsers NULL NULL

Automatic Snapshot Support

The SnapShot API function supports starting, stopping, and resuming automatic snapshots. The following table shows the parameters to pass to SnapShot to perform these operations.

Snapshot action opcode rqstdesc snapbufr
Start automatic snapshots, or change time interval if automatic snapshots are already enabled. ctPSSstartAuto Interval in minutes
(e.g., “60”)
NULL
Stop automatic snapshots. ctPSSstopAuto NULL NULL
Resume automatic snapshots with the same interval last used. ctPSSresumeAuto NULL NULL

Combined Snapshot Support

The SnapShot API function supports logging combined snapshots containing FairCom Server system statistics and user and file statistics for the specified activated users and files. This ability is supported by the following operation:

Snapshot action opcode rqstdesc snapbufr
On-demand snapshot of system and activated users and files written to SYSLOG. All entries to SYSLOG share the instance ID, a 4-byte integer, returned in the output buffer. ctPSSnow An optional text description up to 128 bytes, or NULL Address of a 4-byte integer to hold instance ID

Function Timing Snapshot Support

The SnapShot API function supports profiling of FairCom DB API function calls (function timing) and timing of user-defined operations. The supported operations include:

  • Starting and stopping the collection of FairCom DB API function timing statistics.
  • Resetting the function timing statistics.
  • Accumulating timings in user-defined timing baskets. Users may define up to 8 different timing baskets. A begin mark call establishes a high resolution starting time for the specified basket. An end mark call causes the specified basket counter to be incremented, and the elapsed time is added to the timing basket. The baskets are numbered from 0 to 7.

Note Function timings require a significant number of calls to the high-resolution timer, and are more consistent with diagnostic or testing modes of operation.

The following table shows the parameters to pass to SnapShot() to perform these operations.

Snapshot action opcode rqstdesc snapbufr
Start collecting function-timing statistics. This can be called whether or not automatic snapshots are currently active. It affects the contents of snapshots written to SYSLOG, not when or if they occur. ctPSStimeWorkOn NULL NULL
Turn off function timings. ctPSStimeWorkOff NULL NULL
Mark beginning time for one of 8 user specified timing baskets. ctPSSbegMark Small integer between 0 and 7 (e.g., "3") NULL
Mark ending time for user specified timing basket. ctPSSendMark Small integer between 0 and 7 (e.g., "3") NULL
Clear all function-timing statistics. ctPSStimeWorkClear NULL NULL
On-demand snapshot of c-tree function timings written to SNAPFUNC.FCS, a simple text file. ctPSStextFunc NULL NULL
On-demand snapshot of c-tree function timings written to SNAPFUNC.FCS, a comma-delimited text file. ctPSScsvFunc NULL NULL

SQL Snapshot Support

The SnapShot API function has a mode for retrieving FairCom DB SQL specific statistics.

Snapshot action opcode rqstdesc snapbufr
SQL Statement cache counters ctPSSsqlSystem NULL ctSQLS

File List Snapshot Support

Snapshot action opcode rqstdesc snapbufr
On demand filelist snapshot returned directly. No entry is made in SYSLOG. ctPSSfilelist NULL ctGFLS

CHECKLOCK List Snapshot Support

Snapshot action opcode rqstdesc snapbufr
On demand CHECKLOCK_FILE snapshot returned directly. No entry is made in SYSLOG. ctPSSchecklockfile NULL ctGCMS

Memory Snapshot Support

Snapshot action opcode rqstdesc snapbufr
On demand memory allocation snapshot returned directly. No entry is made in SYSLOG. ctPSSmemAlloc NULL ctGMMS
Causes the server to write information on structure sizes and compile-time constants that affect server memory use to the file MEMINFO.FCS. ctPSSmeminfo NULL NULL

Replication Snapshot Support

The SnapShot API function supports logging information about the FairCom Server replication state. For a listing of the transaction statistics the FairCom Server collects, refer to the ctPSSreplread structure in the Snapshot Contents section below. The supported operations include:

Snapshot action opcode rqstdesc snapbufr
Retrieve information about FairCom Server replication state. On-demand replication reader snapshot is returned directly. No entry is made in SYSLOG. ctPSSreplread    

Transaction Snapshot Support

The SnapShot API function supports logging FairCom Server transaction statistics. For a listing of the transaction statistics the FairCom Server collects, refer to the ctPSStransaction structure in the Snapshot Contents section. The supported operations include:

Snapshot action opcode rqstdesc snapbufr
Retrieve FairCom Server's transaction statistics. ctPSStransaction    

Snapshot support for FairCom Server compiled without transaction control

In V11 and later, support has been added for using the SnapShot feature when FairCom DB Server is compiled without transaction control (UNIFRMAT server, for example). (ctSNAPSHOT API and utilities such as ctstat and FairCom DB Monitor use this feature.)

Prior to this modification, FairCom DB Monitor had limited functionality on a server that did not support transaction processing: the Files Stats, System Snapshot, User Snapshot, Snapshot Favorites, and Function Timing tabs could not be used (typical error = 454, not supported).

Note Although the snapshot API is now supported by a server, some functions (such as replication and transaction information) are not supported.

Return Values

SnapShot returns NO_ERROR (0) on success, or an error code on failure.

0 CTDBRET_OK Successful operation.

See c-tree Error Codes for a complete listing of valid c-tree error values.

Example


   ...

   ctGSMS* my_sysSnap;
   NINT rc = 0;

   my_sysSnap = (ctGSMS*) malloc(sizeof(ctGSMS));
   memset(my_sysSnap, 0, sizeof(ctGSMS));

   rc = InitISAMXtd(10, 10, 8192/128, 10, 0, "ADMIN", "ADMIN", "FAIRCOMS");
   if (rc) {
      printf("InitISAMXtd Error: %d\n", rc);
      return (rc);
   }
 
   /* Take a System SnapShot */
   rc = SnapShot(ctPSSsystem, NULL, my_sysSnap, sizeof(ctGSMS));
   if (rc) {
      printf("SnapShot Error: %d\n", rc);
      return (rc);
   }

   rc = CloseISAM();
   if (rc)
      printf("CloseISAM Error: %d\n", rc);

   /* Print Memory statistics */
   printf("High Mem: %d\n", my_sysSnap->sctmemhgh);
   printf("Current Mem: %d\n", my_sysSnap->sctmemsum);
    

   /* Print Disk I/O statistics */
   printf("Read ops: %d\n", my_sysSnap->sct_rdops);
   printf("Read bytes: %d\n", my_sysSnap->sct_rdbyt);
   printf("Write ops: %d\n", my_sysSnap->sct_wrops);
   printf("Write bytes: %d\n", my_sysSnap->sct_wrbyt);

   /* Print Platform Specific Server information */
   printf("Server flavor: %d\n", my_sysSnap->sflvr);
   printf("Alignment: %d\n", my_sysSnap->salgn);
   printf("Pointer size: %d\n", my_sysSnap->spntr);

   free(my_sysSnap);

   ...

See also