File:QEMU KVM.png
Revision as of 10:23, 27 May 2020 by Vvs (talk | contribs) (Vvs uploaded a new version of File:QEMU KVM.png)
Size of this preview: 800 × 600 pixels. Other resolutions: 320 × 240 pixels | 1,600 × 1,200 pixels.
Original file (1,600 × 1,200 pixels, file size: 35 KB, MIME type: image/png)
Number of patches from OpenVZ team
Description
This graph shows how many patches from OpenVZ developers were merged into mainstream QEMU + KVM, per each version.
It is drawn by gnuplot using the data set obtained from git repository.
Source code
Collect data
Here is the script to produce the data for the graph, called count
:
#!/bin/sh
# Whose patches to count
#PAT='@openvz.org|@parallels.com|@sw.ru|@swsoft.com|@sw.com.sg|kuznet@'
#PAT='@openvz.org|@parallels.com|@sw.ru|@swsoft.com|@sw.com.sg|adobriyan@|kuznet@|gorcunov@'
PAT='@openvz.org|@parallels.com|@sw.ru|@swsoft.com|@sw.com.sg|virtuozzo.com|kuznet@|gorcunov@'
# Return the date of the given tag, in a format usable by gnuplot
get_tag_date() {
echo $(git show $1 | egrep ^Date: | head -n1) |
sed 's/^Date: ... \(.*\) [-+]....$/\1/' |
sed 's/ ..:..:..//' | sed 's/ /-/g'
}
# Count the number of patches whose authors match $PAT,
# for the period between two given git tags
count_patches() {
git log --pretty=short --no-merges $1..$2 |
egrep '^Author: ' | egrep $PAT | wc -l
}
count_total_patches() {
git log --pretty=short --no-merges $1..$2 | grep -c '^commit '
}
# Latest kernel
latest=$(git tag | grep -v -- -rc | grep -F 'v1.' | \
awk -F . '{print $2}' | sort -n | tail -n1)
# Find out if number of patches for HEAD is much more
# than for latest -rc. If yes, use HEAD, otherwise -rc.:
last_rc=$(git describe --abbrev=0)
HEAD=$last_rc
if ! test -z "$last_rc"; then
much_more=10
count_head=$(count_patches v1.$latest.0 HEAD)
count_rc=$(count_patches v1.$latest.0 $last_rc)
if test $count_head -gt $((count_rc+much_more)); then
HEAD="HEAD "
fi
fi
pv=''
for v in $(git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags |\
grep -v -E -- '-rc|-tree|v2.6.11|\.[1-9]$') HEAD; do
if [ -z "$pv" ]; then
pv=$v
continue
fi
pd=$(get_tag_date $pv)
d=$(get_tag_date $v)
count_ours=$(count_patches $pv $v)
count_total=$(count_total_patches $pv $v)
if test "$count_ours" -gt 0; then
echo $d $v " " $count_ours $count_total
fi
pv=$v
done | sed 's/ /\t/g'
Draw the graph
Here is the script to produce the graph. Note it calls the previous script under the name 'count'.
#!/bin/sh
REPO=~/src/qemu/.git
COUNT=$(pwd)/count
OUT=$(pwd)/time.dat
export GDFONTPATH=/usr/share/fonts/microsoft
export GIT_DIR=$REPO
if test "$1" != "-f"; then
echo "== Previous (old) stats =="
tail -n 2 $OUT
# Update the repo and count new stats
(cd $REPO && cd .. && git pull) && sh $COUNT > $OUT
echo "== New stats =="
tail -n 2 $OUT
fi
DATE=$(tail -n 1 $OUT | cut -f 1 | awk -F- '{print $2,$1,$3}')
MAXY=$(awk 'BEGIN {max=0}; ($3 > max) {max=$3}; END {print max+80}' < time.dat)
# GNU date is powerful!
MAXX=$(date +%b-1-%Y --date='+2 months')
cat << EOF | gnuplot > plot.png
set terminal png enhanced font "verdana,13" size 1600,1200
set title "OpenVZ team QEMU patches progress as of ${DATE}"
unset xlabel
set xdata time
set timefmt "%b-%d-%Y"
set format x "%b\n%Y"
set grid xtics mxtics noytics
set xrange [ : "${MAXX}" ]
set yrange [ 0 : ${MAXY} ]
set ylabel "Number of patches from OpenVZ team,\n per QEMU release, accepted into mainstream"
set border 3 # no lines at right and top
set xtics nomirror # no tics at top
set ytics nomirror # no tics at right
plot '${OUT}' using 1:3 with linespoints pt 6 ps 1 lw 2 lt 2 notitle, \
'' using 1:3:2 with labels left offset 0,5.5 rotate notitle, \
'' using 1:3:3 with labels left offset 0.7,0 notitle
EOF
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 10:23, 27 May 2020 | 1,600 × 1,200 (35 KB) | Vvs (talk | contribs) | ||
11:20, 27 August 2018 | 1,600 × 1,200 (25 KB) | Vvs (talk | contribs) | 27 aug 2018 | ||
09:52, 3 July 2018 | 1,600 × 1,200 (25 KB) | Vvs (talk | contribs) |
- You cannot overwrite this file.
File usage
The following page links to this file: