18.07.2013 Views

HP-UX VxFS tuning and performance - filibeto.org

HP-UX VxFS tuning and performance - filibeto.org

HP-UX VxFS tuning and performance - filibeto.org

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!