{"id":125,"date":"2009-02-17T14:52:57","date_gmt":"2009-02-17T03:52:57","guid":{"rendered":"http:\/\/nsrd.wordpress.com\/?p=125"},"modified":"2018-12-12T16:32:25","modified_gmt":"2018-12-12T06:32:25","slug":"basics-parallelism-in-networker","status":"publish","type":"post","link":"https:\/\/nsrd.info\/blog\/2009\/02\/17\/basics-parallelism-in-networker\/","title":{"rendered":"Basics &#8211; Parallelism in NetWorker"},"content":{"rendered":"<p>Parallelism in NetWorker is effectively multiplexing by another name. There are three areas where you have traditionally been able to set this:<\/p>\n<ul>\n<li>Client parallelism \u2013 how many savesets a client can simultaneously send in a backup<\/li>\n<li>Server parallelism \u2013&nbsp;how many savesets a backup server will simultaneously allow to be active for the purposes of backup<\/li>\n<li>Target sessions \u2013&nbsp;the optimal number of savesets you want running to a backup device<\/li>\n<\/ul>\n<p>As of NetWorker 7, we saw the introduction of:<\/p>\n<ul>\n<li>Savegrp parallelism \u2013 the maximum number of backup savesets that can be running for a particular group.<\/li>\n<\/ul>\n<p>As of NetWorker 7.3, we saw the introduction of:<\/p>\n<ul>\n<li>Max sessions \u2013&nbsp;the maximum number of savesets you&#8217;ll permit running to a backup device<\/li>\n<\/ul>\n<p>Somewhere in the 7.x tree \u2013 I don&#8217;t recall when \u2013 there was another parallelism setting introduced, this time for the pool:<\/p>\n<ul>\n<li>Max parallelism \u2013 The maximum number of savesets that can be simultaneously written to media belonging to a particular pool.<\/li>\n<\/ul>\n<p>Also, we&#8217;ve seen the introduction of:<\/p>\n<ul>\n<li>Max active devices \u2013&nbsp;a setting maintained in the device resource, but is shared by all devices common to a single storage node, rather refers to the maximum number of devices that can be active on the storage node at any one time.<\/li>\n<\/ul>\n<p>All of these settings serve one key purpose \u2013&nbsp;they let you tune the performance of your NetWorker datazone.<\/p>\n<p><em>Note: It&#8217;s worth pointing out something fairly critical here \u2013&nbsp;all of these settings affect&nbsp; <\/em><strong><em>backup<\/em><\/strong><em> savesets, they don&#8217;t affect recovery savesets. NetWorker will <\/em><strong><em>always<\/em><\/strong><em> allow new recovery savesets to be initiated, even if it can&#8217;t immediately facilitate the recovery.<\/em><\/p>\n<p>Client parallelism is actually one of the most difficult parallelism settings to tune, and I&#8217;ve been somewhat disappointed by the new &#8220;default&#8221; setting of 12 (up from 4) in NetWorker 7.4.x onwards. I strongly believe it should be set to 1 for all new clients so as to ensure people <em>think<\/em> about the performance implications before they increase it.<\/p>\n<p>I won&#8217;t go further into client parallelism here \u2013&nbsp;I covered in considerable detail in my <a title=\"A corporate insurance policy\" href=\"http:\/\/www.amazon.com\/gp\/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FEnterprise-Systems-Backup-Recovery-Corporate%2Fdp%2F1420076396%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1221104920%26sr%3D8-1&amp;tag=entesystbacka-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325\" target=\"_blank\">book<\/a>, so if you want details of evaluating client parallelism settings you should check it out*.&nbsp;<\/p>\n<p>Server parallelism is a lot easier to understand \u2013&nbsp;how powerful is your server, and how many devices do you have? In an optimal environment, your backup environment should be able to handle the processing of enough streams to keep <em>every single backup device<\/em> in your datazone streaming at full speed**. We&#8217;ll get to this in a moment, but optimally you want to keep that to as few savesets as possible \u2013&nbsp;i.e., in a perfect world, we&#8217;d like to be able to keep every backup device running at full speed from individual savesets. This doesn&#8217;t always happen though, so you need to be able to plan for the appropriate number of savesets.&nbsp;<\/p>\n<p>(Even when the backup server is not actually backing anything up (e.g., all client backups are conducted by storage nodes, with the backup server just acting in a director role), every active saveset does consume resources on the backup server \u2013&nbsp;this includes general coordination resources as well as index resources, etc.)<\/p>\n<p>Device target sessions is an interesting one. It&#8217;s not actually a <em>hard<\/em> limit. In the first pass, it refers to how many savesets should be running on a device before new savesets are started on the next device. So, if every device in the environment has target sessions of 4, then one by one NetWorker will want to get 4 savesets running to each device. But what happens when every device is running 4 savesets, and NetWorker needs to start a new saveset? In that instance, NetWorker just &#8216;cycles&#8217; through all the devices, tacking on another saveset to each device until they&#8217;re say, all running 5 savesets. Then if another comes along it starts building each device up to 6, and so on. In effect, it&#8217;s a primitive form of load balancing.&nbsp;<\/p>\n<p>The newly introduced setting of max sessions for devices does act as a hard limit \u2013&nbsp;a device will never exceed the number of active savesets as defined by the max sessions parameter; this by default is set to 512, effectively not placing a limit on the number of sessions running to the device***.<\/p>\n<p>So what about the other settings? Where would you use them?<\/p>\n<p>The <em>savegrp parallelism<\/em> setting is a great option to use if you have multiple groups running in such a way that they overlap, and one or more of the groups has large numbers of clients. You see, traditionally, the code for a group assumes that when it starts, it can query the server&#8217;s parallelism setting and start up to that many savesets. However, if you&#8217;ve got multiple groups running, then you could exceed the number of permitted savesets. This can result in timeouts or failures. If however you&#8217;ve say, got server parallelism of 64, and one group with 100 clients, and two other groups with say, 4 clients each, you might set the large group to have parallelism of 60, and the other two groups to each have parallelism of 2. This would enable all three groups to simultaneously run.<\/p>\n<p><em>Max parallelism<\/em> for pools is not something I&#8217;ve really played around with. However, I can immediately imagine it would be useful if you had specific pools for disk backup units that are all connected via the same FC or SCSI bus \u2013&nbsp;you could set a maximum parallelism setting for all the pool so you don&#8217;t swamp the interface. That&#8217;s just one example after only a couple of seconds of thinking about it, so I know there&#8217;ll be other options there.<\/p>\n<p><em>Max active devices<\/em> for storage nodes is again something I&#8217;ve not played around with, <em>but<\/em>, I can see that I&#8217;d particularly make use of it in a situation where the actual storage node machine itself is not capable of driving all the backup devices attached to it at full speed; in this instance, limiting the number of <em>active<\/em> devices would allow you to say, have 3 of 6 devices running at full speed, rather than 6 of 6 devices running at a very sub-optimal speed.<\/p>\n<p>So, there&#8217;s a good starting point at parallelism.&nbsp;<\/p>\n<p>&#8212;<br \/>\n* Not necessarily to be construed as a sales pitch. I went to a lot of effort to explain all the factors of client parallelism in my book, and it&#8217;s far too long to repeat in a blog entry.<\/p>\n<p>** By full speed, when referring to drives that do hardware compression, I refer to the streaming compression speed.<\/p>\n<p>*** If you need devices that can handle more than 512 active sessions, I <em>really<\/em> want to sell you the arrays you&#8217;ll need to achieve it!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Parallelism in NetWorker is effectively multiplexing by another name. There are three areas where you have traditionally been able to&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6,16],"tags":[1249,718],"class_list":["post-125","post","type-post","status-publish","format-standard","hentry","category-basics","category-networker","tag-networker","tag-parallelism"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pKpIN-21","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/comments?post=125"}],"version-history":[{"count":1,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":7689,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/125\/revisions\/7689"}],"wp:attachment":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/media?parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/categories?post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/tags?post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}