diff --git a/libprocessgroup/task_profiles.cpp b/libprocessgroup/task_profiles.cpp index ffcfeb8ad..73aa2af01 100644 --- a/libprocessgroup/task_profiles.cpp +++ b/libprocessgroup/task_profiles.cpp @@ -477,6 +477,7 @@ void TaskProfile::MoveTo(TaskProfile* profile) { bool TaskProfile::ExecuteForProcess(uid_t uid, pid_t pid) const { for (const auto& element : elements_) { if (!element->ExecuteForProcess(uid, pid)) { + LOG(VERBOSE) << "Applying profile action " << element->Name() << " failed"; return false; } } @@ -489,6 +490,7 @@ bool TaskProfile::ExecuteForTask(int tid) const { } for (const auto& element : elements_) { if (!element->ExecuteForTask(tid)) { + LOG(VERBOSE) << "Applying profile action " << element->Name() << " failed"; return false; } } @@ -600,7 +602,7 @@ bool TaskProfiles::Load(const CgroupMap& cg_map, const std::string& file_name) { std::string profile_name = profile_val["Name"].asString(); const Json::Value& actions = profile_val["Actions"]; - auto profile = std::make_shared(); + auto profile = std::make_shared(profile_name); for (Json::Value::ArrayIndex act_idx = 0; act_idx < actions.size(); ++act_idx) { const Json::Value& action_val = actions[act_idx]; @@ -710,7 +712,7 @@ bool TaskProfiles::Load(const CgroupMap& cg_map, const std::string& file_name) { } } if (ret) { - auto profile = std::make_shared(); + auto profile = std::make_shared(aggregateprofile_name); profile->Add(std::make_unique(profiles)); profiles_[aggregateprofile_name] = profile; } diff --git a/libprocessgroup/task_profiles.h b/libprocessgroup/task_profiles.h index 2f486641e..e6e65fb07 100644 --- a/libprocessgroup/task_profiles.h +++ b/libprocessgroup/task_profiles.h @@ -59,6 +59,8 @@ class ProfileAction { virtual ~ProfileAction() {} + virtual const char* Name() const = 0; + // Default implementations will fail virtual bool ExecuteForProcess(uid_t, pid_t) const { return false; }; virtual bool ExecuteForTask(int) const { return false; }; @@ -75,6 +77,7 @@ class SetClampsAction : public ProfileAction { public: SetClampsAction(int boost, int clamp) noexcept : boost_(boost), clamp_(clamp) {} + const char* Name() const override { return "SetClamps"; } bool ExecuteForProcess(uid_t uid, pid_t pid) const override; bool ExecuteForTask(int tid) const override; @@ -87,6 +90,7 @@ class SetTimerSlackAction : public ProfileAction { public: SetTimerSlackAction(unsigned long slack) noexcept : slack_(slack) {} + const char* Name() const override { return "SetTimerSlack"; } bool ExecuteForTask(int tid) const override; private: @@ -101,6 +105,7 @@ class SetAttributeAction : public ProfileAction { SetAttributeAction(const IProfileAttribute* attribute, const std::string& value) : attribute_(attribute), value_(value) {} + const char* Name() const override { return "SetAttribute"; } bool ExecuteForProcess(uid_t uid, pid_t pid) const override; bool ExecuteForTask(int tid) const override; @@ -114,6 +119,7 @@ class SetCgroupAction : public ProfileAction { public: SetCgroupAction(const CgroupController& c, const std::string& p); + const char* Name() const override { return "SetCgroup"; } bool ExecuteForProcess(uid_t uid, pid_t pid) const override; bool ExecuteForTask(int tid) const override; void EnableResourceCaching(ResourceCacheType cache_type) override; @@ -136,6 +142,7 @@ class WriteFileAction : public ProfileAction { public: WriteFileAction(const std::string& path, const std::string& value, bool logfailures); + const char* Name() const override { return "WriteFile"; } bool ExecuteForProcess(uid_t uid, pid_t pid) const override; bool ExecuteForTask(int tid) const override; void EnableResourceCaching(ResourceCacheType cache_type) override; @@ -154,8 +161,9 @@ class WriteFileAction : public ProfileAction { class TaskProfile { public: - TaskProfile() : res_cached_(false) {} + TaskProfile(const std::string& name) : name_(name), res_cached_(false) {} + const std::string& Name() const { return name_; } void Add(std::unique_ptr e) { elements_.push_back(std::move(e)); } void MoveTo(TaskProfile* profile); @@ -165,6 +173,7 @@ class TaskProfile { void DropResourceCaching(ProfileAction::ResourceCacheType cache_type); private: + const std::string name_; bool res_cached_; std::vector> elements_; }; @@ -175,6 +184,7 @@ class ApplyProfileAction : public ProfileAction { ApplyProfileAction(const std::vector>& profiles) : profiles_(profiles) {} + const char* Name() const override { return "ApplyProfileAction"; } bool ExecuteForProcess(uid_t uid, pid_t pid) const override; bool ExecuteForTask(int tid) const override; void EnableResourceCaching(ProfileAction::ResourceCacheType cache_type) override;