Skip to content

Commit d08c9e3

Browse files
somasunmeta-codesync[bot]
authored andcommitted
Log platform exploration time to ODS
Reviewed By: Scott8440 Differential Revision: D91080767 fbshipit-source-id: 22999bc472a22895fa839ae59b5df049f2513e8a
1 parent cfdc6af commit d08c9e3

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-0
lines changed

fboss/platform/platform_manager/Main.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) 2004-present, Meta Platforms, Inc. and affiliates.
22
// All Rights Reserved.
33

4+
#include <chrono>
45
#include <cstdlib>
56
#include <stdexcept>
67

@@ -58,11 +59,32 @@ int main(int argc, char** argv) {
5859
dataStore.emplace(config);
5960
scubaLogger.emplace(*config.platformName(), dataStore.value());
6061

62+
auto startTime = std::chrono::steady_clock::now();
6163
PkgManager pkgManager(config);
6264
pkgManager.processAll();
6365
PlatformExplorer platformExplorer(
6466
config, dataStore.value(), scubaLogger.value());
6567
platformExplorer.explore();
68+
auto endTime = std::chrono::steady_clock::now();
69+
70+
// Calculate elapsed time in seconds
71+
auto elapsedSeconds =
72+
std::chrono::duration_cast<std::chrono::seconds>(endTime - startTime)
73+
.count();
74+
75+
// Publish exploration time counters
76+
if (pkgManager.wereKmodsUnloaded()) {
77+
fb303::fbData->setCounter(
78+
"package_manager.exploration_time.with_kmod_unload", elapsedSeconds);
79+
} else {
80+
fb303::fbData->setCounter(
81+
"package_manager.exploration_time.without_kmod_unload",
82+
elapsedSeconds);
83+
}
84+
XLOG(INFO) << fmt::format(
85+
"Exploration complete in {} seconds. Kmods were {}reloaded.",
86+
elapsedSeconds,
87+
pkgManager.wereKmodsUnloaded() ? "" : "NOT ");
6688

6789
if (FLAGS_run_once) {
6890
XLOG(INFO) << fmt::format(

fboss/platform/platform_manager/PkgManager.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ void PkgManager::unloadBspKmods() const {
429429
"Skipping to unload {}. Reason: Already unloaded", kmod);
430430
}
431431
}
432+
kmodsUnloaded_ = true;
432433
}
433434

434435
void PkgManager::loadRequiredKmods() const {
@@ -502,4 +503,8 @@ std::string PkgManager::getKmodsRpmBaseWithKernelName() const {
502503
*platformConfig_.bspKmodsRpmName(),
503504
systemInterface_->getHostKernelVersion());
504505
}
506+
507+
bool PkgManager::wereKmodsUnloaded() const {
508+
return kmodsUnloaded_;
509+
}
505510
} // namespace facebook::fboss::platform::platform_manager

fboss/platform/platform_manager/PkgManager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class PkgManager {
6262
virtual void loadRequiredKmods() const;
6363
void removeInstalledRpms() const;
6464
BspKmodsFile readKmodsFile() const;
65+
bool wereKmodsUnloaded() const;
6566

6667
private:
6768
std::string getKmodsRpmName() const;
@@ -71,6 +72,7 @@ class PkgManager {
7172
const PlatformConfig& platformConfig_;
7273
const std::shared_ptr<package_manager::SystemInterface> systemInterface_;
7374
const std::shared_ptr<PlatformFsUtils> platformFsUtils_;
75+
mutable bool kmodsUnloaded_{false};
7476
};
7577

7678
} // namespace facebook::fboss::platform::platform_manager

fboss/platform/platform_manager/tests/PkgManagerTest.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,12 @@ TEST_F(PkgManagerTest, unloadBspKmods) {
301301
*platformConfig_.bspKmodsRpmName())))
302302
.WillOnce(Return(std::vector<std::string>{}));
303303
EXPECT_CALL(*mockSystemInterface_, lsmod()).Times(0);
304+
EXPECT_FALSE(pkgManager_.wereKmodsUnloaded());
304305
EXPECT_NO_THROW(pkgManager_.unloadBspKmods());
306+
EXPECT_FALSE(pkgManager_.wereKmodsUnloaded());
305307
EXPECT_EQ(
306308
facebook::fb303::fbData->getCounter(PkgManager::kUnloadKmodsFailure), 0);
309+
307310
// No kmods.json when it should exist
308311
EXPECT_CALL(*mockPlatformFsUtils_, getStringFileContent(_))
309312
.WillOnce(Return(std::nullopt));
@@ -317,8 +320,10 @@ TEST_F(PkgManagerTest, unloadBspKmods) {
317320
std::vector<std::string>{
318321
"fboss_bsp_kmods-6.4.3-0_fbk1_755_ga25447393a1d-2.4.0-1"}));
319322
EXPECT_THROW(pkgManager_.unloadBspKmods(), std::runtime_error);
323+
EXPECT_FALSE(pkgManager_.wereKmodsUnloaded());
320324
EXPECT_EQ(
321325
facebook::fb303::fbData->getCounter(PkgManager::kUnloadKmodsFailure), 1);
326+
322327
// kmods.json exist and all kmods are loaded
323328
EXPECT_CALL(*mockPlatformFsUtils_, getStringFileContent(_))
324329
.WillOnce(Return(jsonBspKmodsFile_));
@@ -333,8 +338,10 @@ TEST_F(PkgManagerTest, unloadBspKmods) {
333338
bspKmodsFile_.bspKmods()->size())
334339
.WillRepeatedly(Return(true));
335340
EXPECT_NO_THROW(pkgManager_.unloadBspKmods());
341+
EXPECT_TRUE(pkgManager_.wereKmodsUnloaded());
336342
EXPECT_EQ(
337343
facebook::fb303::fbData->getCounter(PkgManager::kUnloadKmodsFailure), 0);
344+
338345
// kmods.json exists but unload fails
339346
EXPECT_CALL(*mockPlatformFsUtils_, getStringFileContent(_))
340347
.WillOnce(Return(jsonBspKmodsFile_));
@@ -345,15 +352,18 @@ TEST_F(PkgManagerTest, unloadBspKmods) {
345352
ranges::to<std::set<std::string>>));
346353
EXPECT_CALL(*mockSystemInterface_, unloadKmod(_)).WillOnce(Return(false));
347354
EXPECT_THROW(pkgManager_.unloadBspKmods(), std::runtime_error);
355+
EXPECT_TRUE(pkgManager_.wereKmodsUnloaded());
348356
EXPECT_EQ(
349357
facebook::fb303::fbData->getCounter(PkgManager::kUnloadKmodsFailure), 1);
358+
350359
// kmods.json exist and all kmods aren't loaded
351360
EXPECT_CALL(*mockPlatformFsUtils_, getStringFileContent(_))
352361
.WillOnce(Return(jsonBspKmodsFile_));
353362
EXPECT_CALL(*mockSystemInterface_, lsmod())
354363
.WillOnce(Return(std::set<std::string>{}));
355364
EXPECT_CALL(*mockSystemInterface_, unloadKmod(_)).Times(0);
356365
EXPECT_NO_THROW(pkgManager_.unloadBspKmods());
366+
EXPECT_TRUE(pkgManager_.wereKmodsUnloaded());
357367
EXPECT_EQ(
358368
facebook::fb303::fbData->getCounter(PkgManager::kUnloadKmodsFailure), 0);
359369
}

0 commit comments

Comments
 (0)