<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 2, 2018, at 12:39 AM, Gionatan Danti <<a href="mailto:g.danti@assyoma.it" class="">g.danti@assyoma.it</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Il 01-04-2018 19:05 Richard Elling via zfs-discuss ha scritto:</span><br style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">there is a lot of good info in this thread already, but I'd like to<br class="">draw your attention to prefetching...<br class=""><blockquote type="cite" class="">On Mar 29, 2018, at 5:43 AM, Alex Vodeyko via zfs-discuss<br class=""><<a href="mailto:zfs-discuss@list.zfsonlinux.org" class="">zfs-discuss@list.zfsonlinux.org</a>> wrote:<br class=""></blockquote>...<br class=""><blockquote type="cite" class="">I use "recordsize=1M" because we have big files and sequential I/O.<br class=""></blockquote>...<br class=""><blockquote type="cite" class="">1) iozone (write = 2.7GB/s, read = 1GB/s)<br class=""></blockquote>...<br class=""><blockquote type="cite" class="">"arcstat" during reads:<br class=""># arcstat.py 5 (100% pm and 50+% miss)<br class="">time read miss miss% dmis dm% pmis pm% mmis mm% arcsz c<br class="">14:13:17 1.9K 1.0K 55 1 0 1.0K 100 2 42 62G 62G<br class="">14:13:22 2.1K 1.1K 54 0 0 1.1K 100 0 13 63G 62G<br class="">14:13:27 1.8K 980 54 1 0 979 100 2 42 62G 62G<br class="">14:13:32 1.6K 880 55 1 0 879 100 2 40 62G 62G<br class=""></blockquote>"pmis" is the number of prefetch misses: both data and metadata<br class="">"pm%" is the prefetch miss ratio to the number of total accesses.<br class="">First, check that prefetching is enabled (it is by default)<br class="">zfs_prefetch_disable = 0<br class="">For a sequentual read operation, we expect the prefetcher to be<br class="">prefetching,<br class="">and thus do not expect pm%=100%.<br class="">The zfetch_array_rd_sz tunable parameter is a limit to the size of the<br class="">prefetching<br class="">blocks. Basically, if a block is larger than zfetch_array_rd_sz, then<br class="">it is not prefetched.<br class="">However, the default zfetch_array_rd_sz = 1,048,576 thus it should be<br class="">fine if your<br class="">volblocksize=1m. Be sure to check its value.<br class="">A related tunable is zfetch_max_distance, default = 8MiB, maximum<br class="">number of bytes<br class="">to prefetch per stream. This might be too small for volblocksize=1m.<br class="">To help visualize the zfetch activity, I usually do the data<br class="">collection with Prometheus'<br class="">node_exporter or influxdb's telegraf. But if you are a CLI fan, then I<br class="">pushed a Linux<br class="">version of zfetchstat to<br class=""><a href="https://github.com/richardelling/zfs-linux-tools" class="">https://github.com/richardelling/zfs-linux-tools</a><span class="Apple-converted-space"> </span>[1]<br class=""><blockquote type="cite" class="">"top" shows only 8 "z_rd_int" processes during reads (and only one<br class="">"z_rd_int" running), while there were 32 running z_wr_iss processes<br class="">during writes.<br class=""></blockquote>This could be another clue about prefetching not being enabled or not<br class="">working as<br class="">desired. However, in my experience, it is better to observe the<br class="">detailed back-end I/O<br class="">distribution and classification with "zpool iostat -q" where<br class="">prefetches are often, but<br class="">not always, in the asyncq_read category.<br class="">-- richard<br class=""></blockquote><br style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">This is very interesting, thanks.</span><br style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">What surprises me is that, based on iostat and zpool iostat, its pool always see 128K-sized I/O and low util% value. Any clue about that?</span><br style="font-family: Menlo-Regular; font-size: 11px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote><div><br class=""></div><div>1MiB / 8 = 128kiB</div><div> -- richard</div></div><br class=""></body></html>