Skip to content

Commit

Permalink
Merge pull request #19313 from vbotbuildovich/backport-pr-18736-v24.1…
Browse files Browse the repository at this point in the history
….x-136

[v24.1.x] cpu_profiler: prealloc result buffers
  • Loading branch information
piyushredpanda authored Jun 14, 2024
2 parents 27e87b7 + bfcf345 commit f7ac182
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 16 deletions.
33 changes: 17 additions & 16 deletions src/v/redpanda/admin/debug.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "redpanda/admin/api-doc/debug.json.hh"
#include "redpanda/admin/server.h"
#include "redpanda/admin/util.h"
#include "resource_mgmt/cpu_profiler.h"
#include "serde/rw/rw.h"
#include "storage/kvstore.h"

Expand Down Expand Up @@ -542,23 +543,23 @@ admin_server::cpu_profile_handler(std::unique_ptr<ss::http::request> req) {
*wait_ms, shard_id);
}

std::vector<ss::httpd::debug_json::cpu_profile_shard_samples> response{
profiles.size()};
for (size_t i = 0; i < profiles.size(); i++) {
response[i].shard_id = profiles[i].shard;
response[i].dropped_samples = profiles[i].dropped_samples;

for (auto& sample : profiles[i].samples) {
ss::httpd::debug_json::cpu_profile_sample s;
s.occurrences = sample.occurrences;
s.user_backtrace = sample.user_backtrace;

response[i].samples.push(s);
}
}

co_return co_await ss::make_ready_future<ss::json::json_return_type>(
std::move(response));
ss::json::stream_range_as_array(
lw_shared_container(std::move(profiles)),
[](const resources::cpu_profiler::shard_samples& profile) {
ss::httpd::debug_json::cpu_profile_shard_samples ret;
ret.shard_id = profile.shard;
ret.dropped_samples = profile.dropped_samples;

for (auto& sample : profile.samples) {
ss::httpd::debug_json::cpu_profile_sample s;
s.occurrences = sample.occurrences;
s.user_backtrace = sample.user_backtrace;

ret.samples.push(s);
}
return ret;
}));
}

ss::future<ss::json::json_return_type>
Expand Down
8 changes: 8 additions & 0 deletions src/v/resource_mgmt/cpu_profiler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@ cpu_profiler::cpu_profiler(
, _sample_period(std::move(sample_period)) {
_enabled.watch([this] { on_enabled_change(); });
_sample_period.watch([this] { on_sample_period_change(); });

for (size_t i = 0; i < number_of_results_buffers; i++) {
_results_buffers.emplace_back(
0,
std::vector<ss::cpu_profiler_trace>{},
ss::lowres_clock::time_point::min());
_results_buffers.back().samples.reserve(ss::max_number_of_traces);
}
}

ss::future<> cpu_profiler::start() {
Expand Down

0 comments on commit f7ac182

Please sign in to comment.