1 Star 0 Fork 42

shafeipaozi/iSulad

forked from src-openEuler/iSulad 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0011-add-cpu-usage-nano-cores-for-sandbox.patch 4.33 KB
一键复制 编辑 原始数据 按行查看 历史
zhongtao 提交于 2024-03-19 19:23 . upgrade from upstream
From 3dc12d7806fda8d5ceee183595e993079bee4056 Mon Sep 17 00:00:00 2001
From: jikai <jikai11@huawei.com>
Date: Fri, 12 Jan 2024 17:38:09 +0800
Subject: [PATCH 11/26] add cpu usage nano cores for sandbox
Signed-off-by: jikai <jikai11@huawei.com>
---
.../v1/v1_cri_pod_sandbox_manager_service.cc | 17 ++++++++++++++---
.../cri/v1/v1_cri_pod_sandbox_manager_service.h | 1 +
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.cc b/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.cc
index a0c45111..76fa17bc 100644
--- a/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.cc
+++ b/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.cc
@@ -1024,6 +1024,7 @@ void PodSandboxManagerService::PodSandboxStatsToGRPC(const std::string &id, cons
const std::vector<Network::NetworkInterfaceStats> &netMetrics,
const std::unique_ptr<ContainerManagerService> &containerManager,
std::unique_ptr<runtime::v1::PodSandboxStats> &podStats,
+ sandbox::StatsInfo &oldStatsRec,
Errors &error)
{
std::unique_ptr<runtime::v1::PodSandboxStats> podStatsPtr(
@@ -1044,8 +1045,13 @@ void PodSandboxManagerService::PodSandboxStatsToGRPC(const std::string &id, cons
auto cpu = podStatsPtr->mutable_linux()->mutable_cpu();
cpu->set_timestamp(timestamp);
cpu->mutable_usage_core_nano_seconds()->set_value(cgroupMetrics.cgcpu_metrics.cpu_use_nanos);
- // todo
- // cpu->mutable_usage_nano_cores()->set_value(getNanoCores());
+ if (oldStatsRec.cpuUseNanos != 0 && timestamp > oldStatsRec.timestamp &&
+ cgroupMetrics.cgcpu_metrics.cpu_use_nanos > oldStatsRec.cpuUseNanos) {
+ uint64_t usage = cgroupMetrics.cgcpu_metrics.cpu_use_nanos - oldStatsRec.cpuUseNanos;
+ uint64_t nanoSeconds = timestamp - oldStatsRec.timestamp;
+ uint64_t usage_nano_cores = (uint64_t)(((double)usage / (double)nanoSeconds) * (double)Time_Second);
+ cpu->mutable_usage_nano_cores()->set_value(usage_nano_cores);
+ }
// Memory
auto memory = podStatsPtr->mutable_linux()->mutable_memory();
@@ -1114,6 +1120,7 @@ auto PodSandboxManagerService::PodSandboxStats(const std::string &podSandboxID,
return nullptr;
}
auto &config = sandbox->GetSandboxConfig();
+ auto oldStatsRec = sandbox->GetStatsInfo();
auto status = PodSandboxStatus(sandbox->GetId(), tmpErr);
if (error.NotEmpty()) {
@@ -1136,13 +1143,17 @@ auto PodSandboxManagerService::PodSandboxStats(const std::string &podSandboxID,
tmpErr.Clear();
}
- PodSandboxStatsToGRPC(sandbox->GetId(), cgroupMetrics, netMetrics, containerManager, podStats, tmpErr);
+ PodSandboxStatsToGRPC(sandbox->GetId(), cgroupMetrics, netMetrics, containerManager, podStats, oldStatsRec, tmpErr);
if (tmpErr.NotEmpty()) {
ERROR("Failed to set PodSandboxStats: %s", tmpErr.GetCMessage());
error.Errorf("Failed to set PodSandboxStats");
return nullptr;
}
+ // update stats info that sandbox recorded
+ sandbox::StatsInfo newStatsRec { podStats->linux().cpu().timestamp(), podStats->linux().cpu().usage_core_nano_seconds().value() };
+ sandbox->UpdateStatsInfo(newStatsRec);
+
return podStats;
}
diff --git a/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.h b/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.h
index 2bd28007..c3d98b8c 100644
--- a/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.h
+++ b/src/daemon/entry/cri/v1/v1_cri_pod_sandbox_manager_service.h
@@ -123,6 +123,7 @@ private:
const std::vector<Network::NetworkInterfaceStats> &netMetrics,
const std::unique_ptr<ContainerManagerService> &containerManager,
std::unique_ptr<runtime::v1::PodSandboxStats> &podStats,
+ sandbox::StatsInfo &statsInfo,
Errors &error);
void GetFilterPodSandbox(const runtime::v1::PodSandboxStatsFilter *filter,
std::vector<std::string> &podSandboxIDs, Errors &error);
--
2.25.1
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/shafeipaozi/iSulad.git
git@gitee.com:shafeipaozi/iSulad.git
shafeipaozi
iSulad
iSulad
master

搜索帮助

A270a887 8829481 3d7a4017 8829481