Better tree refresh method

0 vote

avatar

Hi Guys,

I'm suffering with performance issues with RDM.
13.5.9.0 and 13.5.6.0 (not tested earlier versions)

When I'm working in the connection overview, every step is taking long time.
Duplication of an entry, creating a new entry and so on.

I'm currently running the debugging window.
And I'm seeing, that every change I do, modify copy create delete an entry, reloads the whole tree with all connection objects.
At the moment we don't have many connections (Around 1600)
But maybe you can implement a faster incremental way to update the tree, not to load the whole tree at a change.

Thank you

Best Regards
Jonas

All Comments (9)

avatar

Under normal circumstances loading the tree view should take about 100ms for 1600 sessions

Example, 850 sessions:TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 44 ms
PreCreateGroups : 10 ms - Count : 1
BeginUpdate : 61 ms
TreeView.LoadConnectionList : 61 ms
Can you send us your profiler logs for analysis? Put the text within [ code ] & [ /code ] tags to keep the indentation of the text. Also, with the Profiler window active make sure your "Profiler level = 1" & "Debug level = 0 or 1" unless instructed other wise. The profiler can have a major impact on loading the tree view. For example having "Load Connections Detail" checked:TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 7300 ms
PreCreateGroups : 7 ms - Count : 1
BeginUpdate : 7314 ms
TreeView.LoadConnectionList : 7319 ms

Stéfane Lavergne

avatar

Hi Stefane,

thanks for your reply :)

Creating an rdp entry






















































































































































































Deleting an entry:











































































































































Best Regards
Jonas

avatar

What is your Profiler level & Debug level?

They should: Profiler level = 1 & Debug level = 0, if not could you try with the new values and see what you get?


600 ms for "TreeView.LoadConnectionList" is on high end for 1500'ish sessions

Stéfane Lavergne

avatar

Profiler = 1, Debug = 1 (as you told in the last post)
The new log with Profiler 1 Debug 0:

Creating a connection:



























































































































































Deleting a connection:












































































































































Best Regards
Jonas

avatar

How slow are these actions? 1s? 5s? 10s?

The profiler gives me 10ms-20ms for the save/delete + 102ms-203ms for the data refresh + 400ms-550ms for the tree fresh.

Your tree reload is slower than expected, my data source has 1800+ sessions and the tree reload takes about 164ms, so 1/3'ish of your reload. I'm trying to figure out why. We may need to add more profiler stop watches.

Stéfane Lavergne

avatar

Hi Stefane,

see attached gif, some time it takes around 2-5 seconds.
























































































































































































































































































we can do a live-session if you want to, then you can have a look.

Thanks

Best Regards
Jonas

db_add_remove.gif

avatar

Are you by any chance running on a VM/Terminal Services? The UI elements that make up the edit screen are cached and should open faster the second time around. I'm assuming that prior to the video recording you had already done the exact same steps.

We will schedule a live-session with the support team (they will contact you) but, in the meantime, could you set your Profiler Level = 65 and create/edit a session and post the profiler trace?

Best regards,

Stéfane Lavergne

avatar

Hi Stefane,

I'm using a computer with windows 10.
Lokal installation of RDM, database is a mariadb-server running on ubuntu in a virtual machine on vmware esx.

Trace:


