mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 19:38:12 +00:00
SystemMonitor: Show information about purgeable memory
This patch exposes some fields about purgeable memory regions. We now also show total purgeable volatile and non-volatile memory in the big process table.
This commit is contained in:
parent
dfc5eb2b6d
commit
92b46d9814
5 changed files with 33 additions and 0 deletions
|
@ -30,6 +30,13 @@ ProcessMemoryMapWidget::ProcessMemoryMapWidget(GWidget* parent)
|
|||
builder.append('T');
|
||||
return builder.to_string();
|
||||
});
|
||||
pid_vm_fields.empend("Purgeable", TextAlignment::CenterLeft, [](auto& object) {
|
||||
if (!object.get("purgeable").to_bool())
|
||||
return "";
|
||||
if (object.get("volatile").to_bool())
|
||||
return "Volatile";
|
||||
return "Non-volatile";
|
||||
});
|
||||
pid_vm_fields.empend("name", "Name", TextAlignment::CenterLeft);
|
||||
m_json_model = GJsonArrayModel::create({}, move(pid_vm_fields));
|
||||
m_table_view->set_model(GSortingProxyModel::create(*m_json_model));
|
||||
|
|
|
@ -59,6 +59,10 @@ String ProcessModel::column_name(int column) const
|
|||
return "Virtual";
|
||||
case Column::Physical:
|
||||
return "Physical";
|
||||
case Column::PurgeableVolatile:
|
||||
return "Purg:V";
|
||||
case Column::PurgeableNonvolatile:
|
||||
return "Purg:N";
|
||||
case Column::CPU:
|
||||
return "CPU";
|
||||
case Column::Name:
|
||||
|
@ -107,6 +111,10 @@ GModel::ColumnMetadata ProcessModel::column_metadata(int column) const
|
|||
return { 65, TextAlignment::CenterRight };
|
||||
case Column::Physical:
|
||||
return { 65, TextAlignment::CenterRight };
|
||||
case Column::PurgeableVolatile:
|
||||
return { 65, TextAlignment::CenterRight };
|
||||
case Column::PurgeableNonvolatile:
|
||||
return { 65, TextAlignment::CenterRight };
|
||||
case Column::CPU:
|
||||
return { 32, TextAlignment::CenterRight };
|
||||
case Column::Name:
|
||||
|
@ -175,6 +183,10 @@ GVariant ProcessModel::data(const GModelIndex& index, Role role) const
|
|||
return (int)thread.current_state.amount_virtual;
|
||||
case Column::Physical:
|
||||
return (int)thread.current_state.amount_resident;
|
||||
case Column::PurgeableVolatile:
|
||||
return (int)thread.current_state.amount_purgeable_volatile;
|
||||
case Column::PurgeableNonvolatile:
|
||||
return (int)thread.current_state.amount_purgeable_nonvolatile;
|
||||
case Column::CPU:
|
||||
return thread.current_state.cpu_percent;
|
||||
case Column::Name:
|
||||
|
@ -239,6 +251,10 @@ GVariant ProcessModel::data(const GModelIndex& index, Role role) const
|
|||
return pretty_byte_size(thread.current_state.amount_virtual);
|
||||
case Column::Physical:
|
||||
return pretty_byte_size(thread.current_state.amount_resident);
|
||||
case Column::PurgeableVolatile:
|
||||
return pretty_byte_size(thread.current_state.amount_purgeable_volatile);
|
||||
case Column::PurgeableNonvolatile:
|
||||
return pretty_byte_size(thread.current_state.amount_purgeable_nonvolatile);
|
||||
case Column::CPU:
|
||||
return thread.current_state.cpu_percent;
|
||||
case Column::Name:
|
||||
|
@ -297,6 +313,8 @@ void ProcessModel::update()
|
|||
state.file_write_bytes = thread.file_write_bytes;
|
||||
state.amount_virtual = it.value.amount_virtual;
|
||||
state.amount_resident = it.value.amount_resident;
|
||||
state.amount_purgeable_volatile = it.value.amount_purgeable_volatile;
|
||||
state.amount_purgeable_nonvolatile = it.value.amount_purgeable_nonvolatile;
|
||||
state.icon_id = it.value.icon_id;
|
||||
|
||||
state.name = thread.name;
|
||||
|
|
|
@ -30,6 +30,8 @@ public:
|
|||
TID,
|
||||
Virtual,
|
||||
Physical,
|
||||
PurgeableVolatile,
|
||||
PurgeableNonvolatile,
|
||||
Syscalls,
|
||||
InodeFaults,
|
||||
ZeroFaults,
|
||||
|
@ -70,6 +72,8 @@ private:
|
|||
String priority;
|
||||
size_t amount_virtual;
|
||||
size_t amount_resident;
|
||||
size_t amount_purgeable_volatile;
|
||||
size_t amount_purgeable_nonvolatile;
|
||||
unsigned syscall_count;
|
||||
unsigned inode_faults;
|
||||
unsigned zero_faults;
|
||||
|
|
|
@ -38,6 +38,8 @@ HashMap<pid_t, CProcessStatistics> CProcessStatisticsReader::get_all()
|
|||
process.amount_virtual = process_object.get("amount_virtual").to_u32();
|
||||
process.amount_resident = process_object.get("amount_resident").to_u32();
|
||||
process.amount_shared = process_object.get("amount_shared").to_u32();
|
||||
process.amount_purgeable_volatile = process_object.get("amount_purgeable_volatile").to_u32();
|
||||
process.amount_purgeable_nonvolatile = process_object.get("amount_purgeable_nonvolatile").to_u32();
|
||||
process.icon_id = process_object.get("icon_id").to_int();
|
||||
|
||||
auto thread_array = process_object.get("threads").as_array();
|
||||
|
|
|
@ -39,6 +39,8 @@ struct CProcessStatistics {
|
|||
size_t amount_virtual;
|
||||
size_t amount_resident;
|
||||
size_t amount_shared;
|
||||
size_t amount_purgeable_volatile;
|
||||
size_t amount_purgeable_nonvolatile;
|
||||
int icon_id;
|
||||
|
||||
Vector<CThreadStatistics> threads;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue