cpusensor: Search in peci-0 directory
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 <yulei.sh@bytedance.com>
Change-Id: I7b0f3ad7bea7a3dced13a985f0ad19ffda33f6d2
diff --git a/tests/test_Utils.cpp b/tests/test_Utils.cpp
index 170e22d..6f76933 100644
--- a/tests/test_Utils.cpp
+++ b/tests/test_Utils.cpp
@@ -145,3 +145,21 @@
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);
+}