sparrowwallet / sparrow

Desktop Bitcoin Wallet focused on security and privacy. Free and open source.
https://sparrowwallet.com/
Apache License 2.0
1.31k stars 189 forks source link

OSX (M1), resource usage and responsiveness report, CPU RAM GPU #379

Open Transisto opened 2 years ago

Transisto commented 2 years ago

image

It's been using 300% CPU when syncing from a server. then 52% CPU and 35% GPU while doing nothing afterward.

Clicking different part of the UI takes about 60 seconds to respond.

Transisto commented 2 years ago

https://www.youtube.com/watch?v=MSEZNtCfmVQ

Video shows the connection button doing some intense blinking.

6102bitcoin commented 2 years ago

Please be aware that your video includes precise bitcoin amounts which could allow someone to identify your utxo(s).

A large portion of your XPUB is also visible

Transisto commented 2 years ago

Thanks @6102bitcoin, it's a test wallet.

The mac task manager has a way to print out a "Sample" of what's the CPU doing.

Would it be useful to send one here? It's very long.

craigraw commented 2 years ago

It could be useful. If it's very long, maybe attach as a text file or use pastebin?

I'm trying to get access to an M1 Pro to see if I can reproduce.

Transisto commented 2 years ago

https://pastebin.com/eigrcRTs

Transisto commented 2 years ago

https://controlc.com/8d770d83

same type of sample 2min later

craigraw commented 2 years ago

Thanks - I've had another report from an M1 Pro user where CPU usage drops to minimal levels after the sync. This differs from your report.

One suspicion is animation - although this area has recently been worked on, it's possible that animating the server toggle and tab icons may be the cause. Does this seem to correlate?

Transisto commented 2 years ago

image image

I'm not sure if it's this slow

The connection toggle isn't animating from what I can tell.

It's after that I clicked "disconnect that the toggle start flicking almost faster than the eye can see.

image

It's like it get in a mode where I clicked disconnect more than once but the UI was not responding, then the UI show connected color while sparrow is in disconected mode.

Here's another ""sample" when the wallet is disconnected and not doing anything. about 80 to 93% CPU.

https://pastebin.com/7H5aQegS

Transisto commented 2 years ago

image

https://pastebin.com/x1D9FzZ1

Here is a sample of Sparrow 1.5.5 with no wallet opened, using 50% CPU and 23% GPU

Transisto commented 2 years ago

The very high CPU and slow responding UI seems to occur when the wallet has been left open for more than a day.

After closing comptely and reopening the CPU usage for a sync is 115% with the following Sample.

https://pastebin.com/p7xenAK1

craigraw commented 2 years ago

It's after that I clicked "disconnect that the toggle start flicking almost faster than the eye can see.

This seems suspicious. Can you try one further test:

  1. Close all wallets
  2. Click the server toggle in the lower right to go offline
  3. Restart Sparrow
  4. Observe CPU usage

This should avoid the possibility of any animation.

Transisto commented 2 years ago

I'll keep monitoring but I can't seems to be able to reproduce.

Baseline usage is 15-25% with a single wallet of moderate usage.

Transisto commented 2 years ago

It's been happening a few times again, 100% CPU, It look like if the wallet doesn't manage to sync fully it stop trying but CPU goes to the max, Also there was two Mixing UTXO animation, Stopping mixing does't stop because there are no connection.

Disconnecting with the toggle, make it shutter at very fast pace. (connected or disconnected)

Reconnecting and wallet end up syncing and works again with a 52% CPU usage.

Disconnected and reconnected the server connection, The blinking stopped but it's at that time that the CPU goes to 300% , becoming very slow responsive but blockstream connection manage to sync over a long time then wallet become more responsive.

craigraw commented 2 years ago

My best guess here is the animation. I am thinking of adding a config file setting which would allow disabling the animation in the server toggle and the wallet icon.

Ideally, running a profiler like JProfiler or Yourkit on this system is the answer though - without that it's very difficult to know what the problem is, unfortunately.

Transisto commented 2 years ago

After a fresh start I left sparrow to handle a new premix

6h later it mostly stopped processing, did one premix in last 4h.

CPU is about 115% - 266%, the UI refreshes about every 3-5min.

If I disconnect the server UI become responsive again with CPU at a stable 50%.