Main thread (UI)
----------------------------------------
15:43:04.418792 FrmConnection.DoInitializeComponent : 558 ms
15:43:04.520068 FrmConnection.LoadConnectionInControls...
15:43:04.522079 FrmConnection.RegisterDescriptors : 2 ms
15:43:04.779779 FrmConnection.LoadGroups : 257 ms
15:43:04.782787 FrmConnection.freConnectionMorePanel : 3 ms
15:43:04.811869 FrmConnection.freConnectionVPNPanel : 28 ms
15:43:04.811869 FrmConnection.freConnectionAdvancedPanel : 0 ms
15:43:04.811869 FrmConnection.freConnectionUIPanel : 0 ms
15:43:04.812874 FrmConnection.FreConnectionSecurityPanel : 0 ms
15:43:05.012421 FrmConnection.CreateConnectionSettingsFrame : 200 ms
15:43:05.035479 FrmConnection.LoadCredentialSessions : 22 ms
15:43:05.035479 FrmConnection.LoadCredentialSessions : 0 ms
15:43:05.035479 FrmConnection.LoadCredentialsToControls : 0 ms
15:43:05.087633 FrmConnection.Panels.LoadConnectionInControls...
15:43:05.087633 LoadConnectionList : 0 ms
15:43:05.106673 FrmConnection.Panels.LoadConnectionInControls : 66 ms
15:43:05.106673 FrmConnection.LoadConnectionInControls : 586 ms
15:43:15.163133 Database.SaveConnection : 15 ms
15:43:15.198231 reload: False hasSecurityChanged: False hasChanged: True
15:43:15.198231 LoadConnections [MariaDB : DB - User] - 64-bit...
15:43:15.198231 HasOfflineChanges...
15:43:15.280454 HasOfflineSessionChanges : 82 ms
15:43:15.281460 HasOfflineChanges : 82 ms
15:43:15.287477 OfflineManager.GetDataSourceSettings : 0 ms
15:43:15.287477 LoadConnectionsFromDataSource...
15:43:15.287477 LoadDataSourceSettingsFromDataSource...
15:43:15.292495 GetDataSourceSettings : 4 ms
15:43:15.292495 LoadDataSourceSettingsFromDataSource : 4 ms
15:43:15.327682 GetConnections...
15:43:15.330597 Database.GetConnections...
15:43:15.330597 Reading connections from database : 0 ms
15:43:15.330597 DecryptData : 0 ms - Count : 1
15:43:15.331597 DeserializeData : 0 ms - Count : 1
15:43:15.331597 Database.GetConnections : 3 ms
15:43:15.331597 GetConnections : 3 ms
15:43:15.331597 DoMergeConnections...
15:43:15.331597 PrepareConnectionList : 0 ms
15:43:15.331597 Loop...
15:43:15.331597 MigrateConnection : 0 ms
15:43:15.331597 OfflineManager.Merge : 0 ms
15:43:15.331597 MergeWithList - Contains : 0 ms
15:43:15.331597 MergeWithList : 0 ms
15:43:15.331597 Loop : 0 ms
15:43:15.333600 Filter...
15:43:15.333600 DecryptData : 0 ms
15:43:15.333600 DeserializeData : 0 ms
15:43:15.345634 Filter : 13 ms
15:43:15.345634 DisposeAndClearConnections : 0 ms
15:43:15.345634 VerifyMissingAddons : 0 ms
15:43:15.345634 DoMergeConnections : 14 ms
15:43:15.345634 LoadConnectionsFromDataSource : 58 ms
15:43:15.353655 DecryptData : 0 ms
15:43:15.353655 DeserializeData : 0 ms
15:43:15.380728 DisposeAndClearConnections : 0 ms
15:43:15.386748 LoadConnections [MariaDB : DB - User] - 64-bit : 192 ms
15:43:16.240080 Connection States: Refresh...
15:43:16.240080 CreateConnectionStateDictionary : 0 ms
15:43:16.240080 Connection States: Refresh : 0 ms
15:43:16.241082 TreeView.LoadConnectionList...
15:43:16.241082 GetGroupInfos : 0 ms
15:43:16.241082 BeginUpdate...
15:43:16.813653 ApplyGroupCustomImages : 0 ms
15:43:16.813653 LoadConnectionInTreeNode : 519 ms
15:43:16.813653 PreCreateGroups : 47 ms - Count : 1
15:43:16.813653 BeginUpdate : 572 ms
15:43:16.813653 TreeView.LoadConnectionList : 572 ms
15:43:17.046328 SelectionChanged : 48 ms
15:43:22.355067 reload: False hasSecurityChanged: False hasChanged: True
15:43:22.355067 LoadConnections [MariaDB : DB - User] - 64-bit...
15:43:22.355067 HasOfflineChanges...
15:43:22.355067 HasOfflineSessionChanges : 0 ms
15:43:22.355067 HasOfflineChanges : 0 ms
15:43:22.362086 OfflineManager.GetDataSourceSettings : 0 ms
15:43:22.362086 LoadConnectionsFromDataSource...
15:43:22.362086 LoadDataSourceSettingsFromDataSource...
15:43:22.366096 GetDataSourceSettings : 4 ms
15:43:22.366096 LoadDataSourceSettingsFromDataSource : 4 ms
15:43:22.400267 GetConnections...
15:43:22.402212 Database.GetConnections...
15:43:22.402212 Reading connections from database : 0 ms
15:43:22.402212 DecryptData : 0 ms
15:43:22.402212 DeserializeData : 0 ms
15:43:22.402212 Database.GetConnections : 2 ms
15:43:22.402212 GetConnections : 2 ms
15:43:22.403198 DoMergeConnections...
15:43:22.403198 PrepareConnectionList : 0 ms
15:43:22.403198 Loop...
15:43:22.403198 MigrateConnection : 0 ms
15:43:22.403198 OfflineManager.Merge : 0 ms
15:43:22.403198 MergeWithList - Contains : 0 ms
15:43:22.403198 MergeWithList : 0 ms
15:43:22.403198 Loop : 0 ms
15:43:22.405205 Filter...
15:43:22.405205 DecryptData : 0 ms
15:43:22.405205 DeserializeData : 0 ms
15:43:22.413226 Filter : 10 ms
15:43:22.413226 DisposeAndClearConnections : 0 ms
15:43:22.414228 VerifyMissingAddons : 0 ms
15:43:22.414228 DoMergeConnections : 11 ms
15:43:22.414228 LoadConnectionsFromDataSource : 52 ms
15:43:22.425258 DecryptData : 0 ms
15:43:22.425258 DeserializeData : 0 ms
15:43:22.438293 DisposeAndClearConnections : 0 ms
15:43:22.443307 LoadConnections [MariaDB : DB - User] - 64-bit : 93 ms
15:43:23.312687 Connection States: Refresh...
15:43:23.312687 CreateConnectionStateDictionary : 0 ms
15:43:23.312687 Connection States: Refresh : 0 ms
15:43:23.313689 TreeView.LoadConnectionList...
15:43:23.313689 GetGroupInfos : 0 ms
15:43:23.313689 BeginUpdate...
15:43:23.889262 ApplyGroupCustomImages : 0 ms
15:43:23.889262 LoadConnectionInTreeNode : 519 ms
15:43:23.889262 PreCreateGroups : 51 ms - Count : 1
15:43:23.889262 BeginUpdate : 575 ms
15:43:23.889262 TreeView.LoadConnectionList : 575 ms
15:43:24.152801 SelectionChanged...
15:43:24.152801 LoadConnectionList : 0 ms
15:43:24.209957 SelectionChanged : 57 ms

