Export memory fragmentation in memstats.
PiperOrigin-RevId: 306580752 Change-Id: I68e733c099e93957eb1ccb728077563f0c1b3d2d
This commit is contained in:
parent
e22095ef16
commit
7ba5af361b
|
@ -69,6 +69,7 @@ absl::optional<AllocatorStats> XlaDeviceAllocator::GetStats() {
|
|||
tf_stats.bytes_reserved = se_stats->bytes_reserved;
|
||||
tf_stats.peak_bytes_reserved = se_stats->peak_bytes_reserved;
|
||||
tf_stats.bytes_reservable_limit = se_stats->bytes_reservable_limit;
|
||||
tf_stats.largest_free_block_bytes = se_stats->largest_free_block_bytes;
|
||||
return tf_stats;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,16 +31,22 @@ thread_local MemoryDebugAnnotation ScopedMemoryDebugAnnotation::annotation_;
|
|||
|
||||
string AllocatorStats::DebugString() const {
|
||||
return strings::Printf(
|
||||
"Limit: %20lld\n"
|
||||
"InUse: %20lld\n"
|
||||
"MaxInUse: %20lld\n"
|
||||
"NumAllocs: %20lld\n"
|
||||
"MaxAllocSize: %20lld\n",
|
||||
"Limit: %20lld\n"
|
||||
"InUse: %20lld\n"
|
||||
"MaxInUse: %20lld\n"
|
||||
"NumAllocs: %20lld\n"
|
||||
"MaxAllocSize: %20lld\n"
|
||||
"Reserved: %20lld\n"
|
||||
"PeakReserved: %20lld\n"
|
||||
"LargestFreeBlock: %20lld\n",
|
||||
static_cast<long long>(this->bytes_limit ? *this->bytes_limit : 0),
|
||||
static_cast<long long>(this->bytes_in_use),
|
||||
static_cast<long long>(this->peak_bytes_in_use),
|
||||
static_cast<long long>(this->num_allocs),
|
||||
static_cast<long long>(this->largest_alloc_size));
|
||||
static_cast<long long>(this->largest_alloc_size),
|
||||
static_cast<long long>(this->bytes_reserved),
|
||||
static_cast<long long>(this->peak_bytes_reserved),
|
||||
static_cast<long long>(this->largest_free_block_bytes));
|
||||
}
|
||||
|
||||
constexpr size_t Allocator::kAllocatorAlignment;
|
||||
|
|
|
@ -160,13 +160,16 @@ struct AllocatorStats {
|
|||
// if such a limit is known.
|
||||
absl::optional<int64> bytes_reservable_limit;
|
||||
|
||||
int64 largest_free_block_bytes; // Largest free block's size in heap.
|
||||
|
||||
AllocatorStats()
|
||||
: num_allocs(0),
|
||||
bytes_in_use(0),
|
||||
peak_bytes_in_use(0),
|
||||
largest_alloc_size(0),
|
||||
bytes_reserved(0),
|
||||
peak_bytes_reserved(0) {}
|
||||
peak_bytes_reserved(0),
|
||||
largest_free_block_bytes(0) {}
|
||||
|
||||
std::string DebugString() const;
|
||||
};
|
||||
|
|
|
@ -20,13 +20,18 @@ namespace stream_executor {
|
|||
|
||||
std::string AllocatorStats::DebugString() const {
|
||||
return absl::StrFormat(
|
||||
"Limit: %20lld\n"
|
||||
"InUse: %20lld\n"
|
||||
"MaxInUse: %20lld\n"
|
||||
"NumAllocs: %20lld\n"
|
||||
"MaxAllocSize: %20lld\n",
|
||||
"Limit: %20lld\n"
|
||||
"InUse: %20lld\n"
|
||||
"MaxInUse: %20lld\n"
|
||||
"NumAllocs: %20lld\n"
|
||||
"MaxAllocSize: %20lld\n"
|
||||
"Reserved: %20lld\n"
|
||||
"PeakReserved: %20lld\n"
|
||||
"LargestFreeBlock: %20lld\n",
|
||||
this->bytes_limit ? *this->bytes_limit : 0, this->bytes_in_use,
|
||||
this->peak_bytes_in_use, this->num_allocs, this->largest_alloc_size);
|
||||
this->peak_bytes_in_use, this->num_allocs, this->largest_alloc_size,
|
||||
this->bytes_reserved, this->peak_bytes_reserved,
|
||||
this->largest_free_block_bytes);
|
||||
}
|
||||
|
||||
} // namespace stream_executor
|
||||
|
|
|
@ -43,13 +43,16 @@ struct AllocatorStats {
|
|||
// if such a limit is known.
|
||||
absl::optional<int64> bytes_reservable_limit;
|
||||
|
||||
int64 largest_free_block_bytes; // Largest free block's size in heap.
|
||||
|
||||
AllocatorStats()
|
||||
: num_allocs(0),
|
||||
bytes_in_use(0),
|
||||
peak_bytes_in_use(0),
|
||||
largest_alloc_size(0),
|
||||
bytes_reserved(0),
|
||||
peak_bytes_reserved(0) {}
|
||||
peak_bytes_reserved(0),
|
||||
largest_free_block_bytes(0) {}
|
||||
|
||||
std::string DebugString() const;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue