File indexing completed on 2024-05-19 05:30:18
0001 /* 0002 SPDX-FileCopyrightText: 2021 David Redondo <kde@david-redondo.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include "loadaverages.h" 0008 0009 #include <KLocalizedString> 0010 #include <array> 0011 0012 LoadAverages::LoadAverages(KSysGuard::SensorContainer *parent) 0013 : KSysGuard::SensorObject(QStringLiteral("loadaverages"), i18nc("@title", "Load Averages"), parent) 0014 , average1Minute{new KSysGuard::SensorProperty(QStringLiteral("loadaverage1"), i18nc("@title", "Load average (1 minute)"), 0, this)} 0015 , average5Minutes{new KSysGuard::SensorProperty(QStringLiteral("loadaverage5"), i18nc("@title", "Load average (5 minutes)"), 0, this)} 0016 , average15Minutes{new KSysGuard::SensorProperty(QStringLiteral("loadaverage15"), i18nc("@title", "Load average (15 minute)"), 0, this)} 0017 { 0018 average1Minute->setShortName(i18nc("@title, Short for 'Load average (1 minute)", "Load average (1m)")); 0019 average5Minutes->setShortName(i18nc("@title, Short for 'Load average (5 minutes)", "Load average (5m)")); 0020 average15Minutes->setShortName(i18nc("@title, Short for 'Load average (15 minutes)", "Load average (15m)")); 0021 0022 average1Minute->setDescription(i18nc("@info", "Number of jobs in the run queue averaged over 1 minute")); 0023 average5Minutes->setDescription(i18nc("@info", "Number of jobs in the run queue averaged over 5 minutes")); 0024 average15Minutes->setDescription(i18nc("@info", "Number of jobs in the run queue averaged over 15 minutes")); 0025 0026 average1Minute->setUnit(KSysGuard::UnitNone); 0027 average5Minutes->setUnit(KSysGuard::UnitNone); 0028 average15Minutes->setUnit(KSysGuard::UnitNone); 0029 } 0030 0031 void LoadAverages::update() 0032 { 0033 if (isSubscribed()) { 0034 std::array<double, 3> averages; 0035 const int numRetrieved = getloadavg(averages.data(), 3); 0036 if (numRetrieved >= 1) { 0037 average1Minute->setValue(averages[0]); 0038 } 0039 if (numRetrieved >= 2) { 0040 average5Minutes->setValue(averages[1]); 0041 } 0042 if (numRetrieved == 3) { 0043 average15Minutes->setValue(averages[2]); 0044 } 0045 } 0046 }