summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2018-09-21 11:52:24 +0000
committerGeir Storli <geirst@oath.com>2018-09-21 12:02:53 +0000
commitb747a6b04f0b07045cfc40f824abf2cd42487219 (patch)
treef3e088bfa0c2e80e4290701f2859513ce49afff3 /searchcore
parent2657bced445b2144d29bc5872955ef663b10166f (diff)
Migrate total disk usage metric for document db.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp70
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h6
4 files changed, 53 insertions, 27 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp
index 27493585dd5..c618614ea52 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp
+++ b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.cpp
@@ -246,7 +246,8 @@ DocumentDBTaggedMetrics::DocumentDBTaggedMetrics(const vespalib::string &docType
matching(this),
sessionCache(this),
documents(this),
- totalMemoryUsage(this)
+ totalMemoryUsage(this),
+ totalDiskUsage("disk_usage", "", "The total disk usage (in bytes) for this document db", this)
{
}
diff --git a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h
index cf523f94d5c..94a69be2c7f 100644
--- a/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h
+++ b/searchcore/src/vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h
@@ -190,6 +190,7 @@ struct DocumentDBTaggedMetrics : metrics::MetricSet
SessionCacheMetrics sessionCache;
DocumentsMetrics documents;
MemoryUsageMetrics totalMemoryUsage;
+ metrics::LongValueMetric totalDiskUsage;
DocumentDBTaggedMetrics(const vespalib::string &docTypeName);
~DocumentDBTaggedMetrics();
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp
index 684775172aa..71baabd9d6f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.cpp
@@ -50,19 +50,32 @@ DocumentDBMetricsUpdater::~DocumentDBMetricsUpdater() = default;
namespace {
+struct TotalStats {
+ search::MemoryUsage memoryUsage;
+ uint64_t diskUsage;
+ TotalStats() : memoryUsage(), diskUsage() {}
+};
+
void
-updateMemoryUsageMetrics(MemoryUsageMetrics &metrics, const MemoryUsage &memoryUsage, MemoryUsage &totalMemoryUsage)
+updateMemoryUsageMetrics(MemoryUsageMetrics &metrics, const MemoryUsage &memoryUsage, TotalStats &totalStats)
{
metrics.update(memoryUsage);
- totalMemoryUsage.merge(memoryUsage);
+ totalStats.memoryUsage.merge(memoryUsage);
+}
+
+void
+updateDiskUsageMetric(metrics::LongValueMetric &metric, uint64_t diskUsage, TotalStats &totalStats)
+{
+ metric.set(diskUsage);
+ totalStats.diskUsage += diskUsage;
}
void
-updateIndexMetrics(DocumentDBMetricsCollection &metrics, const search::SearchableStats &stats, MemoryUsage &totalMemoryUsage)
+updateIndexMetrics(DocumentDBMetricsCollection &metrics, const search::SearchableStats &stats, TotalStats &totalStats)
{
DocumentDBTaggedMetrics::IndexMetrics &indexMetrics = metrics.getTaggedMetrics().index;
- indexMetrics.diskUsage.set(stats.sizeOnDisk());
- updateMemoryUsageMetrics(indexMetrics.memoryUsage, stats.memoryUsage(), totalMemoryUsage);
+ updateDiskUsageMetric(indexMetrics.diskUsage, stats.sizeOnDisk(), totalStats);
+ updateMemoryUsageMetrics(indexMetrics.memoryUsage, stats.memoryUsage(), totalStats);
indexMetrics.docsInMemory.set(stats.docsInMemory());
LegacyDocumentDBMetrics::IndexMetrics &legacyIndexMetrics = metrics.getLegacyMetrics().index;
@@ -167,7 +180,7 @@ updateAttributeMetrics(AttributeMetrics &metrics, const TempAttributeMetrics &tm
}
void
-updateAttributeMetrics(DocumentDBMetricsCollection &metrics, const DocumentSubDBCollection &subDbs, MemoryUsage &totalMemoryUsage)
+updateAttributeMetrics(DocumentDBMetricsCollection &metrics, const DocumentSubDBCollection &subDbs, TotalStats &totalStats)
{
TempAttributeMetrics totalMetrics;
TempAttributeMetrics readyMetrics;
@@ -180,7 +193,7 @@ updateAttributeMetrics(DocumentDBMetricsCollection &metrics, const DocumentSubDB
updateAttributeMetrics(metrics.getTaggedMetrics().ready.attributes, readyMetrics);
updateAttributeMetrics(metrics.getTaggedMetrics().notReady.attributes, notReadyMetrics);
- updateMemoryUsageMetrics(metrics.getTaggedMetrics().attribute.totalMemoryUsage, totalMetrics.total.memoryUsage, totalMemoryUsage);
+ updateMemoryUsageMetrics(metrics.getTaggedMetrics().attribute.totalMemoryUsage, totalMetrics.total.memoryUsage, totalStats);
}
void
@@ -270,9 +283,9 @@ updateCountMetric(uint64_t currVal, uint64_t lastVal, metrics::LongCountMetric &
}
void
-updateDocstoreMetrics(LegacyDocumentDBMetrics::DocstoreMetrics &metrics,
- const DocumentSubDBCollection &sub_dbs,
- CacheStats &lastCacheStats)
+updateLegacyDocstoreMetrics(LegacyDocumentDBMetrics::DocstoreMetrics &metrics,
+ const DocumentSubDBCollection &sub_dbs,
+ CacheStats &lastCacheStats)
{
size_t memoryUsage = 0;
CacheStats cache_stats;
@@ -295,18 +308,18 @@ void
updateDocumentStoreMetrics(DocumentDBTaggedMetrics::SubDBMetrics::DocumentStoreMetrics &metrics,
const IDocumentSubDB *subDb,
CacheStats &lastCacheStats,
- MemoryUsage &totalMemoryUsage)
+ TotalStats &totalStats)
{
const ISummaryManager::SP &summaryMgr = subDb->getSummaryManager();
search::IDocumentStore &backingStore = summaryMgr->getBackingStore();
search::DataStoreStorageStats storageStats(backingStore.getStorageStats());
- metrics.diskUsage.set(storageStats.diskUsage());
+ updateDiskUsageMetric(metrics.diskUsage, storageStats.diskUsage(), totalStats);
metrics.diskBloat.set(storageStats.diskBloat());
metrics.maxBucketSpread.set(storageStats.maxBucketSpread());
- updateMemoryUsageMetrics(metrics.memoryUsage, backingStore.getMemoryUsage(), totalMemoryUsage);
+ updateMemoryUsageMetrics(metrics.memoryUsage, backingStore.getMemoryUsage(), totalStats);
search::CacheStats cacheStats = backingStore.getCacheStats();
- totalMemoryUsage.incAllocatedBytes(cacheStats.memory_used);
+ totalStats.memoryUsage.incAllocatedBytes(cacheStats.memory_used);
metrics.cache.memoryUsage.set(cacheStats.memory_used);
metrics.cache.elements.set(cacheStats.elements);
updateDocumentStoreCacheHitRate(cacheStats, lastCacheStats, metrics.cache.hitRate);
@@ -315,6 +328,15 @@ updateDocumentStoreMetrics(DocumentDBTaggedMetrics::SubDBMetrics::DocumentStoreM
lastCacheStats = cacheStats;
}
+void
+updateDocumentStoreMetrics(DocumentDBTaggedMetrics &metrics, const DocumentSubDBCollection &subDBs,
+ DocumentDBMetricsUpdater::DocumentStoreCacheStats &lastDocStoreCacheStats, TotalStats &totalStats)
+{
+ updateDocumentStoreMetrics(metrics.ready.documentStore, subDBs.getReadySubDB(), lastDocStoreCacheStats.readySubDb, totalStats);
+ updateDocumentStoreMetrics(metrics.removed.documentStore, subDBs.getRemSubDB(), lastDocStoreCacheStats.removedSubDb, totalStats);
+ updateDocumentStoreMetrics(metrics.notReady.documentStore, subDBs.getNotReadySubDB(), lastDocStoreCacheStats.notReadySubDb, totalStats);
+}
+
template <typename MetricSetType>
void
updateLidSpaceMetrics(MetricSetType &metrics, const search::IDocumentMetaStore &metaStore)
@@ -333,16 +355,19 @@ updateLidSpaceMetrics(MetricSetType &metrics, const search::IDocumentMetaStore &
void
DocumentDBMetricsUpdater::updateMetrics(DocumentDBMetricsCollection &metrics)
{
- MemoryUsage totalMemoryUsage;
+ TotalStats totalStats;
ExecutorThreadingServiceStats threadingServiceStats = _writeService.getStats();
updateLegacyMetrics(metrics.getLegacyMetrics(), threadingServiceStats);
- updateIndexMetrics(metrics, _subDBs.getReadySubDB()->getSearchableStats(), totalMemoryUsage);
- updateAttributeMetrics(metrics, _subDBs, totalMemoryUsage);
+ updateIndexMetrics(metrics, _subDBs.getReadySubDB()->getSearchableStats(), totalStats);
+ updateAttributeMetrics(metrics, _subDBs, totalStats);
updateMatchingMetrics(metrics, *_subDBs.getReadySubDB());
updateSessionCacheMetrics(metrics, _sessionManager);
updateDocumentsMetrics(metrics, _subDBs);
- updateMiscMetrics(metrics.getTaggedMetrics(), threadingServiceStats, totalMemoryUsage);
- metrics.getTaggedMetrics().totalMemoryUsage.update(totalMemoryUsage);
+ updateDocumentStoreMetrics(metrics.getTaggedMetrics(), _subDBs, _lastDocStoreCacheStats, totalStats);
+ updateMiscMetrics(metrics.getTaggedMetrics(), threadingServiceStats);
+
+ metrics.getTaggedMetrics().totalMemoryUsage.update(totalStats.memoryUsage);
+ metrics.getTaggedMetrics().totalDiskUsage.set(totalStats.diskUsage);
}
void
@@ -351,7 +376,7 @@ DocumentDBMetricsUpdater::updateLegacyMetrics(LegacyDocumentDBMetrics &metrics,
metrics.executor.update(threadingServiceStats.getMasterExecutorStats());
metrics.summaryExecutor.update(threadingServiceStats.getSummaryExecutorStats());
metrics.indexExecutor.update(threadingServiceStats.getIndexExecutorStats());
- updateDocstoreMetrics(metrics.docstore, _subDBs, _lastDocStoreCacheStats.total);
+ updateLegacyDocstoreMetrics(metrics.docstore, _subDBs, _lastDocStoreCacheStats.total);
DocumentMetaStoreReadGuards dmss(_subDBs);
updateLidSpaceMetrics(metrics.ready.docMetaStore, dmss.readydms->get());
@@ -374,15 +399,12 @@ DocumentDBMetricsUpdater::updateAttributeResourceUsageMetrics(DocumentDBTaggedMe
}
void
-DocumentDBMetricsUpdater::updateMiscMetrics(DocumentDBTaggedMetrics &metrics, const ExecutorThreadingServiceStats &threadingServiceStats, MemoryUsage &totalMemoryUsage)
+DocumentDBMetricsUpdater::updateMiscMetrics(DocumentDBTaggedMetrics &metrics, const ExecutorThreadingServiceStats &threadingServiceStats)
{
metrics.threadingService.update(threadingServiceStats);
_jobTrackers.updateMetrics(metrics.job);
updateAttributeResourceUsageMetrics(metrics.attribute);
- updateDocumentStoreMetrics(metrics.ready.documentStore, _subDBs.getReadySubDB(), _lastDocStoreCacheStats.readySubDb, totalMemoryUsage);
- updateDocumentStoreMetrics(metrics.removed.documentStore, _subDBs.getRemSubDB(), _lastDocStoreCacheStats.removedSubDb, totalMemoryUsage);
- updateDocumentStoreMetrics(metrics.notReady.documentStore, _subDBs.getNotReadySubDB(), _lastDocStoreCacheStats.notReadySubDb, totalMemoryUsage);
DocumentMetaStoreReadGuards dmss(_subDBs);
updateLidSpaceMetrics(metrics.ready.lidSpace, dmss.readydms->get());
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h
index 755d429d553..e0042207060 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentdb_metrics_updater.h
@@ -21,7 +21,8 @@ class LegacyDocumentDBMetrics;
* Class used to update metrics for a document db.
*/
class DocumentDBMetricsUpdater {
-private:
+public:
+
struct DocumentStoreCacheStats {
search::CacheStats total;
search::CacheStats readySubDb;
@@ -30,6 +31,7 @@ private:
DocumentStoreCacheStats() : total(), readySubDb(), notReadySubDb(), removedSubDb() {}
};
+private:
const DocumentSubDBCollection &_subDBs;
ExecutorThreadingService &_writeService;
DocumentDBJobTrackers &_jobTrackers;
@@ -40,7 +42,7 @@ private:
DocumentStoreCacheStats _lastDocStoreCacheStats;
void updateLegacyMetrics(LegacyDocumentDBMetrics &metrics, const ExecutorThreadingServiceStats &threadingServiceStats);
- void updateMiscMetrics(DocumentDBTaggedMetrics &metrics, const ExecutorThreadingServiceStats &threadingServiceStats, search::MemoryUsage &totalMemoryUsage);
+ void updateMiscMetrics(DocumentDBTaggedMetrics &metrics, const ExecutorThreadingServiceStats &threadingServiceStats);
void updateAttributeResourceUsageMetrics(DocumentDBTaggedMetrics::AttributeMetrics &metrics);
public: