HP-UX VxFS tuning and performance - filibeto.org
HP-UX VxFS tuning and performance - filibeto.org
HP-UX VxFS tuning and performance - filibeto.org
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
8<br />
example, two threads can be reading from the same file sequentially <strong>and</strong> both threads can benefit<br />
from the configured read ahead size.<br />
Figure 3. Enhanced read ahead<br />
Enhanced read ahead can be set on a per file system basis by setting the read_ahead tunable to 2<br />
with vxtunefs(1M).<br />
Read ahead on 11i v3<br />
With the introduction of the Unified File Cache (UFC) on <strong>HP</strong>-<strong>UX</strong> 11i v3, significant changes were<br />
needed for <strong>VxFS</strong>. As a result, a defect was introduced which caused poor <strong>VxFS</strong> read ahead<br />
<strong>performance</strong>. The problems are fixed in the following patches according to the <strong>VxFS</strong> version:<br />
PHKL_40018 - 11.31 vxfs4.1 cumulative patch<br />
PHKL_41071 - 11.31 VRTS 5.0 MP1 VRTSvxfs Kernel Patch<br />
PHKL_41074 - 11.31 VRTS 5.0.1 GARP1 VRTSvxfs Kernel Patch<br />
These patches are critical to <strong>VxFS</strong> read ahead <strong>performance</strong> on 11i v3.<br />
Another caveat with <strong>VxFS</strong> 4.1 <strong>and</strong> later occurs when the size of the read() is larger than the<br />
read_pref_io value. A large cached read can result in a read ahead size that is insufficient for the<br />
read. To avoid this situation, the read_pref_io value should be configured to be greater than or equal<br />
to the application read size.<br />
For example, if the application is doing 128 KB read() system calls, then the application can<br />
experience <strong>performance</strong> issues with the default read_pref_io value of 64 KB, as the <strong>VxFS</strong> would only<br />
read ahead 64 KB, leaving the remaining 64 KB that would have to be read in synchronously.<br />
Note<br />
On <strong>HP</strong>-<strong>UX</strong> 11i v3, the read_pref_io value should be set to the size of the<br />
largest logical read size for a process doing sequential I/O through cache.<br />
The write_pref_io value should be configured to be greater than or equal to the read_pref_io value<br />
due to a new feature on 11i v3 called read flush behind, which will be discussed later.<br />
Flush behind<br />
64K 128K 64K 128K 64K<br />
Patterned Read<br />
During normal asynchronous write operations, the data is written to buffers in the buffer cache, or<br />
memory pages in the file cache. The buffers/pages are marked “dirty” <strong>and</strong> control returns to the<br />
application. Later, the dirty buffers/pages must be flushed from the cache to disk.<br />
There are 2 ways for dirty buffers/pages to be flushed to disk. One way is through a “sync”, either<br />
by a sync() or fsync() system call, or by the syncer daemon, or by one of the vxfsd daemon threads.<br />
The second method is known as “flush behind” <strong>and</strong> is initiated by the application performing the<br />
writes.