Hello Linus,
>> According to several tests on systems with different number of CPU cores
>> the hard-coded number of 8 threads is not optimal for all systems:
> Did you also compare cold-cache filesystem performance?
> One of the reasons for doing threaded grep is for CPU scaling. But another
> is for IO scaling. If your git tree is over NFS, doing grep eight threads at
> a time if likely going to make things much faster even if you are on a single
> CPU.
Yes, I have performed tests on cold-cache FS and it looks like number of
threads affects performance. Here are the results for grepping linux kernel
repo on a 4-core machine (similar test was conducted on 8-core machine):
Threads: 4 Time: 39.13
Threads: 8 Time: 34.39
Threads: 16 Time: 31.46
Threads: 32 Time: 27.40
Here is test scenario:
#!/bin/bash
TIMEFORMAT=%R
GIT=/home/del/git-dev/bin/git
TESTS=10
for n in 4 8 16 32; do
echo -n "Threads: $n Time: "
for i in $(seq 1 $TESTS); do
echo 3 > /proc/sys/vm/drop_caches
time $GIT grep --threads $n -e '#define' --and \( -e MAX_PATH -e
PATH_MAX \) >/dev/null
done 2>&1 | awk -v ntests=${TESTS} '{sum+=$1} END{printf "%.2f\n",
sum/ntests}'
done
Note: With hot-cache grepping with 4 threads gives fastest results on both
4-core and 8-core machines.
Thus I think it can be useful for users to be able to tune the threads number
according to their needs.
--
Victor--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html