##// END OF EJS Templates
merge: perform background file closing in batchget...
merge: perform background file closing in batchget As 2fdbf22a1b63 demonstrated with stream clones, closing files on background threads on Windows can yield a significant speedup because closing files that have been created/appended to is slow on Windows/NTFS. Working directory updates can write thousands of files. Therefore it is susceptible to excessive slowness on Windows due to slow file closes. This patch enables background file closing when performing working directory file writes. The impact when performing an `hg up tip` on mozilla-central (136,357 files) from an empty working directory is significant: Before: 535s (8:55) After: 133s (2:13) Delta: -402s (6:42) That's a 4x speedup! By comparison, that same machine can perform the same operation in ~15s on Linux. So Windows went from ~35x to ~9x slower. Not bad but there's still work to do. As a reminder, background file closing is only activated on Windows because it is only beneficial on that platform. So this patch shouldn't change non-Windows behavior at all. It's worth noting that non-Windows systems perform working directory updates with multiple processes. Unfortunately, worker.py doesn't yet support Windows. So, there is still plenty of room for making working directory updates faster on Windows. Even if multiple processes are used on Windows, I believe background file closing will still provide a benefit, as individual processes will still be slowed down by the file close bottleneck (assuming the I/O system isn't saturated).

File last commit:

r26731:0c42b6bb default
r28200:588695cc default
Show More
rules
36 lines | 1.4 KiB | text/plain | TextLexer
Augie Fackler
debian: switch to using debhelper and dh_python2 to build debs...
r26148 #!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1
CPUS=$(shell cat /proc/cpuinfo | grep -E ^processor | wc -l)
%:
dh $@ --with python2
override_dh_auto_test:
http_proxy='' dh_auto_test -- TESTFLAGS="-j$(CPUS)"
override_dh_python2:
dh_python2
find debian/mercurial/usr/share -type d -empty -delete
override_dh_install:
python$(PYVERS) setup.py install --root $(CURDIR)/debian/mercurial --install-layout=deb
# remove arch-independent python stuff
find $(CURDIR)/debian/mercurial/usr/lib \
! -name '*.so' ! -type d -delete , \
-type d -empty -delete
python$(PYVERS) setup.py install --root $(CURDIR)/debian/mercurial-common --install-layout=deb
make install-doc PREFIX=$(CURDIR)/debian/mercurial-common/usr
# remove arch-dependent python stuff
find $(CURDIR)/debian/mercurial-common/usr/lib \
-name '*.so' ! -type d -delete , \
-type d -empty -delete
Augie Fackler
debian: install hg-ssh to /usr/bin just like downstream
r26296 cp contrib/hg-ssh $(CURDIR)/debian/mercurial-common/usr/bin
Augie Fackler
debian: install hgk as part of mercurial-common (issue4829)...
r26299 mkdir -p $(CURDIR)/debian/mercurial-common/usr/share/mercurial
cp contrib/hgk $(CURDIR)/debian/mercurial-common/usr/share/mercurial
Augie Fackler
debian: install config files as part of mercurial-common...
r26298 mkdir -p $(CURDIR)/debian/mercurial-common/etc/mercurial/hgrc.d/
cp contrib/debian/*.rc $(CURDIR)/debian/mercurial-common/etc/mercurial/hgrc.d/
Augie Fackler
debian: include bash completions in mercurial-common
r26300 mkdir -p $(CURDIR)/debian/mercurial-common/usr/share/bash-completion/completions
Augie Fackler
debian: install bash completion as hg and not mercurial (issue4900)
r26731 cp contrib/bash_completion $(CURDIR)/debian/mercurial-common/usr/share/bash-completion/completions/hg
Augie Fackler
debian: switch to using debhelper and dh_python2 to build debs...
r26148 rm $(CURDIR)/debian/mercurial-common/usr/bin/hg