NLRUQ parameter: Difference between revisions

From m204wiki
Jump to navigation Jump to search
m (add link)
 
(5 intermediate revisions by 2 users not shown)
Line 3: Line 3:
<dl>
<dl>
<dt>Default value
<dt>Default value
<dd>1, also the minimum
<dd>1 (also the minimum)
<dt>Parameter type
<dt>Parameter type
<dd>System
<dd>System
Line 15: Line 15:


==Description==
==Description==
<p>The NLRUQ parameter reduces contention on the <var>[[Performance_monitoring_and_tuning#Multiprocessing_.28MP.2F204.29|MP]]</var> lock that protects the reuse queues. </p>
<p>
<p>This MP lock is a primary source of MP overhead. Setting this parameter to greater than 1 has no benefit in a non-MP run. In fact, in all cases a setting of greater than 1 might result in a slight increase in disk I/O, due to a loss in precision in the least-recently used algorithm for managing the disk buffer pool. With NLRUQ greater than 1, it would be possible for a page to be stolen from the buffer pool before one that was less recently used.</p>
The <var>NLRUQ</var> parameter reduces contention on the [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP]] lock that protects the reuse queues. This MP lock is a primary source of MP overhead.  
<p>NLRUQ=1 preserves the single reuse queue model used in releases of <var class="product">Model&nbsp;204</var> before V6R1.0. </p>
<p>In the following formula NLRUQ is used as a multiplier to determine the minimum number of disk buffers used in an Online. </p>
<p class="code"><var>[[MINBUF_parameter|MINUF]]</var> >= NLRUQ * ((<var>[[NSERVS_parameter|NSERVS]]</var> + <var>[[NSUBTKS_parameter|NSUBTKS]]</var>) * <var>[[MAXOBUF_parameter|MAXOBUF]]</var> + 15)
</p>
</p>
<p>A reasonable guess for a proper NLRUQ would be adding two for each MP subtask so that a setting of <var>[[NMPSUBS_parameter|NMPSUBS]]</var>=1 would suggest NLRUQ=3 and NMPSUBS=7 would suggest NLRUQ=15. </p>
<p>
<p>If NLRUQ is set greater than 1, then the values of <var>[[LDKBMWND_parameter|LDKBMWND]]</var>, <var>[[MAXBUF_parameter|MAXBUF]]</var>, and MINBUF are all rounded up to a multiple of NLRUQ. The maximum setting for NLRUQ is 255. </p>
Setting <var>NLRUQ</var> greater than 1 has no benefit in a non-MP run. In fact, in all cases, a setting greater than 1 might result in a slight increase in disk I/O, owing to a loss in precision in the least-recently-used algorithm for managing the below the bar (BTB) disk buffer pool. With <var>NLRUQ</var> greater than 1, it would be possible for a page to be stolen from the BTB buffer pool before one that was less recently used.
<p>A high conflict count for LRU queue locks that would appear in MONITOR MPLOCK command output indicates that you should increase NLRUQ and <var>[[NLRUQG_parameter|NLRUQG]]</var>.</p>
</p>
<blockquote class="note"><b>Note:</b> As of version 7.7 of Model&nbsp;204, whether BTB buffers are used at all depends entirely on the setting of <var>[[NUMBUFG parameter|NUMBUFG]]</var>, which activates buffer storage above the bar.
<ul>
<li>If <var>NUMBUFG</var> is greater than 0, <i>all</i> buffer pool buffers are forced above the bar — no buffers are below the bar. The <var>MINBUF</var> and <var>NUMBUF</var> parameters are forced to 0, and the other parameters that affect BTB storage (<var>MAXBUF</var>, <var>SPCORE</var>, <var>LDKBMWND</var>, and <var>NLRUQ</var>) are ignored. </li>
 
<li>If <var>NUMBUFG</var> is set to 0, all buffers are below the bar, and the settings of the BTB-related parameters are respected and calculated as in pre-7.7 versions. </li>
</ul>
</blockquote>
 
===If BTB buffers are used===
<p>
When BTB buffers are being used (that is, <var>NUMBUFG</var> is 0 under version 7.7 or higher, or <var>NUMBUFG</var> is any value under Model&nbsp;204 prior to 7.7): </p>
<ul>
<li><code>NLRUQ=1</code> preserves the single reuse queue model used in releases of <var class="product">Model&nbsp;204</var> before V6R1.0. </li>
 
<li><var>NLRUQ</var> is used as a multiplier to determine the minimum number of BTB disk buffers used in an Online:
<p class="code"><var>[[MINBUF parameter|MINBUF]]</var> >= NLRUQ * ((<var>[[NSERVS parameter|NSERVS]]</var> + <var>[[NSUBTKS parameter|NSUBTKS]]</var>) * <var>[[MAXOBUF parameter|MAXOBUF]]</var> + 15)
</p> </li>
 
<li>A reasonable guess for a proper <var>NLRUQ</var> value adds two for each MP subtask, so a setting of <code>[[NMPSUBS parameter|NMPSUBS]]=1</code> suggests <code>NLRUQ=3</code>, and <code>NMPSUBS=7</code> suggests <code>NLRUQ=15</code>. </li>
 
<li>If <var>NLRUQ</var> is set greater than 1, the values of <var>[[LDKBMWND parameter|LDKBMWND]]</var>, <var>[[MAXBUF parameter|MAXBUF]]</var>, and <var>MINBUF</var> are all rounded up to a multiple of <var>NLRUQ</var>. The maximum setting for <var>NLRUQ</var> is 255. </li>
 
<li>If a <var>[[MONITOR MPLOCK command|MONITOR MPLOCK]]</var> command output reveals a high conflict count for LRU queue locks, increase <var>NLRUQ</var> and <var>[[NLRUQG parameter|NLRUQG]]</var>.</li>
</ul>
 
==See also==
<ul>
<li><var>[[NLRUQG parameter|NLRUQG]]</var> </li>
</ul>
 
[[Category:System parameters]]
[[Category:System parameters]]
[[Category:Parameters]]
[[Category:Parameters]]

Latest revision as of 23:26, 25 August 2016

# of DKBM LRU queues

Summary

Default value
1 (also the minimum)
Parameter type
System
Where set
Not resettable
Related products
All
Introduced
Model 204 V6.1

Description

The NLRUQ parameter reduces contention on the MP lock that protects the reuse queues. This MP lock is a primary source of MP overhead.

Setting NLRUQ greater than 1 has no benefit in a non-MP run. In fact, in all cases, a setting greater than 1 might result in a slight increase in disk I/O, owing to a loss in precision in the least-recently-used algorithm for managing the below the bar (BTB) disk buffer pool. With NLRUQ greater than 1, it would be possible for a page to be stolen from the BTB buffer pool before one that was less recently used.

Note: As of version 7.7 of Model 204, whether BTB buffers are used at all depends entirely on the setting of NUMBUFG, which activates buffer storage above the bar.

  • If NUMBUFG is greater than 0, all buffer pool buffers are forced above the bar — no buffers are below the bar. The MINBUF and NUMBUF parameters are forced to 0, and the other parameters that affect BTB storage (MAXBUF, SPCORE, LDKBMWND, and NLRUQ) are ignored.
  • If NUMBUFG is set to 0, all buffers are below the bar, and the settings of the BTB-related parameters are respected and calculated as in pre-7.7 versions.

If BTB buffers are used

When BTB buffers are being used (that is, NUMBUFG is 0 under version 7.7 or higher, or NUMBUFG is any value under Model 204 prior to 7.7):

  • NLRUQ=1 preserves the single reuse queue model used in releases of Model 204 before V6R1.0.
  • NLRUQ is used as a multiplier to determine the minimum number of BTB disk buffers used in an Online:

    MINBUF >= NLRUQ * ((NSERVS + NSUBTKS) * MAXOBUF + 15)

  • A reasonable guess for a proper NLRUQ value adds two for each MP subtask, so a setting of NMPSUBS=1 suggests NLRUQ=3, and NMPSUBS=7 suggests NLRUQ=15.
  • If NLRUQ is set greater than 1, the values of LDKBMWND, MAXBUF, and MINBUF are all rounded up to a multiple of NLRUQ. The maximum setting for NLRUQ is 255.
  • If a MONITOR MPLOCK command output reveals a high conflict count for LRU queue locks, increase NLRUQ and NLRUQG.

See also