We encountered a problem where the time to load private subsets into memory went from 1hr 5min to 8 hrs. This occurs as pretty much the last operation of start up and there was a week between the two startups.
We have a lot of users but we don't see what is changed to make this jump since we likely only added a couple of users in the week.
It's mode 5 users and Unix so plenty of squiggly characters in the subset names, but the log only provides a single line of info not where it gets stuck.
If anyone has experienced this before I would be most grateful for your thoughts.
Thank you
John
Registering of Private Subsets at Startup time is X7 in one week
-
- Community Contributor
- Posts: 300
- Joined: Mon Mar 23, 2009 10:50 am
- OLAP Product: PAW/PAX 2.0.72 Perspectives
- Version: TM1 Server 11.8.003
- Excel Version: 365 and 2016
- Location: South London
-
- Community Contributor
- Posts: 310
- Joined: Fri Feb 15, 2013 5:49 pm
- OLAP Product: TM1
- Version: PA 2.0.9.1
- Excel Version: 365
- Location: Minneapolis, USA
Re: Registering of Private Subsets at Startup time is X7 in one week
Set LoadPrivateSubsetsOnStartup=F in the config and see who complains about super long login time?
-
- Community Contributor
- Posts: 310
- Joined: Fri Feb 15, 2013 5:49 pm
- OLAP Product: TM1
- Version: PA 2.0.9.1
- Excel Version: 365
- Location: Minneapolis, USA
Re: Registering of Private Subsets at Startup time is X7 in one week
Sorry for my spitball idea above, it does nothing today or even this week to help fix your slow restart problem and if we're dependent on enduser complaints, our sample size will forever be too large. I tried to replicate your issue of a slower restart by creating 5,00 and 15,000 private subsets for a couple test users and confirming LoadPrivateSubsetsOnStartup=T before restarting but couldn't detect any noticeable difference in server load time.
I then wondered about using the rest-api and python to track impersonation timings for clients after setting LoadPrivateSubsetsOnStartup=F and a restart. The 5k and 15k subsets users do take a while to login, but that could simply be reflecting the count and not necessarily size of subset or complexity of mdx. Still, impersonation and time tracking might be worth a try, especially if you can get your hands on an archived data folder of the tm1 instance from before the slowdown happened. You could then do a before/after comparison by user to see if anyone stands out. Below is some python code I used to test login impersonation timing of impersonation after a restart when LoadPrivateSubsetsOnStartup=F.
I then wondered about using the rest-api and python to track impersonation timings for clients after setting LoadPrivateSubsetsOnStartup=F and a restart. The 5k and 15k subsets users do take a while to login, but that could simply be reflecting the count and not necessarily size of subset or complexity of mdx. Still, impersonation and time tracking might be worth a try, especially if you can get your hands on an archived data folder of the tm1 instance from before the slowdown happened. You could then do a before/after comparison by user to see if anyone stands out. Below is some python code I used to test login impersonation timing of impersonation after a restart when LoadPrivateSubsetsOnStartup=F.
Code: Select all
from TM1py.Services import TM1Service
import pandas as pd
import time
with TM1Service(address='...', port='...', user='...', password='...', ssl=True) as tm1:
mdx = 'Filter(TM1SubsetAll([}Clients]), [}ClientGroups].([}Groups].[Admin]) = "")'
users = [user[0]['Name'] for user in tm1.elements.execute_set_mdx(mdx=mdx)]
login_times = {'user': [], 'login_time': []}
for user in users:
start = time.time()
with TM1Service(address='...', port='...', user='...', password='...', ssl=True, impersonate=user) as tm2:
end = time.time()
login_times['user'].append(user)
login_times['login_time'].append(round(end-start, 3))
df1 = pd.DataFrame.from_dict(login_times)
-
- MVP
- Posts: 3689
- Joined: Fri Mar 13, 2009 11:14 am
- OLAP Product: TableManager1
- Version: PA 2.0.x
- Excel Version: Office 365
- Location: Switzerland
Re: Registering of Private Subsets at Startup time is X7 in one week
Holy hell you weren't concerned already that loading subsets was taking over 1 hour?!
Please place all requests for help in a public thread. I will not answer PMs requesting assistance.
-
- MVP
- Posts: 3202
- Joined: Mon Dec 29, 2008 6:26 pm
- OLAP Product: TM1, Jedox
- Version: PAL 2.1.5
- Excel Version: Microsoft 365
- Location: Brussels, Belgium
- Contact:
Re: Registering of Private Subsets at Startup time is X7 in one week
Curious to know how a TM1 model can get to tens of thousands of private objects.
Is it subsets ? Views ? Application entries ?
Are they created automatically with some sort of automation ?
If you are to migrate to a different namespace/environment, this can mean a lot of work to get the objects in the correct folders (folders named by namespace, usernames that can change for the }TM1_DefaultDisplayValue alias) etc.
BTW, nice code Andrew.
Is it subsets ? Views ? Application entries ?
Are they created automatically with some sort of automation ?
If you are to migrate to a different namespace/environment, this can mean a lot of work to get the objects in the correct folders (folders named by namespace, usernames that can change for the }TM1_DefaultDisplayValue alias) etc.
BTW, nice code Andrew.
Best regards,
Wim Gielis
IBM Champion 2024-2025
Excel Most Valuable Professional, 2011-2014
https://www.wimgielis.com ==> 121 TM1 articles and a lot of custom code
Newest blog article: Deleting elements quickly
Wim Gielis
IBM Champion 2024-2025
Excel Most Valuable Professional, 2011-2014
https://www.wimgielis.com ==> 121 TM1 articles and a lot of custom code
Newest blog article: Deleting elements quickly
-
- Community Contributor
- Posts: 300
- Joined: Mon Mar 23, 2009 10:50 am
- OLAP Product: PAW/PAX 2.0.72 Perspectives
- Version: TM1 Server 11.8.003
- Excel Version: 365 and 2016
- Location: South London
Re: Registering of Private Subsets at Startup time is X7 in one week
Exactly my thoughts, but it turns out this default setting (which worked fine in windows) had to be changed to =T on IBM's advice for Unix when we started getting long logins.
This worked fine for four years until the current problem cropped up. So, nice try - Thanks!
-
- Community Contributor
- Posts: 300
- Joined: Mon Mar 23, 2009 10:50 am
- OLAP Product: PAW/PAX 2.0.72 Perspectives
- Version: TM1 Server 11.8.003
- Excel Version: 365 and 2016
- Location: South London
Re: Registering of Private Subsets at Startup time is X7 in one week
Like your approach with Python. We used to go Loadrunner to simulate timings but with Python this is so much more universal...ascheevel wrote: ↑Mon Jul 08, 2024 9:55 pm Sorry for my spitball idea above, it does nothing today or even this week to help fix your slow restart problem and if we're dependent on enduser complaints, our sample size will forever be too large. I tried to replicate your issue of a slower restart by creating 5,00 and 15,000 private subsets for a couple test users and confirming LoadPrivateSubsetsOnStartup=T before restarting but couldn't detect any noticeable difference in server load time.
I then wondered about using the rest-api and python to track impersonation timings for clients after setting LoadPrivateSubsetsOnStartup=F and a restart. The 5k and 15k subsets users do take a while to login, but that could simply be reflecting the count and not necessarily size of subset or complexity of mdx. Still, impersonation and time tracking might be worth a try, especially if you can get your hands on an archived data folder of the tm1 instance from before the slowdown happened. You could then do a before/after comparison by user to see if anyone stands out. Below is some python code I used to test login impersonation timing of impersonation after a restart when LoadPrivateSubsetsOnStartup=F.
Code: Select all
from TM1py.Services import TM1Service import pandas as pd import time with TM1Service(address='...', port='...', user='...', password='...', ssl=True) as tm1: mdx = 'Filter(TM1SubsetAll([}Clients]), [}ClientGroups].([}Groups].[Admin]) = "")' users = [user[0]['Name'] for user in tm1.elements.execute_set_mdx(mdx=mdx)] login_times = {'user': [], 'login_time': []} for user in users: start = time.time() with TM1Service(address='...', port='...', user='...', password='...', ssl=True, impersonate=user) as tm2: end = time.time() login_times['user'].append(user) login_times['login_time'].append(round(end-start, 3)) df1 = pd.DataFrame.from_dict(login_times)
Thank you