From 99cdd3c8057dc55b28df17ed567b03afc9c55bb5 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Thu, 28 Nov 2024 18:38:57 +0100 Subject: [PATCH] feat: added swapins and swapouts to the RAM module (#2222) --- Modules/RAM/main.swift | 7 ++++++- Modules/RAM/readers.swift | 7 ++++++- Modules/RAM/settings.swift | 2 ++ Modules/RAM/widget.swift | 4 +++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Modules/RAM/main.swift b/Modules/RAM/main.swift index 4029cb3d..f22d6758 100644 --- a/Modules/RAM/main.swift +++ b/Modules/RAM/main.swift @@ -29,6 +29,9 @@ public struct RAM_Usage: Codable { var swap: Swap var pressure: Pressure + var swapins: Int64 + var swapouts: Int64 + public var usage: Double { get { Double((self.total - self.free) / self.total) } } @@ -131,7 +134,7 @@ public class RAM: Module { } private func loadCallback(_ raw: RAM_Usage?) { - guard raw != nil, let value = raw, self.enabled else { return } + guard let value = raw, self.enabled else { return } self.popupView.loadCallback(value) self.portalView.callback(value) @@ -193,6 +196,8 @@ public class RAM: Module { case "compressed": replacement = Units(bytes: Int64(value.compressed)).getReadableMemory() case "app": replacement = Units(bytes: Int64(value.app)).getReadableMemory() case "cache": replacement = Units(bytes: Int64(value.cache)).getReadableMemory() + case "swapins": replacement = "\(value.swapins)" + case "swapouts": replacement = "\(value.swapouts)" default: return } case "$swap": diff --git a/Modules/RAM/readers.swift b/Modules/RAM/readers.swift index 095b70b2..3cae3d53 100644 --- a/Modules/RAM/readers.swift +++ b/Modules/RAM/readers.swift @@ -52,6 +52,8 @@ internal class UsageReader: Reader { let compressed = Double(stats.compressor_page_count) * Double(vm_page_size) let purgeable = Double(stats.purgeable_count) * Double(vm_page_size) let external = Double(stats.external_page_count) * Double(vm_page_size) + let swapins = Int64(stats.swapins) + let swapouts = Int64(stats.swapouts) let used = active + inactive + speculative + wired + compressed - purgeable - external let free = self.totalSize - used @@ -89,7 +91,10 @@ internal class UsageReader: Reader { used: Double(swap.xsu_used), free: Double(swap.xsu_avail) ), - pressure: Pressure(level: pressureLevel, value: pressureValue) + pressure: Pressure(level: pressureLevel, value: pressureValue), + + swapins: swapins, + swapouts: swapouts )) return } diff --git a/Modules/RAM/settings.swift b/Modules/RAM/settings.swift index a92f3f8e..878ccf0c 100644 --- a/Modules/RAM/settings.swift +++ b/Modules/RAM/settings.swift @@ -32,6 +32,8 @@ You can use a combination of any of the variables.
  • $mem.compressed: Compressed RAM memory.
  • $mem.app: Used RAM memory by applications.
  • $mem.cache: Cached RAM memory.
  • +
  • $mem.swapins: The number of memory pages loaded in from virtual memory to physical memory.
  • +
  • $mem.swapouts: The number of memory pages swapped out to physical memory from virtual memory.
  • $swap.total: Total swap memory.
  • $swap.used: Used swap memory.
  • $swap.free: Free swap memory.
  • diff --git a/Modules/RAM/widget.swift b/Modules/RAM/widget.swift index 7e6aa60a..0aea99d4 100644 --- a/Modules/RAM/widget.swift +++ b/Modules/RAM/widget.swift @@ -28,7 +28,9 @@ public struct RAM_entry: TimelineEntry { app: 16369778688.0, cache: 12575948800.0, swap: Swap(total: 0, used: 0, free: 0), - pressure: Pressure(level: 1, value: .normal) + pressure: Pressure(level: 1, value: .normal), + swapins: 14, + swapouts: 16 ) )