sparrow icon indicating copy to clipboard operation
sparrow copied to clipboard

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

Open Transisto opened this issue 3 years ago • 29 comments

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 avatar Jan 03 '22 02:01 Transisto

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

Video shows the connection button doing some intense blinking.

Transisto avatar Jan 03 '22 03:01 Transisto

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

6102bitcoin avatar Jan 04 '22 17:01 6102bitcoin

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.

Transisto avatar Jan 07 '22 18:01 Transisto

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.

craigraw avatar Jan 08 '22 08:01 craigraw

https://pastebin.com/eigrcRTs

Transisto avatar Jan 09 '22 05:01 Transisto

https://controlc.com/8d770d83

same type of sample 2min later

Transisto avatar Jan 09 '22 05:01 Transisto

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?

craigraw avatar Jan 09 '22 13:01 craigraw

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 avatar Jan 09 '22 22:01 Transisto

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 avatar Jan 09 '22 23:01 Transisto

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

Transisto avatar Jan 10 '22 00:01 Transisto

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.

craigraw avatar Jan 10 '22 13:01 craigraw

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 avatar Jan 11 '22 16:01 Transisto

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.

Transisto avatar Jan 16 '22 19:01 Transisto

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.

craigraw avatar Jan 21 '22 10:01 craigraw

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 [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at [email protected]/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at [email protected]/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 [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at [email protected]/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at [email protected]/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 [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at [email protected]/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at [email protected]/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 [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.JettyXhrTransport.executeInfoRequestInternal(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractXhrTransport.executeInfoRequest(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.getServerInfo(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.SockJsClient.doHandshake(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient.connect(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient.connect(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession.connect(Unknown Source) at [email protected]/com.samourai.whirlpool.client.mix.dialog.MixSession$3.onTransportDisconnected(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.samourai.stomp.client.StompTransport$1.onError(Unknown Source) at [email protected]/com.sparrowwallet.nightjar.stomp.JavaStompClient$1.handleTransportError(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.handleFailure(Unknown Source) at [email protected]/org.springframework.messaging.simp.stomp.DefaultStompSession.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.WebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.afterConnectionClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.afterTransportClosed(Unknown Source) at [email protected]/org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.afterConnectionClosed(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.websocket.common.events.annotated.CallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.annotated.OptionalSessionCallableMethod.call(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.events.JettyAnnotatedEventDriver.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.callApplicationOnClose(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.disconnect(Unknown Source) at [email protected]/org.eclipse.jetty.websocket.common.WebSocketSession.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.AbstractConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.ssl.SslConnection.onClose(Unknown Source) at [email protected]/org.eclipse.jetty.io.SelectorManager.connectionClosed(Unknown Source) at [email protected]/org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint.run(Unknown Source) at [email protected]/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(Unknown Source) at [email protected]/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 [email protected]/org.eclipse.jetty.client.util.FutureResponseListener.get(Unknown Source) at [email protected]/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

Transisto avatar Feb 22 '22 17:02 Transisto

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.

acantril avatar Mar 07 '22 09:03 acantril

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.

maxtannahill avatar Mar 07 '22 09:03 maxtannahill

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.

acantril avatar Mar 07 '22 09:03 acantril

Thank you @acantril for your meaningless big block comparison.

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

maxtannahill avatar Mar 07 '22 09:03 maxtannahill

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 .

acantril avatar Mar 07 '22 09:03 acantril

@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.

Transisto avatar Mar 07 '22 13:03 Transisto

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.

craigraw avatar Mar 07 '22 16:03 craigraw

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.

Transisto avatar Mar 09 '22 15:03 Transisto

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

craigraw avatar May 09 '22 13:05 craigraw

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)

Transisto avatar May 18 '22 16:05 Transisto

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

maxtannahill avatar May 18 '22 16:05 maxtannahill

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?

Transisto avatar May 18 '22 16:05 Transisto

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.

maxtannahill avatar May 18 '22 16:05 maxtannahill

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?

craigraw avatar May 19 '22 09:05 craigraw