@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapPeak = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t MemoryZswapCurrent = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryAvailable = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUUsageNSec = ...;
<!--property MemorySwapPeak is not documented!-->
+ <!--property MemoryZswapCurrent is not documented!-->
+
<!--property CPUUsageNSec is not documented!-->
<!--property EffectiveCPUs is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapPeak"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="MemoryZswapCurrent"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAvailable"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUUsageNSec"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapPeak = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t MemoryZswapCurrent = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryAvailable = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUUsageNSec = ...;
<!--property MemorySwapPeak is not documented!-->
+ <!--property MemoryZswapCurrent is not documented!-->
+
<!--property CPUUsageNSec is not documented!-->
<!--property EffectiveCPUs is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapPeak"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="MemoryZswapCurrent"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAvailable"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUUsageNSec"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapPeak = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t MemoryZswapCurrent = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryAvailable = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUUsageNSec = ...;
<!--property MemorySwapPeak is not documented!-->
+ <!--property MemoryZswapCurrent is not documented!-->
+
<!--property CPUUsageNSec is not documented!-->
<!--property EffectiveCPUs is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapPeak"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="MemoryZswapCurrent"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAvailable"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUUsageNSec"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapPeak = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t MemoryZswapCurrent = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryAvailable = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUUsageNSec = ...;
<!--property MemorySwapPeak is not documented!-->
+ <!--property MemoryZswapCurrent is not documented!-->
+
<!--property CPUUsageNSec is not documented!-->
<!--property EffectiveCPUs is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapPeak"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="MemoryZswapCurrent"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAvailable"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUUsageNSec"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapPeak = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t MemoryZswapCurrent = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryAvailable = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUUsageNSec = ...;
<!--property MemorySwapPeak is not documented!-->
+ <!--property MemoryZswapCurrent is not documented!-->
+
<!--property CPUUsageNSec is not documented!-->
<!--property EffectiveCPUs is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapPeak"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="MemoryZswapCurrent"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAvailable"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUUsageNSec"/>
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemorySwapPeak = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
+ readonly t MemoryZswapCurrent = ...;
+ @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryAvailable = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUUsageNSec = ...;
<!--property MemorySwapPeak is not documented!-->
+ <!--property MemoryZswapCurrent is not documented!-->
+
<!--property CPUUsageNSec is not documented!-->
<!--property EffectiveCPUs is not documented!-->
<variablelist class="dbus-property" generated="True" extra-ref="MemorySwapPeak"/>
+ <variablelist class="dbus-property" generated="True" extra-ref="MemoryZswapCurrent"/>
+
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAvailable"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUUsageNSec"/>
<varname>SetLoginEnvironment</varname>,
<varname>CoredumpReceive</varname>,
<varname>MemoryPeak</varname>,
- <varname>MemorySwapCurrent</varname>, and
- <varname>MemorySwapPeak</varname> were added in version 255.</para>
+ <varname>MemorySwapCurrent</varname>,
+ <varname>MemorySwapPeak</varname>, and
+ <varname>MemoryZswapCurrent</varname> were added in version 255.</para>
</refsect2>
<refsect2>
<title>Socket Unit Objects</title>
<varname>SetLoginEnvironment</varname>,
<varname>CoredumpReceive</varname>,
<varname>MemoryPeak</varname>,
- <varname>MemorySwapCurrent</varname>, and
- <varname>MemorySwapPeak</varname> were added in version 255.</para>
+ <varname>MemorySwapCurrent</varname>,
+ <varname>MemorySwapPeak</varname>, and
+ <varname>MemoryZswapCurrent</varname> were added in version 255.</para>
</refsect2>
<refsect2>
<title>Mount Unit Objects</title>
<varname>SetLoginEnvironment</varname>,
<varname>CoredumpReceive</varname>,
<varname>MemoryPeak</varname>,
- <varname>MemorySwapCurrent</varname>, and
- <varname>MemorySwapPeak</varname> were added in version 255.</para>
+ <varname>MemorySwapCurrent</varname>,
+ <varname>MemorySwapPeak</varname>, and
+ <varname>MemoryZswapCurrent</varname> were added in version 255.</para>
</refsect2>
<refsect2>
<title>Swap Unit Objects</title>
<varname>SetLoginEnvironment</varname>,
<varname>CoredumpReceive</varname>,
<varname>MemoryPeak</varname>,
- <varname>MemorySwapCurrent</varname>, and
- <varname>MemorySwapPeak</varname> were added in version 255.</para>
+ <varname>MemorySwapCurrent</varname>,
+ <varname>MemorySwapPeak</varname>, and
+ <varname>MemoryZswapCurrent</varname> were added in version 255.</para>
</refsect2>
<refsect2>
<title>Slice Unit Objects</title>
<para><varname>NFTSet</varname>,
<varname>CoredumpReceive</varname>,
<varname>MemoryPeak</varname>,
- <varname>MemorySwapCurrent</varname>, and
- <varname>MemorySwapPeak</varname> were added in version 255.</para>
+ <varname>MemorySwapCurrent</varname>,
+ <varname>MemorySwapPeak</varname>, and
+ <varname>MemoryZswapCurrent</varname> were added in version 255.</para>
</refsect2>
<refsect2>
<title>Scope Unit Objects</title>
<para><varname>NFTSet</varname>,
<varname>CoredumpReceive</varname>,
<varname>MemoryPeak</varname>,
- <varname>MemorySwapCurrent</varname>, and
- <varname>MemorySwapPeak</varname> were added in version 255.</para>
+ <varname>MemorySwapCurrent</varname>,
+ <varname>MemorySwapPeak</varname>, and
+ <varname>MemoryZswapCurrent</varname> were added in version 255.</para>
</refsect2>
<refsect2>
<title>Job Objects</title>
return sd_bus_message_append(reply, "t", sz);
}
+static int property_get_current_zswap_memory(
+ sd_bus *bus,
+ const char *path,
+ const char *interface,
+ const char *property,
+ sd_bus_message *reply,
+ void *userdata,
+ sd_bus_error *error) {
+
+ uint64_t sz = UINT64_MAX;
+ Unit *u = ASSERT_PTR(userdata);
+ int r;
+
+ assert(bus);
+ assert(reply);
+
+ r = unit_get_memory_swap_current(u, &sz);
+ if (r < 0 && r != -ENODATA)
+ log_unit_warning_errno(u, r, "Failed to get memory.zswap.current attribute: %m");
+
+ return sd_bus_message_append(reply, "t", sz);
+}
+
static int property_get_available_memory(
sd_bus *bus,
const char *path,
SD_BUS_PROPERTY("MemoryPeak", "t", property_get_peak_memory, 0, 0),
SD_BUS_PROPERTY("MemorySwapCurrent", "t", property_get_current_swap_memory, 0, 0),
SD_BUS_PROPERTY("MemorySwapPeak", "t", property_get_peak_swap_memory, 0, 0),
+ SD_BUS_PROPERTY("MemoryZswapCurrent", "t", property_get_current_zswap_memory, 0, 0),
SD_BUS_PROPERTY("MemoryAvailable", "t", property_get_available_memory, 0, 0),
SD_BUS_PROPERTY("CPUUsageNSec", "t", property_get_cpu_usage, 0, 0),
SD_BUS_PROPERTY("EffectiveCPUs", "ay", property_get_cpuset_cpus, 0, 0),
uint64_t memory_peak;
uint64_t memory_swap_current;
uint64_t memory_swap_peak;
+ uint64_t memory_zswap_current;
uint64_t memory_min;
uint64_t memory_low;
uint64_t startup_memory_low;
/* Only show current swap if it ever was non-zero or is currently non-zero. In both cases
memory_swap_peak will be non-zero (and not CGROUP_LIMIT_MAX). */
- bool show_memory_swap = !IN_SET(i->memory_swap_peak, 0, CGROUP_LIMIT_MAX);
+ bool show_memory_swap = !IN_SET(i->memory_swap_peak, 0, CGROUP_LIMIT_MAX),
+ show_memory_zswap_current = !IN_SET(i->memory_zswap_current, 0, CGROUP_LIMIT_MAX);
if (i->memory_peak != CGROUP_LIMIT_MAX ||
show_memory_swap ||
+ show_memory_zswap_current ||
i->memory_min > 0 ||
i->memory_low > 0 || i->startup_memory_low > 0 ||
i->memory_high != CGROUP_LIMIT_MAX || i->startup_memory_high != CGROUP_LIMIT_MAX ||
printf("%sswap peak: %s", prefix, FORMAT_BYTES(i->memory_swap_peak));
prefix = " ";
}
+ if (show_memory_zswap_current) {
+ printf("%szswap: %s", prefix, FORMAT_BYTES(i->memory_zswap_current));
+ prefix = " ";
+ }
printf(")");
}
printf("\n");
{ "MemoryPeak", "t", NULL, offsetof(UnitStatusInfo, memory_peak) },
{ "MemorySwapCurrent", "t", NULL, offsetof(UnitStatusInfo, memory_swap_current) },
{ "MemorySwapPeak", "t", NULL, offsetof(UnitStatusInfo, memory_swap_peak) },
+ { "MemoryZswapCurrent", "t", NULL, offsetof(UnitStatusInfo, memory_zswap_current) },
{ "MemoryAvailable", "t", NULL, offsetof(UnitStatusInfo, memory_available) },
{ "DefaultMemoryMin", "t", NULL, offsetof(UnitStatusInfo, default_memory_min) },
{ "DefaultMemoryLow", "t", NULL, offsetof(UnitStatusInfo, default_memory_low) },
.memory_peak = CGROUP_LIMIT_MAX,
.memory_swap_current = CGROUP_LIMIT_MAX,
.memory_swap_peak = CGROUP_LIMIT_MAX,
+ .memory_zswap_current = CGROUP_LIMIT_MAX,
.memory_available = CGROUP_LIMIT_MAX,
.cpu_usage_nsec = UINT64_MAX,
.tasks_current = UINT64_MAX,