Editing File:Kernel patches stats.png
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 8: | Line 8: | ||
== Source code == | == Source code == | ||
+ | |||
=== Collect data === | === Collect data === | ||
Here is the script to produce the data for the graph, called <code>count</code>: | Here is the script to produce the data for the graph, called <code>count</code>: | ||
Line 15: | Line 16: | ||
# Whose patches to count | # Whose patches to count | ||
− | + | PAT='@openvz.org|@parallels.com|@sw.ru|@swsoft.com|@sw.com.sg|adobriyan@|kuznet@' | |
− | |||
− | |||
# Return the date of the given tag, in a format usable by gnuplot | # Return the date of the given tag, in a format usable by gnuplot | ||
Line 33: | Line 32: | ||
} | } | ||
− | + | # What is the latest kernel patch number (i.e. x in 2.6.x) | |
− | + | latest=$(git tag | grep -v -- -rc | tail -n1 | sed -e 's/^.*\.\(.*\)$/\1/') | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
# Find out if number of patches for HEAD is much more | # Find out if number of patches for HEAD is much more | ||
− | # than for latest -rc. If yes, use HEAD, otherwise -rc. | + | # than for latest -rc. If yes, use HEAD, otherwise -rc. |
− | last_rc=$(git | + | last_rc=$(git tag | tail -n 1 | grep -- -rc) |
HEAD=$last_rc | HEAD=$last_rc | ||
if ! test -z "$last_rc"; then | if ! test -z "$last_rc"; then | ||
− | much_more= | + | much_more=15 |
− | count_head=$(count_patches | + | count_head=$(count_patches v2.6.$latest HEAD) |
− | count_rc=$(count_patches | + | count_rc=$(count_patches v2.6.$latest $last_rc) |
if test $count_head -gt $((count_rc+much_more)); then | if test $count_head -gt $((count_rc+much_more)); then | ||
HEAD="HEAD " | HEAD="HEAD " | ||
Line 57: | Line 48: | ||
fi | fi | ||
− | + | # We start from 2.6.12 -- the first kernel available in git | |
− | for | + | for f in $(seq 13 $((latest+1))); do |
− | + | v1=v2.6.$((f-1)) | |
− | if | + | d1=$(get_tag_date $v1) |
− | + | if [ $f -gt $latest ]; then | |
− | + | v2=$HEAD | |
+ | else | ||
+ | v2=v2.6.$f | ||
+ | fi | ||
+ | d2=$(get_tag_date $v2) | ||
+ | count=$(count_patches $v1 $v2) | ||
+ | if test "$count" -gt 0; then | ||
+ | echo $d2 $v2 " " $count | ||
fi | fi | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
done | sed 's/ /\t/g' | done | sed 's/ /\t/g' | ||
</source></small> | </source></small> | ||
Line 81: | Line 71: | ||
<small><source lang="bash"> | <small><source lang="bash"> | ||
#!/bin/sh | #!/bin/sh | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
if test "$1" != "-f"; then | if test "$1" != "-f"; then | ||
− | + | git pull | |
− | + | sh count > time.dat | |
− | |||
− | |||
− | |||
− | |||
fi | fi | ||
− | DATE=$( | + | DATE=$(date '+%d %b %Y') |
− | MAXY=$(awk 'BEGIN {max=0}; ($3 > max) {max=$3}; END {print max+ | + | MAXY=$(awk 'BEGIN {max=0}; ($3 > max) {max=$3}; END {print max+50}' < time.dat) |
# GNU date is powerful! | # GNU date is powerful! | ||
MAXX=$(date +%b-1-%Y --date='+2 months') | MAXX=$(date +%b-1-%Y --date='+2 months') | ||
+ | export GDFONTPATH=/usr/share/fonts/msttcorefonts/ | ||
cat << EOF | gnuplot > plot.png | cat << EOF | gnuplot > plot.png | ||
− | set terminal png enhanced font " | + | set terminal png enhanced font "verdanab,20" size 1600,1200 |
− | |||
set title "OpenVZ team kernel patches progress as of ${DATE}" | set title "OpenVZ team kernel patches progress as of ${DATE}" | ||
Line 116: | Line 96: | ||
set xrange [ : "${MAXX}" ] | set xrange [ : "${MAXX}" ] | ||
set yrange [ 0 : ${MAXY} ] | set yrange [ 0 : ${MAXY} ] | ||
− | set ylabel "Number of patches | + | set ylabel "Number of patches, per kernel release,\naccepted into mainstream" |
set border 3 # no lines at right and top | set border 3 # no lines at right and top | ||
Line 122: | Line 102: | ||
set ytics nomirror # no tics at right | set ytics nomirror # no tics at right | ||
− | plot ' | + | plot 'time.dat' using 1:3 with linespoints pt 6 ps 1 lw 2 lt 2 notitle, \ |
− | '' using 1:3:2 with labels left offset 0, | + | '' using 1:3:2 with labels left offset 0,1 rotate notitle, \ |
'' using 1:3:3 with labels left offset 0.7,0 notitle | '' using 1:3:3 with labels left offset 0.7,0 notitle | ||
EOF | EOF | ||
</source></small> | </source></small> |