13.6. Understanding Memory Usage for Specific Applications

Documentation

VoltDB Home » Documentation » Guide to Performance and Customization

13.6. Understanding Memory Usage for Specific Applications

To help understand the memory usage for a specific VoltDB database, the @Statistics system procedure provides memory usage information. The "MEMORY" selector returns a separate row of data for each server in the cluster, with columns providing information about the different aspects of memory usage, as described in the following table.

ColumnType of StorageDescription
JAVAUSEDTemporaryThe amount of memory currently in use for temporary storage.
JAVAUNUSEDTemporaryThe maximum amount of Java heap allocated but not currently in use.
TUPLECOUNTPersistentThe number of tuples currently being held in memory.
TUPLEDATAPersistentThe amount of memory in use to store inline table data.
TUPLEALLOCATEDPersistentThe amount of memory allocated for table storage. This includes the amount in use and any free space currently being held by VoltDB.
INDEXMEMORYPersistentThe approximate amount of memory in use to store indexes.
STRINGMEMORYPersistentThe approximate amount of memory in use for non-inline string and binary storage.
POOLEDMEMORYPersistentThe total amount allocated to pooled memory, including the memory assigned for storing strings, indexes, free lists, and metadata associated with tuple storage.
RSSAllThe resident set size for the VoltDB server process.

There is also a separate @Statistics selector, COMPACTION, that reports of the results of the compaction process for each table. You can use periodic calls to the @Statistics system procedure with the MEMORY and COMPACTION keywords to track your database cluster's memory usage in detail. But if you are only looking for an overall picture, the Volt Management Center, a web-based console accessible from the server's HTTP port, provides graphs of both database activity and memory usage at runtime.