Make sure that not only the first disk IO is reported but the sum of all disk IO.

For example: If the computer has devices sda and sdb, add the IO numbers of both devices together.
This commit is contained in:
maudrid
2020-08-21 21:46:28 +02:00
parent 28d9134436
commit a88758fd14
2 changed files with 21 additions and 21 deletions

View File

@@ -8,14 +8,13 @@ QList<Disk*> DiskInfo::getDisks() const
void DiskInfo::updateDiskInfo()
{
qDeleteAll(disks);
disks.clear();
QList<QStorageInfo> storageInfoList = QStorageInfo::mountedVolumes();
for(const QStorageInfo &info: storageInfoList) {
if (info.isValid()) {
Disk *disk = new Disk();
Disk *disk = new Disk;
disk->name = info.displayName();
disk->device = info.device();
disk->size = info.bytesTotal();
@@ -38,11 +37,6 @@ QList<QString> DiskInfo::devices()
return set.toList();
}
DiskInfo::~DiskInfo()
{
qDeleteAll(disks);
}
QList<QString> DiskInfo::fileSystemTypes()
{
QSet<QString> set;
@@ -55,30 +49,36 @@ QList<QString> DiskInfo::fileSystemTypes()
QList<quint64> DiskInfo::getDiskIO() const
{
static QString diskName = getDiskName();
static QStringList diskNames = getDiskNames();
QList<quint64> diskReadWrite;
quint64 totalRead = 0;
quint64 totalWrite = 0;
QStringList diskStat = FileUtil::readStringFromFile(QString("/sys/block/%1/stat").arg(diskName))
.trimmed()
.split(QRegExp("\\s+"));
for (const QString diskName : diskNames) {
QStringList diskStat = FileUtil::readStringFromFile(QString("/sys/block/%1/stat").arg(diskName))
.trimmed()
.split(QRegExp("\\s+"));
if (diskStat.count() > 7) {
diskReadWrite.append(diskStat.at(2).toLongLong() * 512);
diskReadWrite.append(diskStat.at(6).toLongLong() * 512);
if (diskStat.count() > 7) {
totalRead = totalRead + (diskStat.at(2).toLongLong() * 512);
totalWrite = totalWrite + (diskStat.at(6).toLongLong() * 512);
}
}
diskReadWrite.append(totalRead);
diskReadWrite.append(totalWrite);
return diskReadWrite;
}
QString DiskInfo::getDiskName() const
QStringList DiskInfo::getDiskNames() const
{
QDir blocks("/sys/block");
QStringList disks;
for (const QFileInfo entryInfo : blocks.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)) {
if (QFile::exists(QString("%1/device").arg(entryInfo.absoluteFilePath()))) {
return entryInfo.baseName();
disks.append(entryInfo.baseName());
}
}
return QString();
return disks;
}

View File

@@ -17,16 +17,16 @@ public:
QList<Disk*> getDisks() const;
void updateDiskInfo();
QList<quint64> getDiskIO() const;
QString getDiskName() const;
QStringList getDiskNames() const;
QList<QString> fileSystemTypes();
QList<QString> devices();
~DiskInfo();
private:
QList<Disk*> disks;
};
struct Disk {
class Disk {
public:
QString name;
QString device;
QString fileSystemType;