Thread : 4
----------------------------------------
4 - 15:43:15.158123 ThreadQueue.AddRow...
4 - 15:43:15.158123 Offline.AddOrUpdateConnection : 0 ms
4 - 15:43:15.280454 ThreadQueue.AddRow : 123 ms - Count : 1
4 - 15:43:15.342625 ThreadQueue.AddRow...
4 - 15:43:15.342625 Offline.AddOrUpdateConnection : 0 ms
4 - 15:43:15.489024 ThreadQueue.AddRow : 146 ms - Count : 1
4 - 15:43:22.556617 ThreadQueue.AddRow...
4 - 15:43:22.557622 Offline.AddOrUpdateConnection : 0 ms
4 - 15:43:22.693993 ThreadQueue.AddRow : 279 ms

Thread : 62
----------------------------------------
62 - 15:43:15.346635 OfflineManager.SaveMeta...
62 - 15:43:15.346635 b795e7e0-90e2-4b55-b6e9-95bf39ef8d29
62 - 15:43:15.490028 SaveSecurityInfo : 143 ms
62 - 15:43:15.492034 UpdateOffline : 1 ms
62 - 15:43:15.494051 PrivateConnectionManager.Saving : 1 ms
62 - 15:43:15.495042 ConnectionOverrideManager.Saving : 1 ms
62 - 15:43:15.495042 OfflineManager.SaveMeta : 149 ms

Thread : 46
----------------------------------------
46 - 15:43:22.414228 OfflineManager.SaveMeta...
46 - 15:43:22.414228 b795e7e0-90e2-4b55-b6e9-95bf39ef8d29
46 - 15:43:22.554613 SaveSecurityInfo : 140 ms
46 - 15:43:22.556617 UpdateOffline : 1 ms
46 - 15:43:22.559625 PrivateConnectionManager.Saving : 2 ms
46 - 15:43:22.694996 ConnectionOverrideManager.Saving : 135 ms
46 - 15:43:22.694996 OfflineManager.SaveMeta : 280 ms

Best Regards
Jonas

avatar

Hi Jonas,

As discussed with Stefane, I just sent you a link to book a remote session in email.

Best regards,

David Grandolfo