2022-02-22 10:37:10,127 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1687] o.s.w.s.s.c.SockJsClient [null:-1] Initial SockJS "Info" request to server failed, url=wss://pool.whirl.mx:8080/ws/connect org.springframework.web.socket.sockjs.SockJsTransportFailureException: Failed to execute request to https://pool.whirl.mx:8080/ws/connect/info; nested exception is java.lang.InterruptedException at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter.onWebSocketClose(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor63.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.InterruptedException: null at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source) at java.base/java.util.concurrent.CountDownLatch.await(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.HttpRequest.send(Unknown Source) ... 39 common frames omitted 2022-02-22 11:21:37,966 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1776] c.s.w.c.m.d.MixSession[1645545035405] [null:-1] ! connexion lost, reconnecting for a new mix... 2022-02-22 11:21:38,074 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1825] c.s.w.c.m.d.MixSession[1645545065423] [null:-1] ! connexion lost, reconnecting for a new mix... 2022-02-22 11:22:08,200 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1825] o.s.w.s.s.c.SockJsClient [null:-1] Initial SockJS "Info" request to server failed, url=wss://pool.whirl.mx:8080/ws/connect org.springframework.web.socket.sockjs.SockJsTransportFailureException: Failed to execute request to https://pool.whirl.mx:8080/ws/connect/info; nested exception is java.lang.InterruptedException at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter.onWebSocketClose(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.InterruptedException: null at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source) at java.base/java.util.concurrent.CountDownLatch.await(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.HttpRequest.send(Unknown Source) ... 40 common frames omitted 2022-02-22 11:22:08,200 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1776] o.s.w.s.s.c.SockJsClient [null:-1] Initial SockJS "Info" request to server failed, url=wss://pool.whirl.mx:8080/ws/connect org.springframework.web.socket.sockjs.SockJsTransportFailureException: Failed to execute request to https://pool.whirl.mx:8080/ws/connect/info; nested exception is java.lang.InterruptedException at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter.onWebSocketClose(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.InterruptedException: null at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source) at java.base/java.util.concurrent.CountDownLatch.await(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.HttpRequest.send(Unknown Source) ... 40 common frames omitted 2022-02-22 11:34:31,364 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1858] c.s.w.c.m.d.MixSession[1645546931508] [null:-1] ! connexion lost, reconnecting for a new mix... 2022-02-22 11:35:01,456 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1858] o.s.w.s.s.c.SockJsClient [null:-1] Initial SockJS "Info" request to server failed, url=wss://pool.whirl.mx:8080/ws/connect org.springframework.web.socket.sockjs.SockJsTransportFailureException: Failed to execute request to https://pool.whirl.mx:8080/ws/connect/info; nested exception is java.lang.InterruptedException at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at com.sparrowwallet.nightjar@0.2.27/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter.onWebSocketClose(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.InterruptedException: null at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(Unknown Source) at java.base/java.util.concurrent.CountDownLatch.await(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at com.sparrowwallet.merged.module@1.5.6/org.eclipse.jetty.client.HttpRequest.send(Unknown Source) ... 40 common frames omitted 2022-02-22 11:36:26,629 ERROR [Whirlpool-HttpClient-COORDINATOR_WEBSOCKET-1964] c.s.w.c.m.d.MixSession[1645547703502] [null:-1] ! connexion lost, reconnecting for a new mix...

I connected again and the syncing was happening and UI responsive but UI slowed down around /0/740 next UI update showed /0/1138

Sparrow is using 4.5GB RAM Then saw it drop to 3.78GB then quickly up to 5.52, 5.90 GB, 3.24... 3.81... You were saying somewhere not to trust the memory number, But where I take them I've never seen any other process using much more than 1GB.

Connection get lost, starting over again, then hang, ect

Process Sample... https://pastebin.com/2nxzTe3V

acantril commented 2 years ago

Its safe to assume almost ANY performance related issue on m1's is rosetta related. It's a tad annoying that anyone who doesn't tend to use an m1 day to day, buys into the marketing BS and assumes rosetta is fine. The performance of almost anything using rosetta is horrible - and leads to weird overall system performance issues.

maxtannahill commented 2 years ago

I wouldn't assume performance issues are all Rosetta related. I've recently moved from a 2017 MacBook Pro to an M1 MacBook Air and performance is fine. I'm using Rosetta.

Biggest performance issues I've found have been dependent on which server you're using as a back end. The application is pretty lightweight.

acantril commented 2 years ago

as someone who has used m1's since release (and the development kit) seeing this

and performance is fine.

makes me as frustrated as when someone who is new to bitcoin says 'why shouldn't we have bigger blocks'

Nobody who cares about performance likes Rosetta.

maxtannahill commented 2 years ago

Thank you @acantril for your meaningless big block comparison.

I care about performance, therefore I don't use public Electrs servers with Sparrow.

acantril commented 2 years ago

it's not meaningless .. you can't legitimately say that performance is fine with rosetta and understand how rosetta works. I don't use a public electrs server either, so your statement isn't really relevant. Anyway, having this discussion with you is a waste of time .

Transisto commented 2 years ago

@acantril I guess you haven't read the issues where almost the same thing happens under Windows.

Connections become harder or near impossible UI become less responsive Ram usage is very high Process need to be force killed.

More likely that the M1 is just faster at reaching these state.

craigraw commented 2 years ago

I think it's fair to say that both may be correct. Rosetta may well be an issue, but certainly @Transisto's insistence on loading very deep wallets on overloaded public servers is very much a cause for slow performance.

Transisto commented 2 years ago

https://github.com/sparrowwallet/sparrow/issues/391 Closed, most likely related.

I think it's fair to say that both may be correct. Rosetta may well be an issue, but certainly @Transisto's insistence on loading very deep wallets on overloaded public servers is very much a cause for slow performance.

It's about 1600 deep but I thought that the option to load last 100 address would have solved this.

I think @maxtannahill might be right, Seems dependent on the type of server it's connected to.

craigraw commented 2 years ago

If possible, please test the beta M1 native release at https://github.com/sparrowwallet/sparrow/releases/tag/1.6.4-beta1

Transisto commented 2 years ago
image

I'm not sure what to look for anymore, CPU is HIGH, and wallet is never connected when I look back at it. (slow blinking yellow)

maxtannahill commented 2 years ago

Performance improvement for me. Sync times for deep wallets over halved from around 45 to 50 seconds to 20 seconds. Using ElectrumX on local network.

MacBook Air M1, 2020. 16GB RAM.

image

Transisto commented 2 years ago

Performance improvement for me. Sync times for deep wallets over halved from around 45 to 50 seconds to 20 seconds. Using ElectrumX on local network.

MacBook Air M1, 2020. 16GB RAM.

image

Can you define how deep?

maxtannahill commented 2 years ago

Performance improvement for me. Sync times for deep wallets over halved from around 45 to 50 seconds to 20 seconds. Using ElectrumX on local network. MacBook Air M1, 2020. 16GB RAM. image

Can you define how deep?

6800 receive addresses, 500 change on post mix.

craigraw commented 2 years ago

I'm not sure what to look for anymore, CPU is HIGH, and wallet is never connected when I look back at it. (slow blinking yellow)

Could you try testing with a functional private Electrum server to eliminate the server from the test?