]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/db/malloc_stats.cc
1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2 // This source code is licensed under both the GPLv2 (found in the
3 // COPYING file in the root directory) and Apache 2.0 License
4 // (found in the LICENSE.Apache file in the root directory).
6 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file. See the AUTHORS file for names of contributors.
10 #include "db/malloc_stats.h"
16 #include "port/jemalloc_helper.h"
18 namespace ROCKSDB_NAMESPACE
{
20 #ifdef ROCKSDB_JEMALLOC
27 static void GetJemallocStatus(void* mstat_arg
, const char* status
) {
28 MallocStatus
* mstat
= reinterpret_cast<MallocStatus
*>(mstat_arg
);
29 size_t status_len
= status
? strlen(status
) : 0;
30 size_t buf_size
= (size_t)(mstat
->end
- mstat
->cur
);
31 if (!status_len
|| status_len
> buf_size
) {
35 snprintf(mstat
->cur
, buf_size
, "%s", status
);
36 mstat
->cur
+= status_len
;
38 void DumpMallocStats(std::string
* stats
) {
43 const unsigned int kMallocStatusLen
= 1000000;
44 std::unique_ptr
<char[]> buf
{new char[kMallocStatusLen
+ 1]};
45 mstat
.cur
= buf
.get();
46 mstat
.end
= buf
.get() + kMallocStatusLen
;
47 malloc_stats_print(GetJemallocStatus
, &mstat
, "");
48 stats
->append(buf
.get());
51 void DumpMallocStats(std::string
*) {}
52 #endif // ROCKSDB_JEMALLOC
53 } // namespace ROCKSDB_NAMESPACE
54 #endif // !ROCKSDB_LITE