Skip to content

Commit

Permalink
cpusensor: Search in peci-0 directory
Browse files Browse the repository at this point in the history
The code was searching /sys/bus/peci/devices for PECI sensors.
This results in below directories to be searched on typical 2 socket
x86 systems.
* peci-0
* 0-30
* 0-31
Where 0-30 and 0-31 exist in peci-0 as well.
It is unnecessary, and the files in 0-30 and 0-31 will be searched twice
because they exist in peci-0.

Change the code to search in /sys/bus/peci/devices/peci-0 to make sure
it only search the files within the expected directory.
Note that the current peci driver only create peci-0, this code could be
easily extended to support peci-1/2/3 in the future.

Tested: The time for cpusensor to search the peci sensors reduces from
        0.5s to about 0.3s.

Signed-off-by: Lei YU <[email protected]>
Change-Id: I7b0f3ad7bea7a3dced13a985f0ad19ffda33f6d2
  • Loading branch information
leiyu-bytedance committed Dec 14, 2021
1 parent afd55b9 commit 0b207a6
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
5 changes: 2 additions & 3 deletions src/CPUSensorMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,8 @@ bool createSensors(boost::asio::io_service& io,
}

std::vector<fs::path> hwmonNamePaths;
if (!findFiles(fs::path(R"(/sys/bus/peci/devices)"),
R"(peci-\d+/\d+-.+/peci-.+/hwmon/hwmon\d+/name$)",
hwmonNamePaths, 6))
if (!findFiles(fs::path(R"(/sys/bus/peci/devices/peci-0)"),
R"(\d+-.+/peci-.+/hwmon/hwmon\d+/name$)", hwmonNamePaths, 5))
{
std::cerr << "No CPU sensors in system\n";
return true;
Expand Down
18 changes: 18 additions & 0 deletions tests/test_Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,21 @@ TEST_F(TestUtils, findFiles_peciPath_end_with_slash)
EXPECT_TRUE(ret);
EXPECT_EQ(foundPaths.size(), 3u);
}

TEST_F(TestUtils, findFiles_in_sub_peci_match)
{
std::vector<fs::path> foundPaths;
auto ret =
findFiles(peciDir / "peci-0", R"(\d+-.+/peci-.+/hwmon/hwmon\d+/name$)",
foundPaths, 5);
EXPECT_TRUE(ret);
EXPECT_EQ(foundPaths.size(), 1u);

foundPaths.clear();

ret = findFiles(peciDir / "peci-0",
R"(\d+-.+/peci-.+/hwmon/hwmon\d+/temp\d+_input)",
foundPaths, 5);
EXPECT_TRUE(ret);
EXPECT_EQ(foundPaths.size(), 3u);
}

0 comments on commit 0b207a6

Please sign in to comment.