Skip to content

Commit

Permalink
[native] Move static functions from PrestoTask to Util.
Browse files Browse the repository at this point in the history
  • Loading branch information
amitkdutta committed Apr 26, 2024
1 parent f697be7 commit 1341e28
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 40 deletions.
37 changes: 2 additions & 35 deletions presto-native-execution/presto_cpp/main/PrestoTask.cpp
Expand Up @@ -272,7 +272,7 @@ PrestoTask::PrestoTask(
: id(taskId),
startProcessCpuTime{
_startProcessCpuTime > 0 ? _startProcessCpuTime
: getProcessCpuTime()} {
: util::getProcessCpuTime()} {
info.taskId = taskId;
info.nodeId = nodeId;
}
Expand All @@ -290,24 +290,12 @@ uint64_t PrestoTask::timeSinceLastHeartbeatMs() const {
return getCurrentTimeMs() - lastHeartbeatMs;
}

// static
long PrestoTask::getProcessCpuTime() {
struct rusage rusageEnd;
getrusage(RUSAGE_SELF, &rusageEnd);

auto tvNanos = [](struct timeval tv) {
return tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
};

return tvNanos(rusageEnd.ru_utime) + tvNanos(rusageEnd.ru_stime);
}

void PrestoTask::recordProcessCpuTime() {
if (processCpuTime_ > 0) {
return;
}

processCpuTime_ = getProcessCpuTime() - startProcessCpuTime;
processCpuTime_ = util::getProcessCpuTime() - startProcessCpuTime;
}

protocol::TaskStatus PrestoTask::updateStatusLocked() {
Expand Down Expand Up @@ -775,27 +763,6 @@ void PrestoTask::updateExecutionInfoLocked(
prestoTaskStats);
}

/*static*/ std::string PrestoTask::taskNumbersToString(
const std::array<size_t, 5>& taskNumbers) {
// Names of five TaskState (enum defined in exec/Task.h).
static constexpr std::array<folly::StringPiece, 5> taskStateNames{
"Running",
"Finished",
"Canceled",
"Aborted",
"Failed",
};

std::string str;
for (size_t i = 0; i < taskNumbers.size(); ++i) {
if (taskNumbers[i] != 0) {
folly::toAppend(
fmt::format("{}={} ", taskStateNames[i], taskNumbers[i]), &str);
}
}
return str;
}

folly::dynamic PrestoTask::toJson() const {
std::lock_guard<std::mutex> l(mutex);
folly::dynamic obj = folly::dynamic::object;
Expand Down
3 changes: 0 additions & 3 deletions presto-native-execution/presto_cpp/main/PrestoTask.h
Expand Up @@ -147,9 +147,6 @@ struct PrestoTask {
static std::string taskNumbersToString(
const std::array<size_t, 5>& taskNumbers);

/// Returns process-wide CPU time in nanoseconds.
static long getProcessCpuTime();

/// Invoked to update presto task status from the updated velox task stats.
protocol::TaskStatus updateStatusLocked();
protocol::TaskInfo updateInfoLocked();
Expand Down
2 changes: 1 addition & 1 deletion presto-native-execution/presto_cpp/main/TaskManager.cpp
Expand Up @@ -1112,7 +1112,7 @@ void TaskManager::shutdown() {
PRESTO_SHUTDOWN_LOG(INFO)
<< "Waited (" << seconds
<< " seconds so far) for 'Running' tasks to complete. " << numTasks
<< " tasks left: " << PrestoTask::taskNumbersToString(taskNumbers);
<< " tasks left: " << util::taskNumbersToString(taskNumbers);
std::this_thread::sleep_for(std::chrono::seconds(1));
taskNumbers = getTaskNumbers(numTasks);
++seconds;
Expand Down
3 changes: 2 additions & 1 deletion presto-native-execution/presto_cpp/main/TaskResource.cpp
Expand Up @@ -14,6 +14,7 @@
#include "presto_cpp/main/TaskResource.h"
#include <presto_cpp/main/common/Exception.h>
#include "presto_cpp/main/common/Configs.h"
#include "presto_cpp/main/common/Utils.h"
#include "presto_cpp/main/thrift/ProtocolToThrift.h"
#include "presto_cpp/main/thrift/ThriftIO.h"
#include "presto_cpp/main/thrift/gen-cpp2/PrestoThrift.h"
Expand Down Expand Up @@ -220,7 +221,7 @@ proxygen::RequestHandler* TaskResource::createOrUpdateTaskImpl(
folly::via(
httpSrvCpuExecutor_,
[this, &body, taskId, createOrUpdateFunc]() {
const auto startProcessCpuTime = PrestoTask::getProcessCpuTime();
const auto startProcessCpuTime = util::getProcessCpuTime();

// TODO Avoid copy
std::ostringstream oss;
Expand Down
32 changes: 32 additions & 0 deletions presto-native-execution/presto_cpp/main/common/Utils.cpp
Expand Up @@ -14,6 +14,7 @@

#include "presto_cpp/main/common/Utils.h"
#include <fmt/format.h>
#include <sys/resource.h>

namespace facebook::presto::util {

Expand Down Expand Up @@ -43,4 +44,35 @@ std::shared_ptr<folly::SSLContext> createSSLContext(
}
}

long getProcessCpuTime() {
struct rusage rusageEnd;
getrusage(RUSAGE_SELF, &rusageEnd);

auto tvNanos = [](struct timeval tv) {
return tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
};

return tvNanos(rusageEnd.ru_utime) + tvNanos(rusageEnd.ru_stime);
}

std::string taskNumbersToString(const std::array<size_t, 5>& taskNumbers) {
// Names of five TaskState (enum defined in exec/Task.h).
static constexpr std::array<folly::StringPiece, 5> taskStateNames{
"Running",
"Finished",
"Canceled",
"Aborted",
"Failed",
};

std::string str;
for (size_t i = 0; i < taskNumbers.size(); ++i) {
if (taskNumbers[i] != 0) {
folly::toAppend(
fmt::format("{}={} ", taskStateNames[i], taskNumbers[i]), &str);
}
}
return str;
}

} // namespace facebook::presto::util
5 changes: 5 additions & 0 deletions presto-native-execution/presto_cpp/main/common/Utils.h
Expand Up @@ -31,4 +31,9 @@ std::shared_ptr<folly::SSLContext> createSSLContext(
const std::string& clientCertAndKeyPath,
const std::string& ciphers);

/// Returns process-wide CPU time in nanoseconds.
long getProcessCpuTime();

std::string taskNumbersToString(const std::array<size_t, 5>& taskNumbers);

} // namespace facebook::presto::util

0 comments on commit 1341e28

Please sign in to comment.