Skip to content

Commit b83a93a

Browse files
authored
Merge pull request #189 from intel-innersource/rdementi/fix-race-condition-resctrl
fix element init race condition when resctrl is empty
2 parents 7b4738d + 5c31d04 commit b83a93a

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/resctrl.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,15 @@ namespace pcm
105105
}
106106
}
107107
}
108-
size_t Resctrl::getMetric(Resctrl::FileMapType & fileMap, int core)
108+
size_t Resctrl::getMetric(const Resctrl::FileMapType & fileMap, int core)
109109
{
110-
auto files = fileMap[core];
110+
auto files = fileMap.find(core);
111+
if (files == fileMap.end())
112+
{
113+
return 0ULL;
114+
}
111115
size_t result = 0;
112-
for (auto& f : files)
116+
for (auto& f : files->second)
113117
{
114118
const auto data = readSysFS(f.c_str(), false);
115119
if (data.empty() == false)
@@ -143,4 +147,4 @@ namespace pcm
143147
}
144148
};
145149

146-
#endif // __linux__
150+
#endif // __linux__

src/resctrl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ namespace pcm
3737
typedef std::unordered_map<int, std::vector<std::string> > FileMapType;
3838
FileMapType L3OCC, MBL, MBT;
3939
Resctrl() = delete;
40-
size_t getMetric(FileMapType & fileMap, int core);
40+
size_t getMetric(const FileMapType & fileMap, int core);
4141
static constexpr auto PCMPath = "/sys/fs/resctrl/mon_groups/pcm";
4242
public:
4343
Resctrl(PCM & m) : pcm(m) {}
@@ -50,4 +50,4 @@ namespace pcm
5050
};
5151
};
5252

53-
#endif // __linux__
53+
#endif // __linux__

0 commit comments

Comments
 (0)