Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

File:QEMU KVM.png

3,482 bytes added, 10:19, 27 May 2020
no edit summary
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 <code>count</code>: <small><source lang="bash">#!/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 gnuplotget_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 tagscount_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 kernellatest=$(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_rcif ! 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 " fifi 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=$vdone | sed 's/ /\t/g'</source></small> === Draw the graph === Here is the script to produce the graph. Note it calls the previous script under the name 'count'.<small><source lang="bash">#!/bin/sh REPO=~/src/qemu/.gitCOUNT=$(pwd)/countOUT=$(pwd)/time.datexport GDFONTPATH=/usr/share/fonts/microsoftexport 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 $OUTfi 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.pngset terminal png enhanced font "verdana,13" size 1600,1200  set title "OpenVZ team QEMU patches progress as of ${DATE}" unset xlabelset xdata timeset 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 weekQEMU release, accepted from mainline into mainstream" set border 3 # no lines at right and topset xtics nomirror # no tics at topset 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 EOFQEMU + KVM unit tests + KVM guest drivers</source></small>