Consistent performance degradation - must be restarted frequently

On RhinoWIP for Mac, I’ve noticed that the app performance seems to degrade the longer the app is continuously open. When it’s first open, it’s snappy and quick and generally works fine. But after working for maybe 30-60 minutes, it consistently becomes noticeably laggy and sluggish. If I close and reopen the app, it seems to refresh and is totally snappy and responsive again. So I’ve taken to restarting the app very frequently to maintain performance and reduce lag.

This may be a memory management/caching issue. Because after launching the app, the info bar on the bottom of my screen usually shows the memory use as roughly 1GB, and after a while (once performance starts to noticeably degrade), it usually shows memory use as closer to 2GB.

This does seem very odd because my Mac (Apple M1 Max chip) has 32GB of ram, it should definitely be able to handle 2GB of ram usage, and Rhino 7 did not seem to have this problem. But that’s the only visible metric I have noticed correlating with the performance degradation, so I am mentioning it. I will also note that I only really do 2D curve and simple 3D polysurface kinds of work (I’m a cabinetmaker and millworker), I don’t work with crazy 3D shapes, meshes, or parts.

I am currently on Version 8 WIP (8.0.23164.14306, 2023-06-13).

out of curiosity: what does your idle CPU usage for Rhino look like. So with the file opened and no actions. I found a similar issue with longer work sessions ins Rhino:

The info bar on the bottom of the app pretty much only shows “CPU use: 0.0%”, which is also…interesting, but I just tend to ignore that. I haven’t checked the actual usage within the Mac’s Activity Monitor or anything. But it doesn’t noticeably cause the rest of my Mac to lag, just RhinoWIP.

A comparison with the activity monitor might be helpful

After launching the app, Activity Monitor shows CPU usage at 3.3%. After sitting idle with the window in the foreground for maybe 15 minutes, it went up to around 15%. I’ll see what it goes up to after I actively work for a while.

It’s also worth noting that my Macbook Pro’s battery noticeably drains when I close the lid for a period of time (like overnight) with RhinoWIP still open, but doesn’t really drain if I quit the app before closing the lid.

15 minutes later after doing some extremely simple and non demanding straight curve work (just mocking up the rough shapes/sizes of some table legs), Activity Monitor shows CPU use at 49%. When I put RhinoWIP in the background, it drops to around 3-5%.

@Gijs, maybe this issue is connected to the other CPU usage bug?

Cheers,
Rudi

The “Group” command also seems to hit the performance pretty hard for some reason. I just saw my CPU usage around 90% after grouping a bunch of parts, and the lag was getting noticeable. Again it drops to around 5% CPU use when the window is put in the background, but the lag remains when returning to the app.

@ㅂ11 @rudolf.neumerkel

We are actively looking into finding the root cause of the performance issues on Mac.
It would be helpful if you could run _TestTrace (enable it)
then once you feel Rhino is slow, run the command again and save out the file and send that to us. Thanks in advance

@ㅂ11 I forgot to ask, pls also run _SystemInfo and post back the results.

fwiw, the same thing happens with me with the WIP 8… I do a couple relaunches throughout a day which totally brings thing back up to expected performance.

I’ll do the TestTrace thing

here’s my system info:

Rhino 8 SR0 2023-6-13 (Rhino WIP, 8.0.23164.14306, Git hash:master @ 55d904232132c2185f6cc9c36fb69051a9b52a74)
License type: Commercial, build 2023-06-13
License details: Cloud Zoo
Expires on: 2023-07-28

Apple macOS Version 13.4 (Build 22F66) (Physical RAM: 32Gb)
Mac Model Identifier: Mac14,6
Language: en-US (MacOS default)

Apple M2 Max (OpenGL ver:4.1 Metal - 83.1)

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
Redraw scene when viewports are exposed: On

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: Apple
Render version: 4.1
Shading Language: 4.10
Maximum Texture size: 16384 x 16384
Z-Buffer depth: n/a
Maximum Viewport size: 16384 x 16384
Total Video Memory: 21845 MB
Graphics: Apple M2 Max
Displays: Unknown (236dpi 2x)

Metal GPU Family Apple 7
Metal GPU Family Common 3
Metal GPU Family Mac 2
Graphics processors
Apple M2 Max
DELL U2518D (2560 x 1440 @ 60.00Hz)

USB devices
SMI Corporation: composite_device
Generic: USB2.1 Hub
Jieli Technology: UACDemoV1.0
USB C : USB C Video Adaptor

Bluetooth devices
None

Third party kernel extensions
None

Third party plugins
/usr/lib/swift/libswiftCore.dylib
/usr/lib/swift/libswiftCoreFoundation.dylib
/usr/lib/swift/libswiftDarwin.dylib
/usr/lib/swift/libswiftDispatch.dylib
/usr/lib/swift/libswiftIOKit.dylib
/usr/lib/swift/libswiftObjectiveC.dylib
/usr/lib/swift/libswiftXPC.dylib
/usr/lib/swift/libswift_Concurrency.dylib
/usr/lib/swift/libswift_StringProcessing.dylib
/usr/lib/swift/libswiftos.dylib
/usr/lib/swift/libswift_RegexParser.dylib
/usr/lib/swift/libswiftMetal.dylib
/usr/lib/swift/libswiftsimd.dylib
/usr/lib/usd/libIex.dylib
/usr/lib/usd/libHalf.dylib
/usr/lib/usd/libAlembic.dylib
/usr/lib/usd/libusd_ms.dylib
/usr/lib/usd/libosdCPU.dylib
/usr/lib/usd/libImath.dylib
/usr/lib/usd/libIlmThread.dylib
/usr/lib/usd/libIexMath.dylib
/usr/lib/usd/libtbb.dylib
/usr/lib/usd/libMaterialXCore.dylib
/usr/lib/usd/libMaterialXFormat.dylib
/usr/lib/swift/libswiftAVFoundation.dylib
/usr/lib/swift/libswiftCoreAudio.dylib
/usr/lib/swift/libswiftCoreLocation.dylib
/usr/lib/swift/libswiftCoreMIDI.dylib
/usr/lib/swift/libswiftCoreMedia.dylib
/usr/lib/swift/libswiftQuartzCore.dylib
/usr/lib/swift/libswiftUniformTypeIdentifiers.dylib
/usr/lib/swift/libswiftNetwork.dylib
/usr/lib/swift/libswiftCryptoTokenKit.dylib
/usr/lib/swift/libswiftCoreGraphics.dylib
/usr/lib/swift/libswiftOSLog.dylib
/usr/lib/swift/libswiftAccelerate.dylib
/usr/lib/swift/libswiftAppKit.dylib
/usr/lib/swift/libswiftCoreImage.dylib
/usr/lib/swift/libswiftCompression.dylib
/usr/lib/swift/libswiftFileProvider.dylib
/usr/lib/swift/libswiftIntents.dylib
/usr/lib/swift/libswiftPrivate_BiomePubSub.dylib
/usr/lib/swift/libswiftPrivate_BiomeStreams.dylib
/usr/lib/swift/libswiftExtensionFoundation.dylib
/usr/lib/swift/libswiftCoreML.dylib
/usr/lib/swift/libswiftVision.dylib
/usr/lib/swift/libswiftDemangle.dylib
/usr/lib/swift/libswiftSystem.dylib
/usr/lib/swift/libswiftExtensionKit.dylib
/usr/lib/swift/libswiftRegexBuilder.dylib
/usr/lib/swift/libswiftWebKit.dylib
/usr/lib/swift/libswiftGLKit.dylib
/usr/lib/swift/libswiftMapKit.dylib
/usr/lib/swift/libswiftModelIO.dylib
/usr/lib/swift/libswiftSceneKit.dylib
/usr/lib/log/liblog_network.dylib

Rhino plugins that do not ship with Rhino

Rhino plugins that ship with Rhino
/Applications/RhinoWIP.app/Contents/PlugIns/RhinoRender.rhp “Legacy Rhino Render” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/Frameworks/RhMaterialEditor.framework “Renderer Development Kit” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/PlugIns/import_ACAD.rhp “AutoCAD file import: import_ACAD” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/PlugIns/SectionTools.rhp “SectionTools” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/PlugIns/AnimationTools.rhp “AnimationTools” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/PlugIns/PanelingTools.rhp “PanelingTools” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/GrasshopperPlugin.rhp “Grasshopper” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/PlugIns/RhinoLabsTools.rhp “Rhino Labs Tools” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoRenderCycles.rhp “Rhino Render” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/PlugIns/NamedSnapshots.rhp “Snapshots” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/PlugIns/RhinoBonusTools.rhp “Rhino Bonus Tools” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/PlugIns/Displacement.rhp “Displacement” 8.0.23164.1002
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoCycles.rhp “RhinoCycles” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoCPython.rhp “RhinoCPython” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RDK_EtoUI.rhp “RDK_EtoUI” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoCodePlugin.rhp “RhinoCodePlugin” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoDLR_Python.rhp “IronPython” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/Commands.rhp “Commands” 8.0.23164.14306
/Applications/RhinoWIP.app/Contents/Frameworks/RhCore.framework/Resources/ManagedPlugIns/RhinoRoslyn.rhp “RhinoRoslyn” 8.0.23164.14306

thanks @jeff_hammond

I first ran the _TestTrace command immediately after relaunching the app, and now here are the files after about 2 hours of work.

The app has reached the slow laggy phase, and a short while ago, after selecting a bunch of geometry and doing the CurveBoolean command, my Activity Monitor showed RhinoWIP’s CPU usage at either 100.6% or 101.6% (caught a quick glimpse) and the app froze for maybe 30 seconds. The info bar at the bottom of my RhinoWIP window shows Memory use as roughly 3GB. It didn’t crash, and putting the window in the background seems to kill the CPU usage back down to around 5-10% (but only while it’s in the background).

After saving these files, I relaunched the app and it’s running smooth again.

SystemInfo.txt (4.8 KB)
rhinotrace.json (9.0 MB)

Rhino was launched this morning then I did a couple little things in two files… this afternoon, I did about 2 hrs straight modeling and it’s now about dead lol… laggy when orbiting… it takes a second or two to _Group some basic objects which is normally instantaneous… and Undo doesn’t work anymore.

(had to zip it because it’s 50 MB and the forum says that’s too big)

rhinotrace.json.zip (2.8 MB)

1 Like

thanks for sending @jeff_hammond, forwarding this to the developers.

1 Like

Sorry, that seems “funny" as I’ve encountered the complete opposite problem. In fact, performance and the amount of RAM used are only correlated in some cases. In my case, I’ve encountered situations where Rhino8 went crazy and ate up all the RAM and kept filling up the swap. I’m sure it would only stop when it took up all the space on the ssd.

1 Like

Happening for me, as well. Helpful to have more files to check out?
Thx
-Alan

@Alan_Farkas yes, if you can send a trace file (json) it might help us track down the issue, thanks.

Happy to do it. How do I do it? :upside_down_face:

Sorry, the way to do this is:
run _TestTrace (enable it)
Once you feel Rhino is slow, run the command again and save out the file and send that to us. Thanks in advance

2 Likes