in src/oomd/plugins/BaseKillPlugin.cpp [577:613]
bool BaseKillPlugin::tryToLogAndKillCgroup(
const OomdContext& ctx,
const KillCandidate& candidate) {
KillUuid kill_uuid = generateKillUuid();
auto action_context = ctx.getActionContext();
bool success = tryToKillCgroup(candidate.cgroup_ctx.get(), kill_uuid, dry_);
if (success) {
auto mem_pressure =
candidate.cgroup_ctx.get().mem_pressure().value_or(ResourcePressure{});
std::ostringstream oss;
oss << std::setprecision(2) << std::fixed;
oss << mem_pressure.sec_10 << " " << mem_pressure.sec_60 << " "
<< mem_pressure.sec_300 << " "
<< candidate.cgroup_ctx.get().cgroup().relativePath() << " "
<< candidate.cgroup_ctx.get().current_usage().value_or(0) << " "
<< "ruleset:[" << action_context.ruleset_name << "] "
<< "detectorgroup:[" << action_context.detectorgroup << "] "
<< "killer:" << (dry_ ? "(dry)" : "") << getName() << " v2";
if (!dry_) {
Oomd::incrementStat(CoreStats::kKillsKey, 1);
}
OOMD_KMSG_LOG(oss.str(), "oomd kill");
}
dumpKillInfo(
candidate.cgroup_ctx.get().cgroup(),
candidate.cgroup_ctx.get(),
candidate.kill_root.get(),
action_context,
kill_uuid,
success,
dry_);
return success;
}