mirror of
https://github.com/oguzhaninan/Stacer.git
synced 2026-05-24 16:31:12 -04:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user