Difference between revisions of "File:QEMU KVM.png"
(Vvs uploaded a new version of File:QEMU KVM.png) |
|
(No difference)
|
Latest revision as of 10:23, 27 May 2020
Number of patches from OpenVZ team
Description[edit]
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[edit]
Collect data[edit]
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[edit]
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: