<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.osnexus.com/index.php?action=history&amp;feed=atom&amp;title=Qs_io_profiles.conf</id>
	<title>Qs io profiles.conf - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.osnexus.com/index.php?action=history&amp;feed=atom&amp;title=Qs_io_profiles.conf"/>
	<link rel="alternate" type="text/html" href="https://wiki.osnexus.com/index.php?title=Qs_io_profiles.conf&amp;action=history"/>
	<updated>2026-10-03T15:06:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.osnexus.com/index.php?title=Qs_io_profiles.conf&amp;diff=27716&amp;oldid=prev</id>
		<title>Qadmin: Remove the admin_guide category so the page no longer appears in the sidebar; it is reference material reached from QuantaStor Configuration Files (QSTOR-12429)</title>
		<link rel="alternate" type="text/html" href="https://wiki.osnexus.com/index.php?title=Qs_io_profiles.conf&amp;diff=27716&amp;oldid=prev"/>
		<updated>2026-09-03T10:23:54Z</updated>

		<summary type="html">&lt;p&gt;Remove the admin_guide category so the page no longer appears in the sidebar; it is reference material reached from QuantaStor Configuration Files (QSTOR-12429)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:23, 3 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{DISPLAYTITLE:qs_io_profiles.conf}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{DISPLAYTITLE:qs_io_profiles.conf}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:admin_guide]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;qs_io_profiles.conf&amp;lt;/code&amp;gt; defines the &amp;#039;&amp;#039;&amp;#039;Storage Pool I/O optimization profiles&amp;#039;&amp;#039;&amp;#039; -- the list you choose from when you set an I/O profile on a storage pool. Each section in the file becomes one selectable profile, and the values in it are applied to the block-device queue settings of the disks backing that pool.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;qs_io_profiles.conf&amp;lt;/code&amp;gt; defines the &amp;#039;&amp;#039;&amp;#039;Storage Pool I/O optimization profiles&amp;#039;&amp;#039;&amp;#039; -- the list you choose from when you set an I/O profile on a storage pool. Each section in the file becomes one selectable profile, and the values in it are applied to the block-device queue settings of the disks backing that pool.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:1.41:old-27678:rev-27716:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Qadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.osnexus.com/index.php?title=Qs_io_profiles.conf&amp;diff=27678&amp;oldid=prev</id>
		<title>Qadmin: New page for qs_io_profiles.conf under the configuration-file program (QSTOR-12429): the seven shipped profiles and their values generated from the shipped file, the full key reference including the nvme_/fifo_batch keys the loader honours but the file never sets, and the three applied behaviours not visible in the file - the hardware queue_depth dependency of the multiplier, the 1024 cap and the power-of-two rounding</title>
		<link rel="alternate" type="text/html" href="https://wiki.osnexus.com/index.php?title=Qs_io_profiles.conf&amp;diff=27678&amp;oldid=prev"/>
		<updated>2026-09-03T07:59:07Z</updated>

		<summary type="html">&lt;p&gt;New page for qs_io_profiles.conf under the configuration-file program (QSTOR-12429): the seven shipped profiles and their values generated from the shipped file, the full key reference including the nvme_/fifo_batch keys the loader honours but the file never sets, and the three applied behaviours not visible in the file - the hardware queue_depth dependency of the multiplier, the 1024 cap and the power-of-two rounding&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:qs_io_profiles.conf}}&lt;br /&gt;
[[Category:admin_guide]]&lt;br /&gt;
&amp;lt;code&amp;gt;qs_io_profiles.conf&amp;lt;/code&amp;gt; defines the &amp;#039;&amp;#039;&amp;#039;Storage Pool I/O optimization profiles&amp;#039;&amp;#039;&amp;#039; -- the list you choose from when you set an I/O profile on a storage pool. Each section in the file becomes one selectable profile, and the values in it are applied to the block-device queue settings of the disks backing that pool.&lt;br /&gt;
&lt;br /&gt;
Adding a section to this file adds a profile to the product. That is the file&amp;#039;s purpose: a new workload profile can be delivered without a code change.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;(Note: change this file only with guidance from OSNEXUS support. The shipped profiles are the tested ones, and a hand-built profile can degrade pool performance rather than improve it.)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Property !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Shipped path || &amp;lt;code&amp;gt;/opt/osnexus/quantastor/conf/qs_io_profiles.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Override path || &amp;lt;code&amp;gt;/var/opt/osnexus/quantastor/conf/qs_io_profiles.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Read || Once, at QuantaStor service start&lt;br /&gt;
|-&lt;br /&gt;
| Format || INI-style sections of &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; begins a comment&lt;br /&gt;
|-&lt;br /&gt;
| Profiles shipped || 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For where profiles fit into pool tuning as a whole, see [[Performance Tuning]]. For the override mechanism and the other configuration files, see [[QuantaStor Configuration Files]].&lt;br /&gt;
&lt;br /&gt;
== Shipped profiles ==&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;section name is the profile&amp;#039;s identity&amp;#039;&amp;#039;&amp;#039;, not its label. The profile&amp;#039;s object ID is generated from it, so renaming a section creates a new profile rather than renaming the existing one.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Section !! Profile name (as shown in the interface) !! Optimizes for&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Default&amp;#039;&amp;#039;&amp;#039; || Optimizes for general purpose server application workloads&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;virtualization&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Virtualization&amp;#039;&amp;#039;&amp;#039; || Optimizes for virtual machine workloads such as database and web servers under ESXi/XenServer/Hyper-V/Virtuozzo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;archive&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Disk Archive&amp;#039;&amp;#039;&amp;#039; || Optimizes pool IO characteristics for disk-to-disk backup &amp;amp; archive applications&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;edgeware_webtv&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Edgeware Web TV Optimized&amp;#039;&amp;#039;&amp;#039; || Optimizes pool IO characteristics Edgeware Web TV application workflow&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;edgeware_iptv&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Edgeware IP TV Optimized&amp;#039;&amp;#039;&amp;#039; || Optimizes pool IO characteristics Edgeware IP TV application workflow&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;video512ra1024&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Media Post-Production (Playback Optimized)&amp;#039;&amp;#039;&amp;#039; || Optimizes pool IO characteristics for media post-production playback&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;video1024ra1024&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Media Post-Production (Ingest Optimized)&amp;#039;&amp;#039;&amp;#039; || Optimizes pool IO characteristics for media post-production editing&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A section with no &amp;lt;code&amp;gt;name=&amp;lt;/code&amp;gt; is skipped silently.&amp;#039;&amp;#039;&amp;#039; The loader requires both a section name and a &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; value and drops anything else without an error, so a typo in that one key makes a profile vanish rather than fail loudly.&lt;br /&gt;
&lt;br /&gt;
== Shipped values ==&lt;br /&gt;
&lt;br /&gt;
Blank means the key is absent from that profile, in which case the value stays at whatever the device already had.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key !! default !! virtualization !! archive !! edgeware_webtv !! edgeware_iptv !! video512ra1024 !! video1024ra1024&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hdd_scheduler&amp;lt;/code&amp;gt; || deadline || deadline || deadline || deadline || deadline || deadline || deadline&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hdd_nr_requests&amp;lt;/code&amp;gt; || 256 || 64 || 256 || 64 || 64 || 256 || 1024&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hdd_nr_requests_multiplier&amp;lt;/code&amp;gt; || 2 || 0 || 2 || 0 || 0 || 2 || 3&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hdd_read_ahead_kb&amp;lt;/code&amp;gt; || 256 || 128 || 512 || 256 || 256 || 1024 || 512&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ssd_scheduler&amp;lt;/code&amp;gt; || noop || noop || noop || noop || noop || noop || noop&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ssd_nr_requests&amp;lt;/code&amp;gt; || 256 || 256 || 256 || 256 || 256 || 256 || 256&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ssd_nr_requests_multiplier&amp;lt;/code&amp;gt; || 1 || 1 || 1 || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ssd_read_ahead_kb&amp;lt;/code&amp;gt; || 4 || 4 || 4 || 4 || 4 || 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;chunk_size_kb&amp;lt;/code&amp;gt; || 128 || 256 || 64 || 512 || 512 || 512 || 1024&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;min_target_driver_threads&amp;lt;/code&amp;gt; || 0 || 64 || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;min_target_driver_tasklets&amp;lt;/code&amp;gt; || 0 || 32 || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Keys ==&lt;br /&gt;
&lt;br /&gt;
Keys are grouped by media class. The &amp;lt;code&amp;gt;hdd_&amp;lt;/code&amp;gt; set applies to rotational disks, &amp;lt;code&amp;gt;ssd_&amp;lt;/code&amp;gt; to SATA/SAS solid-state, and &amp;lt;code&amp;gt;nvme_&amp;lt;/code&amp;gt; to NVMe devices, so one profile tunes a mixed pool correctly rather than applying one queue depth to everything.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key !! Applies to !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; || the profile || The label shown in the interface. &amp;#039;&amp;#039;&amp;#039;Required&amp;#039;&amp;#039;&amp;#039; -- a section without it is skipped.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; || the profile || The one-line description shown beside the name.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;media&amp;amp;gt;_scheduler&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;/sys/block/&amp;amp;lt;dev&amp;amp;gt;/queue/scheduler&amp;lt;/code&amp;gt; || The I/O scheduler to select for that media class.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;media&amp;amp;gt;_nr_requests&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;queue/nr_requests&amp;lt;/code&amp;gt; || Request queue depth, as a literal value.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;media&amp;amp;gt;_nr_requests_multiplier&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;queue/nr_requests&amp;lt;/code&amp;gt; || Queue depth as a multiple of the device&amp;#039;s hardware queue depth. Takes precedence over the literal value -- see below.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;media&amp;amp;gt;_read_ahead_kb&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;queue/read_ahead_kb&amp;lt;/code&amp;gt; || Read-ahead window in KB. The single most workload-sensitive value here.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;media&amp;amp;gt;_fifo_batch&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;queue/iosched/fifo_batch&amp;lt;/code&amp;gt; || Deadline-scheduler batch size. Only meaningful while that scheduler is selected.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;min_target_driver_threads&amp;lt;/code&amp;gt; || SCST || Minimum SCSI target driver threads. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; means use the SCST default, which scales with processor core count.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;min_target_driver_tasklets&amp;lt;/code&amp;gt; || SCST || Minimum SCSI target driver tasklets. &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; means the SCST default.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;chunk_size_kb&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;nothing&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Legacy and deprecated.&amp;#039;&amp;#039;&amp;#039; A leftover mdadm parameter, still parsed and still stored on the profile object, but it does not tune anything on a ZFS pool. The file&amp;#039;s own comment says as much. Ignore it when building a profile.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Keys the loader accepts but the shipped file never sets ===&lt;br /&gt;
&lt;br /&gt;
The loader reads three key sets, one per media class, but &amp;#039;&amp;#039;&amp;#039;the shipped file only ever populates &amp;lt;code&amp;gt;hdd_&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssd_&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;. These are read and honoured if you add them:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;&lt;br /&gt;
nvme_scheduler&lt;br /&gt;
nvme_nr_requests&lt;br /&gt;
nvme_nr_requests_multiplier&lt;br /&gt;
nvme_read_ahead_kb&lt;br /&gt;
nvme_fifo_batch&lt;br /&gt;
hdd_fifo_batch&lt;br /&gt;
ssd_fifo_batch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So an NVMe-backed pool runs on &amp;#039;&amp;#039;&amp;#039;whatever queue settings the devices booted with&amp;#039;&amp;#039;&amp;#039; under every shipped profile, because no shipped profile sets an &amp;lt;code&amp;gt;nvme_&amp;lt;/code&amp;gt; key. That is worth knowing before concluding a profile had no effect on an all-NVMe pool -- it genuinely did not.&lt;br /&gt;
&lt;br /&gt;
== How the values are applied ==&lt;br /&gt;
&lt;br /&gt;
Three behaviours here are not visible in the file and change what a given value actually produces.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The multiplier only works on devices that report a hardware queue depth.&amp;#039;&amp;#039;&amp;#039; It is applied as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;&lt;br /&gt;
nr_requests = queue_depth x multiplier&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;code&amp;gt;queue_depth&amp;lt;/code&amp;gt; is read from &amp;lt;code&amp;gt;/sys/block/&amp;amp;lt;dev&amp;amp;gt;/device/queue_depth&amp;lt;/code&amp;gt;. Only physical devices expose that file. If it is absent or reads zero, the multiplier is skipped and the literal &amp;lt;code&amp;gt;nr_requests&amp;lt;/code&amp;gt; value is used instead. &amp;#039;&amp;#039;&amp;#039;On a virtual machine this means the multiplier typically does nothing&amp;#039;&amp;#039;&amp;#039;, so a profile tested in a VM will not behave the same on physical hardware. Where both keys are set, the multiplier wins whenever a hardware queue depth is available -- which is why the shipped profiles set both.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The computed value is capped at 1024&amp;#039;&amp;#039;&amp;#039; and logs a warning when it is reduced:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;&lt;br /&gt;
Requested device &amp;#039;...&amp;#039; queue depth based on multiplier &amp;#039;N&amp;#039; is to large at &amp;#039;X&amp;#039; &amp;gt; 1024, reducing to 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So on a device with a deep hardware queue, a multiplier of 3 may quietly become the same as a multiplier of 2. The &amp;lt;code&amp;gt;video1024ra1024&amp;lt;/code&amp;gt; profile&amp;#039;s multiplier of 3 is the most likely to hit this.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The value is rounded up to a power of two&amp;#039;&amp;#039;&amp;#039; before it is written, so &amp;lt;code&amp;gt;nr_requests=200&amp;lt;/code&amp;gt; becomes 256. Choose powers of two to avoid surprises. Writes are also skipped when the device already holds the target value, so applying a profile twice is harmless and logs nothing the second time.&lt;br /&gt;
&lt;br /&gt;
== Changing the file ==&lt;br /&gt;
&lt;br /&gt;
Copy the shipped file to the override path, edit the copy, and restart the service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /opt/osnexus/quantastor/conf/qs_io_profiles.conf /var/opt/osnexus/quantastor/conf/&lt;br /&gt;
sudo vi /var/opt/osnexus/quantastor/conf/qs_io_profiles.conf&lt;br /&gt;
sudo systemctl restart quantastor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Never edit the shipped copy.&amp;#039;&amp;#039;&amp;#039; It is replaced on upgrade with no prompt and no backup of your changes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;An override replaces the file rather than merging with it&amp;#039;&amp;#039;&amp;#039;, and the profile list is reconciled against it at every service start. A profile that is absent from the file in force is &amp;#039;&amp;#039;&amp;#039;removed from the system&amp;#039;&amp;#039;&amp;#039; -- so an override must carry every profile you still want, including the shipped ones. A pool already set to a profile that disappears keeps the stored setting but the profile is no longer selectable.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Restart the service after editing.&amp;#039;&amp;#039;&amp;#039; The file is read once at start; nothing rereads it.&lt;br /&gt;
&lt;br /&gt;
== Listing the profiles ==&lt;br /&gt;
&lt;br /&gt;
The profiles the appliance actually loaded are visible from the command line, which is the quickest way to confirm an edit took effect:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;&lt;br /&gt;
qs pool-profile-list&lt;br /&gt;
qs pool-profile-get --profile=&amp;quot;Virtualization&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On a shipped appliance &amp;lt;code&amp;gt;pool-profile-list&amp;lt;/code&amp;gt; returns the seven profiles above. If a profile you added is missing from that list, the section was skipped -- check that it has a &amp;lt;code&amp;gt;name=&amp;lt;/code&amp;gt; value and that the service has been restarted.&lt;br /&gt;
&lt;br /&gt;
Applying one to a pool:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size: smaller&amp;quot;&amp;gt;&lt;br /&gt;
qs pool-modify --pool=&amp;amp;lt;pool&amp;amp;gt; --profile=&amp;quot;Disk Archive&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applying a profile to a pool ==&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Storage Management &amp;amp;rarr; Storage Pools &amp;#039;&amp;#039;(section)&amp;#039;&amp;#039; &amp;amp;rarr; &amp;#039;&amp;#039;select a Storage Pool&amp;#039;&amp;#039; &amp;amp;rarr; Modify}}&lt;br /&gt;
&lt;br /&gt;
The profile is chosen from the I/O profile list in the Create and Modify Storage Pool dialogs. See [[Storage Pools]] for the dialog itself and [[Performance Tuning]] for guidance on which profile suits which workload, and for the measurement approach to use before and after a change.&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
&lt;br /&gt;
* [[Performance Tuning]] -- which profile to choose, and how to measure the effect&lt;br /&gt;
* [[qs_systemtunables.conf]] -- the system tunables, a separate mechanism with a similar override model&lt;br /&gt;
* [[QuantaStor Configuration Files]] -- the override resolution order and the other configuration files&lt;br /&gt;
* [[Storage Pools]] -- the dialogs that apply a profile&lt;br /&gt;
* [[Storage System Optimization]] -- the optimization profiles that tune the appliance as a whole&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;#039;&amp;#039;Verified against QuantaStor 6.9.0.&amp;#039;&amp;#039;&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qadmin</name></author>
	</entry>
</feed>