From dc6f982ae960d82de6d223620ab1f72fceb4c4ef Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 15 May 2025 15:33:53 -0400 Subject: [PATCH] Adds a byte count in the event per second logger --- .../service/relayClient/RelaySpeedLogger.kt | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelaySpeedLogger.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelaySpeedLogger.kt index c6f6ec975..8d56c8d0d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelaySpeedLogger.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/relayClient/RelaySpeedLogger.kt @@ -27,19 +27,30 @@ import com.vitorpamplona.ammolite.relays.Relay import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.utils.LargeCache import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.atomic.AtomicLong +import kotlin.concurrent.atomics.ExperimentalAtomicApi +import kotlin.concurrent.atomics.plusAssign import kotlin.concurrent.timer import kotlin.jvm.java +@OptIn(ExperimentalAtomicApi::class) class KindGroup( var count: AtomicInteger = AtomicInteger(0), + var memory: AtomicLong = AtomicLong(0L), val subs: LargeCache = LargeCache(), val relays: LargeCache = LargeCache(), ) { + companion object { + const val MB: Long = 1024 + } + fun increment( + mem: Long, subId: String, relayUrl: String, ) { count.incrementAndGet() + memory.addAndGet(mem) val subStats = subs.get(subId) if (subStats != null) { @@ -58,6 +69,7 @@ class KindGroup( fun reset() { count.set(0) + memory.set(0L) subs.forEach { key, value -> value.set(0) } relays.forEach { key, value -> value.set(0) } } @@ -66,7 +78,7 @@ class KindGroup( fun printRelays() = relays.joinToString(", ") { key, value -> if (value.get() > 0) "${key.removePrefix("wss://").removeSuffix("/")} ($value)" else "" } - override fun toString() = "(${count.get()}); ${printSubs()}; ${printRelays()}" + override fun toString() = "(${count.get()} - ${memory.get().div(MB)}kb); ${printSubs()}; ${printRelays()}" } class FrameStat { @@ -77,15 +89,16 @@ class FrameStat { kind: Int, subId: String, relayUrl: String, + memory: Long, ) { eventCount.incrementAndGet() val kindGroup = kinds.get(kind) if (kindGroup != null) { - kindGroup.increment(subId, relayUrl) + kindGroup.increment(memory, subId, relayUrl) } else { - val group = KindGroup(AtomicInteger(0)) - group.increment(subId, relayUrl) + val group = KindGroup() + group.increment(memory, subId, relayUrl) kinds.put(kind, group) } } @@ -141,7 +154,7 @@ class RelaySpeedLogger( arrivalTime: Long, afterEOSE: Boolean, ) { - current.increment(event.kind, subscriptionId, relay.url) + current.increment(event.kind, subscriptionId, relay.url, event.countMemory()) } }