public class UtilizationProfile extends java.lang.Object implements EnvConfigObserver
Unlike the UtilizationTracker, the UP is not accessed under the log write latch and is instead synchronized on itself for protecting the cache. It is not accessed during the primary data access path, except for when flushing (writing) file summary LNs. This occurs in the following cases:
The cache is populated by the RecoveryManager just before performing the initial checkpoint. The UP must be open and populated in order to respond to requests to flush summaries and to evict tracked detail, even if the cleaner is disabled.
WARNING: While synchronized on this object, eviction is not permitted. If it were, this could cause deadlocks because the order of locking would be the UP object and then the evictor. During normal eviction the order is to first lock the evictor and then the UP, when evicting tracked detail.
The methods in this class synchronize to protect the cached summary information. Some methods also access the UP database. However, because eviction must not occur while synchronized, UP database access is not performed while synchronized except in one case: when inserting a new summary record. In that case we disallow eviction during the database operation.
Constructor and Description |
---|
UtilizationProfile(EnvironmentImpl env,
UtilizationTracker tracker)
Creates an empty UP.
|
Modifier and Type | Method and Description |
---|---|
void |
clearCache()
Clears the cache of file summary info.
|
void |
envConfigUpdate(DbConfigManager cm,
EnvironmentMutableConfig ignore)
Process notifications of mutable property changes.
|
void |
flushFileSummary(TrackedFileSummary tfs)
Updates and stores the FileSummary for a given tracked file, if flushing
of the summary is allowed.
|
void |
flushFileUtilization(java.util.Collection<TrackedFileSummary> activeFiles)
Flush a FileSummaryLN node for each TrackedFileSummary that is currently
active in the given tracker.
|
void |
flushLocalTracker(LocalUtilizationTracker localTracker)
Count the given locally tracked info as obsolete and then log the file
and database info..
|
DatabaseImpl |
getFileSummaryDb()
For unit testing.
|
java.util.SortedMap<java.lang.Long,FileSummary> |
getFileSummaryMap(boolean includeTrackedFiles)
Returns a copy of the current file summary map, optionally including
tracked summary information, for use by the DbSpace utility and by unit
tests.
|
boolean |
isRMWFixEnabled() |
boolean |
populateCache()
Populate the profile for file selection.
|
static int |
utilization(long obsoleteSize,
long totalSize)
Calculate the utilization percentage.
|
boolean |
verifyFileSummaryDatabase()
Checks that all FSLN offsets are indeed obsolete.
|
public UtilizationProfile(EnvironmentImpl env, UtilizationTracker tracker) throws DatabaseException
DatabaseException
public void envConfigUpdate(DbConfigManager cm, EnvironmentMutableConfig ignore) throws DatabaseException
envConfigUpdate
in interface EnvConfigObserver
DatabaseException
public boolean isRMWFixEnabled()
public static int utilization(long obsoleteSize, long totalSize)
public void flushLocalTracker(LocalUtilizationTracker localTracker) throws DatabaseException
DatabaseException
public void flushFileUtilization(java.util.Collection<TrackedFileSummary> activeFiles) throws DatabaseException
DatabaseException
public java.util.SortedMap<java.lang.Long,FileSummary> getFileSummaryMap(boolean includeTrackedFiles) throws DatabaseException
DatabaseException
public void clearCache()
public void flushFileSummary(TrackedFileSummary tfs) throws DatabaseException
DatabaseException
public boolean populateCache() throws DatabaseException
DatabaseException
public DatabaseImpl getFileSummaryDb()
public boolean verifyFileSummaryDatabase() throws DatabaseException
DatabaseException