* Added swap usage and page faults per second data sources.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27598 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2008-09-17 16:28:32 +00:00
parent ca7cb625b9
commit dc79961e1e
5 changed files with 211 additions and 5 deletions

View File

@ -18,15 +18,17 @@
const DataSource* kSources[] = {
new UsedMemoryDataSource(),
new CachedMemoryDataSource(),
new SwapSpaceDataSource(),
new PageFaultsDataSource(),
new CPUUsageDataSource(),
new CPUCombinedUsageDataSource(),
new NetworkUsageDataSource(true),
new NetworkUsageDataSource(false),
new SemaphoresDataSource(),
new PortsDataSource(),
new ThreadsDataSource(),
new TeamsDataSource(),
new RunningAppsDataSource(),
new CPUUsageDataSource(),
new CPUCombinedUsageDataSource(),
new NetworkUsageDataSource(true),
new NetworkUsageDataSource(false),
new ClipboardSizeDataSource(false),
new ClipboardSizeDataSource(true),
new MediaNodesDataSource()
@ -375,6 +377,51 @@ CachedMemoryDataSource::Primary() const
// #pragma mark -
SwapSpaceDataSource::SwapSpaceDataSource()
{
SystemInfo info;
fColor = (rgb_color){0, 120, 0};
fMaximum = info.MaxSwapSpace();
}
SwapSpaceDataSource::~SwapSpaceDataSource()
{
}
DataSource*
SwapSpaceDataSource::Copy() const
{
return new SwapSpaceDataSource(*this);
}
int64
SwapSpaceDataSource::NextValue(SystemInfo& info)
{
return info.UsedSwapSpace();
}
const char*
SwapSpaceDataSource::Label() const
{
return "Swap Space";
}
bool
SwapSpaceDataSource::Primary() const
{
return true;
}
// #pragma mark -
SemaphoresDataSource::SemaphoresDataSource()
{
SystemInfo info;
@ -844,6 +891,97 @@ CPUCombinedUsageDataSource::Primary() const
// #pragma mark -
PageFaultsDataSource::PageFaultsDataSource()
:
fPreviousFaults(0),
fPreviousTime(0)
{
SystemInfo info;
NextValue(info);
fMinimum = 0;
fMaximum = 1000000000LL;
fColor = (rgb_color){200, 0, 150, 0};
}
PageFaultsDataSource::PageFaultsDataSource(const PageFaultsDataSource& other)
: DataSource(other)
{
fPreviousFaults = other.fPreviousFaults;
fPreviousTime = other.fPreviousTime;
}
PageFaultsDataSource::~PageFaultsDataSource()
{
}
DataSource*
PageFaultsDataSource::Copy() const
{
return new PageFaultsDataSource(*this);
}
void
PageFaultsDataSource::Print(BString& text, int64 value) const
{
char buffer[32];
snprintf(buffer, sizeof(buffer), "%.1f faults/s", value / 1024.0);
text = buffer;
}
int64
PageFaultsDataSource::NextValue(SystemInfo& info)
{
uint64 faults = info.PageFaults();
int64 faultsPerSecond = uint64(1024 * double(faults - fPreviousFaults)
/ (info.Time() - fPreviousTime) * 1000000.0);
fPreviousFaults = faults;
fPreviousTime = info.Time();
return faultsPerSecond;
}
const char*
PageFaultsDataSource::Label() const
{
return "Page Faults";
}
const char*
PageFaultsDataSource::Name() const
{
return "Page Faults";
}
bool
PageFaultsDataSource::AdaptiveScale() const
{
return true;
}
bool
PageFaultsDataSource::Primary() const
{
return false;
}
// #pragma mark -
NetworkUsageDataSource::NetworkUsageDataSource(bool in)
:
fIn(in),

View File

@ -98,6 +98,19 @@ public:
};
class SwapSpaceDataSource : public MemoryDataSource {
public:
SwapSpaceDataSource();
virtual ~SwapSpaceDataSource();
virtual DataSource* Copy() const;
virtual int64 NextValue(SystemInfo& info);
virtual const char* Label() const;
virtual bool Primary() const;
};
class SemaphoresDataSource : public DataSource {
public:
SemaphoresDataSource();
@ -216,6 +229,29 @@ private:
};
class PageFaultsDataSource : public DataSource {
public:
PageFaultsDataSource();
PageFaultsDataSource(
const PageFaultsDataSource& other);
virtual ~PageFaultsDataSource();
virtual DataSource* Copy() const;
virtual void Print(BString& text, int64 value) const;
virtual int64 NextValue(SystemInfo& info);
virtual const char* Name() const;
virtual const char* Label() const;
virtual bool AdaptiveScale() const;
virtual bool Primary() const;
private:
uint32 fPreviousFaults;
bigtime_t fPreviousTime;
};
class NetworkUsageDataSource : public DataSource {
public:
NetworkUsageDataSource(bool in);

View File

@ -3,7 +3,7 @@ SubDir HAIKU_TOP src apps activitymonitor ;
# XXX: Temporary only
SetSubDirSupportedPlatformsBeOSCompatible ;
UsePrivateHeaders shared ;
UsePrivateHeaders shared system ;
Application ActivityMonitor :
ActivityMonitor.cpp

View File

@ -27,6 +27,8 @@ SystemInfo::SystemInfo(SystemInfoHandler* handler)
fMediaBuffers(0)
{
get_system_info(&fSystemInfo);
get_system_info_etc(B_MEMORY_INFO, &fMemoryInfo,
sizeof(system_memory_info));
if (handler != NULL) {
fRunningApps = handler->RunningApps();
@ -69,6 +71,27 @@ SystemInfo::MaxMemory() const
}
uint32
SystemInfo::PageFaults() const
{
return fMemoryInfo.page_faults;
}
uint64
SystemInfo::UsedSwapSpace() const
{
return fMemoryInfo.max_swap_space - fMemoryInfo.free_swap_space;
}
uint64
SystemInfo::MaxSwapSpace() const
{
return fMemoryInfo.max_swap_space;
}
uint32
SystemInfo::UsedSemaphores() const
{

View File

@ -8,6 +8,9 @@
#include <OS.h>
#include <system_info.h>
class SystemInfoHandler;
@ -20,6 +23,11 @@ public:
uint64 UsedMemory() const;
uint64 MaxMemory() const;
uint32 PageFaults() const;
uint64 MaxSwapSpace() const;
uint64 UsedSwapSpace() const;
uint32 UsedSemaphores() const;
uint32 MaxSemaphores() const;
@ -53,6 +61,7 @@ private:
void _RetrieveNetwork();
system_info fSystemInfo;
system_memory_info fMemoryInfo;
bigtime_t fTime;
bool fRetrievedNetwork;
uint64 fBytesReceived;