<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Applied dimensionality &#187; tm1</title>
	<atom:link href="http://ykud.com/blog/category/cognos/tm1-cognos/feed" rel="self" type="application/rss+xml" />
	<link>http://ykud.com/blog</link>
	<description></description>
	<lastBuildDate>Sat, 28 Jan 2012 12:01:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Do you want your TM1 go twice faster on Intel-box? Turn HyperThreading off</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/do-you-want-your-tm1-go-twice-faster-on-intel-box-turn-hyperthreading-off</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/do-you-want-your-tm1-go-twice-faster-on-intel-box-turn-hyperthreading-off#comments</comments>
		<pubDate>Thu, 24 Nov 2011 03:24:05 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>
		<category><![CDATA[cpu]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[jobservers]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=746</guid>
		<description><![CDATA[This&#8217;ll be a bit long (but with a hidden bonus for attentive reader), so I&#8217;ll start from conclusions. If you&#8217;re using a recent server with Intel CPUs, you&#8217;d better check whether they have Hyper-Threading (HT) and try turning it off to gain 2x speed boost. How to do it: 1) go to server, open command [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ykud.com/blog/wp-content/uploads/2011/11/Skinny_Fat_Cat.gif"><img class="alignleft size-medium wp-image-754" title="Skinny_Fat_Cat" src="http://ykud.com/blog/wp-content/uploads/2011/11/Skinny_Fat_Cat-300x200.gif" alt="" width="300" height="200" /></a>This&#8217;ll be a bit long (but with a hidden bonus for attentive reader), so I&#8217;ll start from conclusions. If you&#8217;re using a recent server with Intel CPUs, you&#8217;d better check whether they have Hyper-Threading (HT) and try turning it off to gain 2x speed boost.</p>
<p>How to do it:</p>
<p>1) go to server, open command line, type systeminfo (processor info will be in first ten lines). Or if you don&#8217;t like it cool, open Control Panel, CPUs are described on second pane )</p>
<p>2) check whether your CPU&#8217;s are in <a href="http://ark.intel.com/search/advanced?HyperThreading=true">this list</a></p>
<p>3) ask you server admin, or manually reboot server, look into BIOS and turn HyperThreading off</p>
<p>4) Test your TM1 processes, they may speed up considerably</p>
<p>&nbsp;</p>
<h2><strong>What&#8217;s behind the scenes.</strong></h2>
<p><a href="http://software.intel.com/en-us/articles/multi-core-processor-architecture-explained/"><img class="alignleft size-medium wp-image-747" title="3966" src="http://ykud.com/blog/wp-content/uploads/2011/11/3966-300x228.gif" alt="" width="300" height="228" /></a></p>
<p><a href="http://en.wikipedia.org/wiki/Hyper-threading">Hyper-threading</a>, in a nutshell, is a technique showing each physical CPU core as 2 logical ones. Since during normal work a lot of time is spent in thread switching and related registry load/unload and yada yada, physical cores actually are underloaded in common multithreaded system. Adding a duplicate registry set and a &#8216;virtual&#8217; core allows to utilise physical core up to 20-40% more, earning throughput benefits.</p>
<p>Key words here are “threading” and “throughput”, meaning that HT benefit multithreaded applications where lots of small request are processed at the same time. OLTP databases are a prominent example.</p>
<p>But most of the systems I work with, almost all OLAP engines and even DWH-tuned DBMSes, actually suffer in this scenario.</p>
<p>For example, TM1 calculations are executed in a single thread, so if this thread is assigned half an CPU core, speed drops significantly. The same logic goes for Essbase metadata update process, for example, or for Cognos Enterprise Planning Job processing.</p>
<p>I&#8217;ve seen significant performance degradation (30%) in Cognos EP job processing due to HT context switching and have advised turning HT off on all Cognos EP Job servers.</p>
<p>Encountering the same issue with TM1 recently left me puzzled, since there was plenty of empty CPUs on server and there shouldn&#8217;t be any thread switching. But we&#8217;ve got 2+ time speedup after flickering the switch anyhow )</p>
<p>&nbsp;</p>
<p>I promised a bonus and here it goes:</p>
<p><em>When buying a TM1 server with Intel CPUs, buy way more cores than you&#8217;ll license</em>. Physical cores, not logical.</p>
<p>This will turn on <a href="http://en.wikipedia.org/wiki/Intel_Turbo_Boost">Intel Turbo-Boost</a> and it might give you another 30-40% speed boost. I haven&#8217;t tried that yet and there&#8217;s a bit of scepticism of current boost-detection approach in Wikipedia, but it&#8217;s definitely worth testing in a lab before you buy hardware. Cores are cheap compared to licence costs, so you may save yourself a ton of money by having a faster system. As in wikipedia example, for Core i7-2920XM you can boost up to 3,5 Ghz per core with 2,5 Ghz base speed. That&#8217;s a hefty speed up for a good old one-threaded TM1.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/do-you-want-your-tm1-go-twice-faster-on-intel-box-turn-hyperthreading-off/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BedRockTM1: code samples and methodology</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/bedrocktm1-code-samples-and-methodology</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/bedrocktm1-code-samples-and-methodology#comments</comments>
		<pubDate>Fri, 05 Aug 2011 10:28:08 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=649</guid>
		<description><![CDATA[A new TM1 resource just popped up on my radar. Take a close look at bedrocktm1.org. Overall approach excites coder part of me: modular development, agile, best practice source code &#8212; all this is actually very helpful. Having so much Turbo Integrator &#8216;how-to&#8217;s solves a lot of &#8216;re-inventing the bicycle&#8217; cases. As far as I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bedrocktm1.org/"><img class="alignleft size-full wp-image-653" title="img_build_on_bedrock_shadow" src="http://ykud.com/blog/wp-content/uploads/2011/08/img_build_on_bedrock_shadow.png" alt="" width="150" height="100" /></a>A new TM1 resource just popped up on my radar. Take a close look at <a href="http://bedrocktm1.org/">bedrocktm1.org</a>.</p>
<p>Overall approach excites coder part of me: modular development, agile, best practice source code &#8212; all this is actually very helpful. Having so much Turbo Integrator &#8216;how-to&#8217;s solves a lot of &#8216;re-inventing the bicycle&#8217; cases.</p>
<p>As far as I understand bulk of this project&#8217;s code is developed by <a href="http://cubewise.com/">CubeWise</a>. Hats of to them for being so open and willing to push all TM1 community further.</p>
<p>It&#8217;s interesting to see whether this site will gain momentum &#8212; whether there&#8217;ll be non-CubeWise commiters, how will adoption go and etc.</p>
<p>I would be proud to contribute some code there someday, if I&#8217;ll be doing TM1 related stuff. Maybe they will accept my small utilities for start&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/bedrocktm1-code-samples-and-methodology/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TM1 Load Testing and TM1 9.5.2 Parallel Interaction Feature</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/tm1-load-testing-and-tm1-9-5-2-parallel-interaction-feature</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/tm1-load-testing-and-tm1-9-5-2-parallel-interaction-feature#comments</comments>
		<pubDate>Tue, 05 Jul 2011 09:36:48 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>
		<category><![CDATA[aix]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=631</guid>
		<description><![CDATA[We&#8217;ve just finished our TM1 load-testing project and there are some conclusions I&#8217;d like to share: 1) Stress-testing scenarios should model user&#8217;s behavior as closely as possible (hence all that xml configuration in stress-testing tool) 2) Performance whack-a-mole game is a non-ending one, you&#8217;d better put yourself some deadlines where to stop at 3) Real-model [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ykud.com/blog/wp-content/uploads/2011/07/Typhoon.jpg"><img class="alignleft size-medium wp-image-633" title="Typhoon" src="http://ykud.com/blog/wp-content/uploads/2011/07/Typhoon-300x182.jpg" alt="" width="300" height="182" /></a>We&#8217;ve just finished our TM1 load-testing project and there are some conclusions I&#8217;d like to share:</p>
<div>1) Stress-testing scenarios should model user&#8217;s behavior as closely as possible (hence all that xml configuration in <a href="http://ykud.com/blog/cognos/tm1-cognos/stress-testing-tm1-models">stress-testing tool</a>)</div>
<div>2) <a href="http://www.dbms2.com/2009/08/21/bottleneck-whack-a-mole/">Performance whack-a-mole game</a> is a non-ending one, you&#8217;d better put yourself some deadlines where to stop at</div>
<div>3) Real-model performance testing is way more accurate than general capacity planning guidelines. So if you&#8217;ve got heavy hardware at stake: consider doing a preliminary load-testing, it can reduce potential hardware cost. It was multiple times in our case )</div>
<div>4) <a href="http://ykud.com/blog/ibm/new-cognos-bi-and-tm1-content-from-ibm">TM1 9.5.2 Parallel Interaction</a> feature really works, especially in models with lots of rule calculations. We&#8217;ve got 1,5 performance gain on 100 concurrent writing users just by turning it on. And yes it takes 20-30% more memory, sigh.</div>
<p>&nbsp;</p>
<div>Overall, watching the CPUs throttle up on big AIX machine makes my internal geek happy.</div>
<p>&nbsp;</p>
<div>It was a very interesting project to do, I don&#8217;t think a lot of people emulated a 1000 users load on TM1 model.  Although, I personally consider such user load unreal for a planning system, but if the customer says so &#8212; we test it.</div>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/tm1-load-testing-and-tm1-9-5-2-parallel-interaction-feature/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Cognos BI and TM1 content from IBM</title>
		<link>http://ykud.com/blog/ibm/new-cognos-bi-and-tm1-content-from-ibm</link>
		<comments>http://ykud.com/blog/ibm/new-cognos-bi-and-tm1-content-from-ibm#comments</comments>
		<pubDate>Sat, 09 Apr 2011 16:28:18 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[tm1]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=584</guid>
		<description><![CDATA[Cognos 10 Redbook is now avalaible on IBM site. I always respected RedBooks initiative, because these are actual books with lots of practical knowledge, not just product documentation. I&#8217;ve only skimmed through this book, it seems less tips&#8217;n'tricks than Packt one about Cognos 8 Report Studio. But it&#8217;s a very good overall coverage of what [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.redbooks.ibm.com/abstracts/sg247912.html">Cognos 10 Redbook</a> is now avalaible on IBM site. I always respected RedBooks initiative, because these are actual books with lots of practical knowledge, not just product documentation. I&#8217;ve only skimmed through this book, it seems less tips&#8217;n'tricks than <a href="http://www.packtpub.com/ibm-cognos-8-report-studio-cookbook/book">Packt one about Cognos 8 Report Studio</a>. But it&#8217;s a very good overall coverage of what Cognos BI is and how all parts fit together.</p>
<p>And there&#8217;s an absolute <a href="https://www-304.ibm.com/support/docview.wss?uid=swg21460595">must-read article about new TM1 9.5.2 Parallel Interaction feature</a>.<br />
I&#8217;m actually asonished to see an article of such depth in support knowledge base. It contains detailed explanation:<br />
- of how things worked before, common problems and workarounds<br />
- what has changed in server engine<br />
- how will this change affect current systems<br />
It&#8217;s actually terrific, I&#8217;d kill to get more of such articles on tools I work with, not just &#8216;try reinstalling ones&#8217;.</p>
<p>On an unrelated note: I&#8217;ve uploaded updated versions of <a href="http://ykud.com/blog/cognos/tm1-cognos/stress-testing-tm1-models">tm1 stress testing tool</a> (with more input parameters) and <a href="http://ykud.com/blog/cognos/tm1-cognos/tm1cmp">tm1 model comparison tool</a> (just some bug fixing).</p>
<p>And on another unrelated note: I was nominated an <a href="http://www-01.ibm.com/software/data/champion/profiles/kudryavcev.html">IBM Information Champion</a> again. Thank you all for reading this blog )</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/ibm/new-cognos-bi-and-tm1-content-from-ibm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TM1 model comparison tool</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/tm1cmp</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/tm1cmp#comments</comments>
		<pubDate>Mon, 21 Mar 2011 14:10:33 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=565</guid>
		<description><![CDATA[Another simple script, this time about reporting changes between a couple TM1 models. Developed for pre dev->prod migration in one of our projects, but maybe useful for answering &#8216;what did we change since backup?&#8217; or even &#8216;what did they change while we weren&#8217;t around?&#8217; questions. I&#8217;ve made random changes to Planning Sample &#8212; here&#8217;s the [...]]]></description>
			<content:encoded><![CDATA[<p>Another simple script, this time about reporting changes between a couple TM1 models. Developed for pre dev->prod migration in one of our projects, but maybe useful for answering &#8216;what did we change since backup?&#8217; or even &#8216;what did they change while we weren&#8217;t around?&#8217; questions.</p>
<p>I&#8217;ve made random changes to Planning Sample &#8212; here&#8217;s the <a href='http://ykud.com/blog/wp-content/uploads/2011/03/plansamp_change_report.html'>resulting change report</a><br />
<br />
No need to install anything, I packed it into .exe file:<br />
1) Download <a href="http://ykud.com/misc/tm1cmp.zip">application archive</a>, unzip it to any folder<br />
2) run</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="winbatch"><pre class="de1">tm1cmp.exe <span class="sy0">-</span>o Path_to_Old_Model <span class="sy0">-</span>c Path_to_Changed_Model</pre></div></div></div></div></div></div></div>


<p>You can also specify -r report_file_name for name of generated report<br />
3) Open report.html or the filename you specified and enjoy</p>
<p>How it works:</p>
<ul>
<li> basic <a href="http://docs.python.org/library/filecmp.html">file comparison </a></li>
<li> for changed files I use <a href="http://docs.python.org/library/difflib.html">difflib</a> to detect changes + very basic logic to ignore simple edit_datestamp changes</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/tm1cmp/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>TM1 9.5.2 is out</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/tm1-9-5-2-is-out</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/tm1-9-5-2-is-out#comments</comments>
		<pubDate>Sat, 19 Mar 2011 09:59:18 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=556</guid>
		<description><![CDATA[It seems a very interesting new release. They&#8217;ve added a Parallel Interaction feature, which should decrease locking contentions that we&#8217;ve been working with. Would be nice to try this thing out. Take a look at new features guide and operations for more details. And Russian seems to be fully supported, cool. Watch TM1Forums threads for [...]]]></description>
			<content:encoded><![CDATA[<p>It seems a very interesting new release. They&#8217;ve added a Parallel Interaction feature, which should decrease locking contentions that we&#8217;ve <a href="http://ykud.com/blog/cognos/tm1-cognos/optimizing-tm1-calculations-with-pictures">been working with</a>.  Would be nice to try this thing out.<br />
Take a look at <a href="https://www-304.ibm.com/support/docview.wss?uid=swg27017272">new features guide and operations</a> for more details.<br />
And Russian seems to be fully supported, cool. </p>
<p>Watch TM1Forums threads for more comments as people start trying it out.<br />
<a href="http://www.tm1forum.com/viewtopic.php?f=3&#038;t=4446">9.5.2 &#8211; New Features and Issues</a><br />
<a href="http://www.tm1forum.com/viewtopic.php?f=3&#038;t=4435">Migrating to TM1 v9.5.1 or TM1 v9.5.2?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/tm1-9-5-2-is-out/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TM1. Generating and loading multiple rule files in one TI process</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/tm1-generating-and-loading-multiple-rule-files-in-one-ti-process</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/tm1-generating-and-loading-multiple-rule-files-in-one-ti-process#comments</comments>
		<pubDate>Fri, 11 Mar 2011 17:02:12 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=546</guid>
		<description><![CDATA[A more thorough answer to this LinkedIn thread. Several points before we start: You can load a rule file in TI process by using RuleLoadFromFile function It&#8217;s pretty easy to generate need rule file using ASCIIOutPut to write the need rule. But ASCIIOutPut opens the file on procedure (EPILOG, PROLOGUE, META) start and closes connection [...]]]></description>
			<content:encoded><![CDATA[<p>A more thorough answer to <a href="http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&#038;gid=1831121&#038;discussionID=46280692&#038;sik=&#038;trk=mywl_artile&#038;goback=.mwg_*2_1">this LinkedIn thread</a>.</p>
<p>Several points before we start:</p>
<ul>
<li>You can load a rule file in TI process by using <a href="http://publib.boulder.ibm.com/infocenter/ctm1/v9r4m1/index.jsp?topic=/com.ibm.swg.im.cognos.tm1_ref.9.4.1.doc/tm1_ref_id16193tifun_ruleloadfromfile.html">RuleLoadFromFile</a> function</li>
<li>It&#8217;s pretty easy to generate need rule file using <a href="http://publib.boulder.ibm.com/infocenter/ctm1/v9r4m1/index.jsp?topic=/com.ibm.swg.im.cognos.tm1_ref.9.4.1.doc/tm1_ref_id16193tifun_ruleloadfromfile.html">ASCIIOutPut </a>to write the need rule.</li>
<li>
But ASCIIOutPut opens the file on procedure (EPILOG, PROLOGUE, META) start and closes connection only when procedure ends.</li>
</ul>
<p>I was thinking about using one TI process for generating a number of rule files (simple [Dim.Element1]=[Dim.Element2] format, where Dimension and elements are parameters) and attaching them to a list of cubes, so the closing file restriction was a problem. I just couldn&#8217;t generate the files and attach them in the same procedure.  </p>
<p>An easy workaround is to use a very simple bat file, that will echo your generated rules into txt files that you will load in cycle. </p>
<p>TI Prolog Code then looks like this</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="winbatch"><pre class="de1"><span class="sy0">#</span> Iterating through your given list of cubes 
<span class="sy0">#</span> see Planning Sample language change process <span class="kw1">for</span> example
<span class="sy0">#</span> <span class="kw1">For</span> given cube <span class="sy0">--</span> currentCube holds it<span class="st0">'s name
# Generating rules file
SQ =  '</span><span class="st0">''</span><span class="st0">';
lineToWrite = '</span><span class="st0">&quot;[' | SQ | Dimension | SQ | ':' | SQ | elementFrom | SQ | '] = [' | SQ | Dimension | SQ | ':' | SQ | elementTo | SQ |  '] ;&quot;</span><span class="st0">';
ExecuteCommand('</span>echo.bat <span class="st0">' | lineToWrite,1);
# backing up current rules file
commandToExecute = '</span>copy.bat <span class="st0">' | currentCube | '</span>.RUX <span class="st0">'  | currentCube | '</span>.RUX_BACKUP<span class="st0">';
ExecuteCommand(commandToExecute,1);
&nbsp;
# attaching generated rule, saving data
RuleLoadFromFile(currentCube,'</span>test.txt<span class="st0">');</span></pre></div></div></div></div></div></div></div>


<p>and a simple echo.bat</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="winbatch"><pre class="de1">echo <span class="sy0">%~</span><span class="nu0">1</span> <span class="sy0">&gt;</span> test.txt</pre></div></div></div></div></div></div></div>


<p>and copy.bat</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="winbatch"><pre class="de1">copy <span class="sy0">%</span>1 <span class="sy0">%</span>2 <span class="sy0">/</span>y</pre></div></div></div></div></div></div></div>


]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/tm1-generating-and-loading-multiple-rule-files-in-one-ti-process/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimizing tm1 calculations (with pictures!)</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/optimizing-tm1-calculations-with-pictures</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/optimizing-tm1-calculations-with-pictures#comments</comments>
		<pubDate>Thu, 03 Mar 2011 08:15:42 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=538</guid>
		<description><![CDATA[Found myself using both of my new toy-scripts while stress-testing TM1: I vizualize model data flow (way bigger than PlanSample in this picture, but node filtering helps). Looking at such graph it&#8217;s easy to see model inputs (to left side), hardest calculations (these are the gordian knots) and reporting cubes. So I just start pouring [...]]]></description>
			<content:encoded><![CDATA[<p>Found myself using both of my new toy-scripts while stress-testing TM1:</p>
<ul>
<li>I vizualize model data flow (way bigger than PlanSample in this picture, but node filtering helps).</li>
<p><a href="http://ykud.com/blog/wp-content/uploads/2011/03/graph.png"><img src="http://ykud.com/blog/wp-content/uploads/2011/03/graph-1024x123.png" alt="" title="graph" width="1024" height="123" class="aligncenter size-large wp-image-542" /></a></p>
<li>Looking at such graph it&#8217;s easy to see model inputs (to left side), hardest calculations (these are the gordian knots) and reporting cubes.
</li>
<li>So I just start <a href="http://ykud.com/blog/cognos/tm1-cognos/stress-testing-tm1-models">pouring data input and reads</a> in suspiciously looking model parts. And if they suffocate, it&#8217;s up to optimizing rules  or turning rules into TI processes.
</li>
<li>Redraw the picture and repeat until happy )
</li>
</ul>
<p>Very much like unjamming the creek. Spring )</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/optimizing-tm1-calculations-with-pictures/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Stress testing TM1 models</title>
		<link>http://ykud.com/blog/cognos/tm1-cognos/stress-testing-tm1-models</link>
		<comments>http://ykud.com/blog/cognos/tm1-cognos/stress-testing-tm1-models#comments</comments>
		<pubDate>Mon, 28 Feb 2011 10:37:30 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[tm1]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=515</guid>
		<description><![CDATA[Ever thought about load testing your dear-loved TM1 project? Emulating a hundred (or hundreds) users reading and writing data simultaneously? it&#8217;s easy and simple! Never trust sales slogans like above. Any kind of stress testing system should be approached with a huge amount of doubt, as well as this one. But it&#8217;s a simple and [...]]]></description>
			<content:encoded><![CDATA[<p>Ever thought about load testing your dear-loved TM1 project? Emulating a hundred (or hundreds) users reading and writing data simultaneously? it&#8217;s easy and simple!</p>
<p>Never trust sales slogans like above. Any kind of stress testing system should be approached with a huge amount of doubt, as well as this one. But it&#8217;s a simple and useful tool for testing your calculations for scalability (IMHO).</p>
<p>We needed to stress-test one of our TM1 models and looked around for solutions. Most of them are discussed in <a href="http://forums.olapforums.com/viewtopic.php?f=3&#038;t=179">a very interesting thread on olapforums</a>, but going via Excel + VB way seemed a bit too much of &#8216;Excel + F9&#8242; to emulate the load. Turned out that it&#8217;s rather easy to roll-out a simple customizable Java application for this task, so here it is. </p>
<h3>What the tool does</h3>
<p>This tool tests your model for scalability and potential locking problems while performing calculations.<br />
It doesn&#8217;t test you client connectivity (Excel, Contributor, Websheets) because it works via Java API. It doesn&#8217;t test your environment (network latency etc) as well.<br />
It allows you to find and optimize the long-running and potentially blocking calculations in the model.<br />
It allows you to simulate different types of users (like &#8220;What will happen when brand managers are inputting sales plan and analysts are working with investment portfolio and CashFlow at the same time?&#8221;). </p>
<p><b>Attention</b>: Tool writes data to your model, don&#8217;t use it in production.</p>
<h3>How does it work</h3>
<p>You fill a user profile, containing:</p>
<ul>
<li>logins&#038;passwords list to be used</li>
<li>cubes for reading</li>
<li>cubes for writing</li>
<li>a list of dimension and their elements for writing &#8212; this is used for various purposes like simulating users from different regions (by specifying region in the list). Data will be written only to this elements in all the cubes containing dimension.</li>
<li>number of user session to be started with this profile</li>
</ul>
<p>When you run the tool with filled in profile (you can run different profiles at the same time), it creates a required number of user sessions and in each session:</p>
<ul>
<li>flips a coin to decide whether to read or write</li>
<li> (if read) creates a random view in one of the cubes for writing and reading and reads it contents</li>
<li>(if write) writes a random number (less than 100) of randomly picked cells into one of cubes for writing</li>
<li> waits 3 seconds and goes on again. Maybe this wait interval should be random as well )</li>
</ul>
<p>After starting the tool you fire up <a href="http://publib.boulder.ibm.com/infocenter/ctm1/v9r5m0/index.jsp?topic=/com.ibm.swg.im.cognos.tm1_op.9.5.1.doc/tm1_op_id6961UsingtheTM1TopUtility_N160F47.html">TM1Top</a> and enjoy the results.<br />
<a href="http://ykud.com/blog/wp-content/uploads/2011/02/tm1top.png"><img src="http://ykud.com/blog/wp-content/uploads/2011/02/tm1top-1024x267.png" alt="" title="tm1top" width="1024" height="267" class="alignleft size-large wp-image-516" /></a><br />
You&#8217;re interested in locking problems and long running calculations that are nicely depicted there (an example is underlined in the picture above).<br />
You can run <a href="http://publib.boulder.ibm.com/infocenter/ctm1/v9r5m0/topic/com.ibm.swg.im.cognos.tm1_op.9.5.1.doc/tm1_op_id7619UsingTM1PerformanceCounters_N1616F9.html#UsingTM1PerformanceCounters_N1616F9">TM1perfmon</a> to see the hardware side of the problem at the same time </p>
<p>After you&#8217;ve got enough, just hit CTRL + C in command window and it will stop.<br />
As a side bonus you&#8217;ll get a test log in the file test_results_profile_name.csv which will contain something like this:<br />
<a href="http://ykud.com/blog/wp-content/uploads/2011/02/tm1stress_results.png"><img src="http://ykud.com/blog/wp-content/uploads/2011/02/tm1stress_results-300x93.png" alt="" title="tm1stress_results" width="300" height="93" class="alignleft size-medium wp-image-517" /></a></p>
<h3>How to install&#038;use it</h3>
<ol>
<li> You will need a only Java machine (jre), which you most likely already have, because of number of web-plugins developed in Java. This the only requirement, there&#8217;s no need to have TM1 installed or anything. </li>
<li> <a href="http://ykud.com/misc/tm1stress.zip">Download the tool</a>, unpack to some directory (c:\tm1stress, for example)</li>
<li><a href="http://publib.boulder.ibm.com/infocenter/ctm1/v9r4m1/topic/com.ibm.swg.im.cognos.tm1_op.9.4.1.doc/tm1_op_id10799ConfiguringtheTM1JavaAPItoUseSSL_N1206FD.html?resultof=%22%6a%61%76%61%22%20%22%73%73%6c%22%20">Cryptic step of adding security certificate to your Java</a>.</li>
<ol>
<li>Find jre\bin\keytool.exe utility on your computer</li>
<li>Open the command line and navigate to jre\bin</li>
<li>Run command line keytool -keystore ..\lib\security\cacerts -alias Company -import -file c:\tm1stress\applixca.der</li>
<li>Enter &#8216;changeit&#8217; as password</li>
<li>Type yes</li>
</ol>
<li>Create a new user profile xml file, use the planning sample one as an example (if don&#8217;t need some sections &#8212; just leave them blank)</li>
<li> Open command line, navigate to c:\tm1stress, run java tm1_stress_test your_profile_filename.xml</li>
<li> You should get some informational messages (logins, operations, errors) in command output</ol>
</li>
<p>There&#8217;s application source code in the download archive, it may serve as Java API usage sample.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/tm1-cognos/stress-testing-tm1-models/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Should we use TM1 for reporting?</title>
		<link>http://ykud.com/blog/cognos/should-we-use-tm1-for-reporting</link>
		<comments>http://ykud.com/blog/cognos/should-we-use-tm1-for-reporting#comments</comments>
		<pubDate>Wed, 29 Sep 2010 14:28:58 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[cognos]]></category>
		<category><![CDATA[tm1]]></category>
		<category><![CDATA[essbase]]></category>
		<category><![CDATA[powerplay]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=457</guid>
		<description><![CDATA[Another point worth clearing out: I really think TM1 is not a very good choice for OLAP reporting engine. On a decent data volumes, of course, millions of rows will be fast as lightning Let me explain why. There&#8217;s a fundamental difference choice you take when you&#8217;re building an OLAP engine:  you decide whether it [...]]]></description>
			<content:encoded><![CDATA[<p>Another point worth clearing out: I really think TM1 is not a very good choice for OLAP reporting engine. On a decent data volumes, of course, millions of rows will be fast as lightning <img src='http://ykud.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Let me explain why.<br />
</p>
<div>There&#8217;s a fundamental difference choice you take when you&#8217;re building an OLAP engine:  you decide whether it will be bulk updated or data will be inserted real-time. Consequences are substantial, you either optimize system for faster reads or inserts.</div>
<div></div>
<div>TM1 was designed for inserts, so it lacks the main &#8216;read-only&#8217; system optimization: <strong>aggregates</strong>.</div>
<div></div>
<div>Aggregates are a common solution to performance issues that rise up when you ask &#8220;So how many socks did we sell last year&#8221; on dataset of billion rows. You can either try to walk through all detail records and count socks, or you can store an answer beforehand, creating a so-called aggregate view (products,years). Moreover this aggregate view can be used to answer question like &#8216;How were our sales at all last year&#8217;, since this view is way smaller than original data. But to do so, system must be &#8216;hierarchy-aware&#8217;, which is to know that you can calculate all product sales by omitting product dimension from (products,years) view. This property is sometimes called <a href="http://www.rkimball.com/html/articles_search/articles1995/9511d05.html">aggregate navigation</a>. This all boils down to cube lattices that i like dearly. Working with such lattices was my PhD topic )</div>
<div>All read-optimized OLAP engines are built around this concept:</div>
<div>- aggregate views are called partitions in Cognos Transformer</div>
<div>- aggregate views in Oracle Essbase</div>
<div>- aggregate in Microsoft Analysis Services</div>
<div>Each of these engines has a lot of optimizations in query rewriting. aimed on optimal aggregates usage.</div>
<div></div>
<div>As a side note: so does Oracle with materialized views and dimensions concept and IBM MQ with cube views )</div>
<div></div>
<div>But there&#8217;s no such thing in TM1. There are <a href="http://publib.boulder.ibm.com/infocenter/ctm1/v9r4m1/index.jsp?topic=/com.ibm.swg.im.cognos.tm1_op.9.4.1.doc/tm1_op_id3091AboutStargateViews_N100C08.html">stargate</a> views, which simply store the opened view and it&#8217;s very unclear how good is query-rewriting afterwards. At least nobody I talked with knows anything about that and my tests didn&#8217;t show good results.</div>
<div></div>
<div>Generally, TM1 projects were all about planning, which doesn&#8217;t involve billions of rows, so performance questions didn&#8217;t come up often.</div>
<p></p>
<div>Another big question, of course, is <strong>data loading speed</strong>.</div>
<div>TM1 loads both data and dimension at the same speed of 30k records per second (it depends on record size, but we couldn&#8217;t raise it much higher) in one CPU thread (<a href="http://ykud.com/blog/cognos/cognos-powerplay-transformer-limitations">say hello to Transformer</a>). <a href="http://ykud.com/blog/hyperion_essbase/loading-data-into-aso-cube">I&#8217;ve loaded data ten times faster in Oracle Essbase</a> and it&#8217;s not the maximum you can reach.</div>
<div>30k\s is actually not bad enough, but inability to scale up is very bad.</div>
<p></p>
<div>Nowadays IBM positions TM1 as reporting-OLAP server as well as foundation for planning products, which, I think, is a bit inaccurate. I&#8217;ve tried to sum up my concerns, feel free to comment on your experiences.</div>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/should-we-use-tm1-for-reporting/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

