Skip to content

Commit 0da2035

Browse files
authored
Merge pull request #36366 from vespa-engine/toregge/add-memory-usage-to-attribute-header-tags
Add memory usage to attribute header tags.
2 parents f5cad1d + 2ff547a commit 0da2035

4 files changed

Lines changed: 15 additions & 0 deletions

File tree

searchlib/src/tests/attribute/attribute_header/attribute_header_test.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const ValueType tensor_type = ValueType::from_spec("tensor<float>(x[4])");
2222
constexpr uint32_t num_docs = 23;
2323
constexpr uint64_t unique_value_count = 11;
2424
constexpr uint64_t total_value_count = 13;
25+
constexpr uint64_t memory_usage = 420042;
2526
constexpr uint64_t create_serial_num = 17;
2627
constexpr uint32_t version = 19;
2728

@@ -38,6 +39,7 @@ populate_header(const HnswIPO& hnsw_params)
3839
num_docs,
3940
unique_value_count,
4041
total_value_count,
42+
memory_usage,
4143
create_serial_num,
4244
version);
4345

@@ -59,6 +61,7 @@ verify_roundtrip_serialization(const HnswIPO& hnsw_params_in)
5961
EXPECT_EQ(create_serial_num, attr_header.getCreateSerialNum());
6062
EXPECT_EQ(total_value_count, attr_header.get_total_value_count());
6163
EXPECT_EQ(unique_value_count, attr_header.get_unique_value_count());
64+
EXPECT_EQ(memory_usage, attr_header.get_memory_usage());
6265
EXPECT_EQ(version, attr_header.getVersion());
6366
EXPECT_EQ(false, attr_header.getPredicateParamsSet());
6467
const auto& hnsw_params_out = attr_header.get_hnsw_index_params();

searchlib/src/vespa/searchlib/attribute/attribute_header.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const std::string doc_id_limit_tag = "docIdLimit";
3232
const std::string enumerated_tag = "enumerated";
3333
const std::string unique_value_count_tag = "uniqueValueCount";
3434
const std::string total_value_count_tag = "totalValueCount";
35+
const std::string memory_usage_tag = "memory_usage";
3536

3637
}
3738

@@ -53,6 +54,7 @@ AttributeHeader::AttributeHeader(std::string fileName)
5354
_numDocs(0),
5455
_uniqueValueCount(0),
5556
_totalValueCount(0),
57+
_memory_usage(0),
5658
_createSerialNum(0u),
5759
_version(0),
5860
_extra_tags()
@@ -69,6 +71,7 @@ AttributeHeader::AttributeHeader(std::string fileName,
6971
uint32_t numDocs,
7072
uint64_t uniqueValueCount,
7173
uint64_t totalValueCount,
74+
uint64_t memory_usage,
7275
uint64_t createSerialNum,
7376
uint32_t version)
7477
: _fileName(std::move(fileName)),
@@ -83,6 +86,7 @@ AttributeHeader::AttributeHeader(std::string fileName,
8386
_numDocs(numDocs),
8487
_uniqueValueCount(uniqueValueCount),
8588
_totalValueCount(totalValueCount),
89+
_memory_usage(memory_usage),
8690
_createSerialNum(createSerialNum),
8791
_version(version),
8892
_flush_duration(std::chrono::steady_clock::duration::zero())
@@ -151,6 +155,9 @@ AttributeHeader::internalExtractTags(const vespalib::GenericHeader &header)
151155
if (header.hasTag(unique_value_count_tag)) {
152156
_uniqueValueCount = header.getTag(unique_value_count_tag).asInteger();
153157
}
158+
if (header.hasTag(memory_usage_tag)) {
159+
_memory_usage = header.getTag(memory_usage_tag).asInteger();
160+
}
154161
if (header.hasTag(versionTag)) {
155162
_version = header.getTag(versionTag).asInteger();
156163
}
@@ -177,6 +184,7 @@ AttributeHeader::addTags(vespalib::GenericHeader &header) const
177184
}
178185
header.putTag(Tag(unique_value_count_tag, _uniqueValueCount));
179186
header.putTag(Tag(total_value_count_tag, _totalValueCount));
187+
header.putTag(Tag(memory_usage_tag, _memory_usage));
180188
header.putTag(Tag(doc_id_limit_tag, _numDocs));
181189
header.putTag(Tag("frozen", 0));
182190
header.putTag(Tag("fileBitSize", 0));

searchlib/src/vespa/searchlib/attribute/attribute_header.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class AttributeHeader {
3232
uint32_t _numDocs;
3333
uint64_t _uniqueValueCount;
3434
uint64_t _totalValueCount;
35+
uint64_t _memory_usage;
3536
uint64_t _createSerialNum;
3637
uint32_t _version;
3738
std::chrono::steady_clock::duration _flush_duration;
@@ -51,6 +52,7 @@ class AttributeHeader {
5152
uint32_t numDocs,
5253
uint64_t uniqueValueCount,
5354
uint64_t totalValueCount,
55+
uint64_t memory_usage,
5456
uint64_t createSerialNum,
5557
uint32_t version);
5658
~AttributeHeader();
@@ -76,6 +78,7 @@ class AttributeHeader {
7678
void addTags(vespalib::GenericHeader &header) const;
7779
vespalib::GenericHeader& get_extra_tags() noexcept { return _extra_tags; }
7880
std::chrono::steady_clock::duration get_flush_duration() const noexcept { return _flush_duration; }
81+
uint64_t get_memory_usage() const noexcept { return _memory_usage; }
7982
};
8083

8184
}

searchlib/src/vespa/searchlib/attribute/attributevector.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ AttributeVector::createAttributeHeader(std::string_view fileName) const {
305305
getCommittedDocIdLimit(),
306306
getUniqueValueCount(),
307307
getTotalValueCount(),
308+
getStatus().get_used_minus_dead_and_onhold(),
308309
getCreateSerialNum(),
309310
getVersion());
310311
}

0 commit comments

Comments
 (0)