]>
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"
17 #include "port/jemalloc_helper.h"
19 namespace ROCKSDB_NAMESPACE
{
21 #ifdef ROCKSDB_JEMALLOC
28 static void GetJemallocStatus(void* mstat_arg
, const char* status
) {
29 MallocStatus
* mstat
= reinterpret_cast<MallocStatus
*>(mstat_arg
);
30 size_t status_len
= status
? strlen(status
) : 0;
31 size_t buf_size
= (size_t)(mstat
->end
- mstat
->cur
);
32 if (!status_len
|| status_len
> buf_size
) {
36 snprintf(mstat
->cur
, buf_size
, "%s", status
);
37 mstat
->cur
+= status_len
;
39 void DumpMallocStats(std::string
* stats
) {
44 const unsigned int kMallocStatusLen
= 1000000;
45 std::unique_ptr
<char[]> buf
{new char[kMallocStatusLen
+ 1]};
46 mstat
.cur
= buf
.get();
47 mstat
.end
= buf
.get() + kMallocStatusLen
;
48 malloc_stats_print(GetJemallocStatus
, &mstat
, "");
49 stats
->append(buf
.get());
52 void DumpMallocStats(std::string
*) {}
53 #endif // ROCKSDB_JEMALLOC
54 } // namespace ROCKSDB_NAMESPACE
55 #endif // !ROCKSDB_LITE