]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r286320: Issue all reads of single XCOPY segment simultaneously.
authormav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 19 Aug 2015 17:41:49 +0000 (17:41 +0000)
committermav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 19 Aug 2015 17:41:49 +0000 (17:41 +0000)
commita552bc8e84f7b9f8f63fd0ef24ec45f7dc2e51b6
treed650366a02a4ec964febf28c736529f6b863d815
parentcf3a08fbe8d859701a456c51a6cae2633a48db4d
MFC r286320: Issue all reads of single XCOPY segment simultaneously.

During vMotion and Clone VMware by default runs multiple sequential 4MB
XCOPY requests same time.  If CTL issues reads sequentially in 1MB chunks
for each XCOPY command, reads from different commands are not detected
as sequential by serseq option code and allowed to execute simultaneously.
Such read pattern confused ZFS prefetcher, causing suboptimal disk access.
Issuing all reads same time make serseq code work properly, serializing
reads both within each XCOPY command and between them.

My tests with ZFS pool of 14 disks in RAID10 shows prefetcher efficiency
improved from 37% to 99.7%, copying speed improved by 10-60%, average
read latency reduced twice on HDD layer and by five times on zvol layer.

git-svn-id: svn://svn.freebsd.org/base/stable/10@286928 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cam/ctl/ctl_tpc.c