Hello community, here is the log from the commit of package bonnie++ for openSUSE:Factory checked in at 2020-09-14 12:29:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bonnie++ (Old) and /work/SRC/openSUSE:Factory/.bonnie++.new.4249 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bonnie++" Mon Sep 14 12:29:52 2020 rev:25 rq:834001 version:1.98 Changes: -------- --- /work/SRC/openSUSE:Factory/bonnie++/bonnie++.changes 2019-11-06 13:55:06.852091929 +0100 +++ /work/SRC/openSUSE:Factory/.bonnie++.new.4249/bonnie++.changes 2020-09-14 12:31:04.065203466 +0200 @@ -1,0 +2,9 @@ +Sat Sep 12 09:32:24 UTC 2020 - Dirk Mueller <[email protected]> + +- update to 1.98: + * Allow specifying the number of random seeks and the number + of seeker processes and store that in the CSV (for testing NVMe). + * Changed the text output to use KiB/MiB/GiB as units of measurement so we + can fit NVMe results on screen. + +------------------------------------------------------------------- Old: ---- bonnie++-1.97.3.tgz New: ---- bonnie++-1.98.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bonnie++.spec ++++++ --- /var/tmp/diff_new_pack.Ocsq2c/_old 2020-09-14 12:31:05.493204376 +0200 +++ /var/tmp/diff_new_pack.Ocsq2c/_new 2020-09-14 12:31:05.497204379 +0200 @@ -1,7 +1,7 @@ # # spec file for package bonnie++ # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,16 +17,15 @@ Name: bonnie++ -Version: 1.97.3 +Version: 1.98 Release: 0 Summary: A Bonnie-Like File System Benchmark License: MIT -Url: http://www.coker.com.au/bonnie++/ -Source: http://www.coker.com.au/bonnie++/experimental/%{name}-%{version}.tgz +URL: https://www.coker.com.au/bonnie++/ +Source: https://www.coker.com.au/bonnie++/bonnie++-%{version}.tgz # PATCH-FIX-UPSTREAM bonnie++-1.96-makefile.patch -- fixes make install Patch0: bonnie++-1.96-makefile.patch BuildRequires: gcc-c++ -BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Bonnie++ is a benchmark suite aimed at performing a number of simple @@ -39,14 +38,13 @@ %build %configure \ --disable-stripping -make clean %{?_smp_mflags} -make MORECFLAGS="%{optflags}" %{?_smp_mflags} +%make_build clean +%make_build MORECFLAGS="%{optflags}" %install %make_install %files -%defattr(-,root,root) %doc README-2.00 README.txt %{_bindir}/bon_csv2html %{_bindir}/bon_csv2txt @@ -55,11 +53,11 @@ %{_sbindir}/getc_putc %{_sbindir}/getc_putc_helper %{_sbindir}/zcav -%{_mandir}/man1/bon_csv2html.1%{ext_man} -%{_mandir}/man1/bon_csv2txt.1%{ext_man} -%{_mandir}/man1/generate_randfile.1%{ext_man} -%{_mandir}/man8/bonnie++.8%{ext_man} -%{_mandir}/man8/getc_putc.8%{ext_man} -%{_mandir}/man8/zcav.8%{ext_man} +%{_mandir}/man1/bon_csv2html.1%{?ext_man} +%{_mandir}/man1/bon_csv2txt.1%{?ext_man} +%{_mandir}/man1/generate_randfile.1%{?ext_man} +%{_mandir}/man8/bonnie++.8%{?ext_man} +%{_mandir}/man8/getc_putc.8%{?ext_man} +%{_mandir}/man8/zcav.8%{?ext_man} %changelog ++++++ bonnie++-1.97.3.tgz -> bonnie++-1.98.tgz ++++++ ++++ 2457 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/Makefile new/bonnie++-1.98/Makefile --- old/bonnie++-1.97.3/Makefile 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/Makefile 2018-12-26 05:14:28.000000000 +0100 @@ -5,7 +5,7 @@ SCRIPTS=bon_csv2txt -prefix=/home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr +prefix=/home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr eprefix=${prefix} #MORE_WARNINGS=-Weffc++ WFLAGS=-Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -Wcast-align -Wsign-compare -Wpointer-arith -Wwrite-strings -Wformat-security -Wswitch-enum -Winit-self $(MORE_WARNINGS) @@ -58,9 +58,9 @@ ${INSTALL} $(SCRIPTS) $(eprefix)/bin install: install-bin - mkdir -p /home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man1 /home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man8 - ${INSTALL} -m 644 $(MAN1) /home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man1 - ${INSTALL} -m 644 $(MAN8) /home/rjc/debian/bonnie++-1.97.3/debian/bonnie++/usr/share/man/man8 + mkdir -p /home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man1 /home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man8 + ${INSTALL} -m 644 $(MAN1) /home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man1 + ${INSTALL} -m 644 $(MAN8) /home/rjc/debian/bonnie++-1.98/debian/bonnie++/usr/share/man/man8 %.o: %.cpp $(CXX) -c $< diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_csv2html.1 new/bonnie++-1.98/bon_csv2html.1 --- old/bonnie++-1.97.3/bon_csv2html.1 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/bon_csv2html.1 2018-12-26 05:14:28.000000000 +0100 @@ -21,10 +21,10 @@ Before each field I list the field number as well as the name given in the heading .TP .B 0 format_version -Version of the output format in use (1.97) +Version of the output format in use (1.98) .TP .B 1 bonnie_version -(1.97) +(1.98) .TP .B 2 name Machine Name @@ -41,69 +41,75 @@ .B 6 chunk_size Size of chunks in bytes .TP -.B 7 putc,putc_cpu +.B 7 seeks +Number of seeks for random seek test +.TP +.B 8 seek_proc_count +Number of seeker processes for the random seek test +.TP +.B 9 putc,putc_cpu Results for writing a character at a time K/s,%CPU .TP -.B 9 put_block,put_block_cpu +.B 11 put_block,put_block_cpu Results for writing a block at a time K/s,%CPU .TP -.B 11 rewrite,rewrite_cpu +.B 13 rewrite,rewrite_cpu Results for reading and re-writing a block at a time K/s,%CPU .TP -.B 13 getc,getc_cpu +.B 15 getc,getc_cpu Results for reading a character at a time K/s,%CPU .TP -.B 15 get_block,get_block_cpu +.B 17 get_block,get_block_cpu Results for reading a block at a time K/s,%CPU .TP -.B 17 seeks,seeks_cpu +.B 19 seeks,seeks_cpu Results for the seek test seeks/s,%CPU .TP -.B 19 num_files +.B 21 num_files Number of files for file-creation tests (units of 1024 files) .TP -.B 20 max_size +.B 22 max_size The maximum size of files for file-creation tests. Or the type of files for links. .TP -.B 21 min_size +.B 23 min_size The minimum size of files for file-creation tests. .TP -.B 22 num_dirs +.B 24 num_dirs The number of directories for creation of files in multiple directories. .TP -.B 23 file_chunk_size +.B 25 file_chunk_size The size of blocks for writing multiple files. .TP -.B 24 seq_create,seq_create_cpu +.B 26 seq_create,seq_create_cpu Rate of creating files sequentially files/s,%CPU .TP -.B 26 seq_stat,seq_stat_cpu +.B 28 seq_stat,seq_stat_cpu Rate of reading/stating files sequentially files/s,%CPU .TP -.B 28 seq_del,seq_del_cpu +.B 30 seq_del,seq_del_cpu Rate of deleting files sequentially files/s,%CPU .TP -.B 30 ran_create,ran_create_cpu +.B 32 ran_create,ran_create_cpu Rate of creating files in random order files/s,%CPU .TP -.B 32 ran_stat,ran_stat_cpu +.B 34 ran_stat,ran_stat_cpu Rate of deleting files in random order files/s,%CPU .TP -.B 34 ran_del,ran_del_cpu +.B 36 ran_del,ran_del_cpu Rate of deleting files in random order files/s,%CPU .TP -.B 36 putc_latency,put_block_latency,rewrite_latency +.B 38 putc_latency,put_block_latency,rewrite_latency Latency (maximum amount of time for a single operation) for putc, put_block, and reqrite .TP -.B 39 getc_latency,get_block_latency,seeks_latency +.B 41 getc_latency,get_block_latency,seeks_latency Latency for getc, get_block, and seeks .TP -.B 42 seq_create_latency,seq_stat_latency,seq_del_latency +.B 44 seq_create_latency,seq_stat_latency,seq_del_latency Latency for seq_create, seq_stat, and seq_del .TP -.B 45 ran_create_latency,ran_stat_latency,ran_del_latency +.B 47 ran_create_latency,ran_stat_latency,ran_del_latency Latency for ran_create, ran_stat, and ran_del .P A string that starts with '#' is a comment. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_csv2html.1.in new/bonnie++-1.98/bon_csv2html.1.in --- old/bonnie++-1.97.3/bon_csv2html.1.in 2001-06-12 17:15:51.000000000 +0200 +++ new/bonnie++-1.98/bon_csv2html.1.in 2018-09-13 15:07:36.000000000 +0200 @@ -24,7 +24,7 @@ Version of the output format in use (@csv_version@) .TP .B 1 bonnie_version -(@version@) +(@csv_version@) .TP .B 2 name Machine Name @@ -41,69 +41,75 @@ .B 6 chunk_size Size of chunks in bytes .TP -.B 7 putc,putc_cpu +.B 7 seeks +Number of seeks for random seek test +.TP +.B 8 seek_proc_count +Number of seeker processes for the random seek test +.TP +.B 9 putc,putc_cpu Results for writing a character at a time K/s,%CPU .TP -.B 9 put_block,put_block_cpu +.B 11 put_block,put_block_cpu Results for writing a block at a time K/s,%CPU .TP -.B 11 rewrite,rewrite_cpu +.B 13 rewrite,rewrite_cpu Results for reading and re-writing a block at a time K/s,%CPU .TP -.B 13 getc,getc_cpu +.B 15 getc,getc_cpu Results for reading a character at a time K/s,%CPU .TP -.B 15 get_block,get_block_cpu +.B 17 get_block,get_block_cpu Results for reading a block at a time K/s,%CPU .TP -.B 17 seeks,seeks_cpu +.B 19 seeks,seeks_cpu Results for the seek test seeks/s,%CPU .TP -.B 19 num_files +.B 21 num_files Number of files for file-creation tests (units of 1024 files) .TP -.B 20 max_size +.B 22 max_size The maximum size of files for file-creation tests. Or the type of files for links. .TP -.B 21 min_size +.B 23 min_size The minimum size of files for file-creation tests. .TP -.B 22 num_dirs +.B 24 num_dirs The number of directories for creation of files in multiple directories. .TP -.B 23 file_chunk_size +.B 25 file_chunk_size The size of blocks for writing multiple files. .TP -.B 24 seq_create,seq_create_cpu +.B 26 seq_create,seq_create_cpu Rate of creating files sequentially files/s,%CPU .TP -.B 26 seq_stat,seq_stat_cpu +.B 28 seq_stat,seq_stat_cpu Rate of reading/stating files sequentially files/s,%CPU .TP -.B 28 seq_del,seq_del_cpu +.B 30 seq_del,seq_del_cpu Rate of deleting files sequentially files/s,%CPU .TP -.B 30 ran_create,ran_create_cpu +.B 32 ran_create,ran_create_cpu Rate of creating files in random order files/s,%CPU .TP -.B 32 ran_stat,ran_stat_cpu +.B 34 ran_stat,ran_stat_cpu Rate of deleting files in random order files/s,%CPU .TP -.B 34 ran_del,ran_del_cpu +.B 36 ran_del,ran_del_cpu Rate of deleting files in random order files/s,%CPU .TP -.B 36 putc_latency,put_block_latency,rewrite_latency +.B 38 putc_latency,put_block_latency,rewrite_latency Latency (maximum amount of time for a single operation) for putc, put_block, and reqrite .TP -.B 39 getc_latency,get_block_latency,seeks_latency +.B 41 getc_latency,get_block_latency,seeks_latency Latency for getc, get_block, and seeks .TP -.B 42 seq_create_latency,seq_stat_latency,seq_del_latency +.B 44 seq_create_latency,seq_stat_latency,seq_del_latency Latency for seq_create, seq_stat, and seq_del .TP -.B 45 ran_create_latency,ran_stat_latency,ran_del_latency +.B 47 ran_create_latency,ran_stat_latency,ran_del_latency Latency for ran_create, ran_stat, and ran_del .P A string that starts with '#' is a comment. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_csv2html.cpp new/bonnie++-1.98/bon_csv2html.cpp --- old/bonnie++-1.97.3/bon_csv2html.cpp 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/bon_csv2html.cpp 2018-09-13 16:54:36.000000000 +0200 @@ -6,7 +6,7 @@ #include <math.h> // Maximum number of items expected on a csv line -#define MAX_ITEMS 48 +#define MAX_ITEMS 50 using namespace std; typedef vector<PCCHAR> STR_VEC; @@ -43,19 +43,22 @@ bool col_used[MAX_ITEMS]; #define COL_NAME 2 #define COL_CONCURRENCY 3 -#define COL_FILE_size 5 -#define COL_DATA_CHUNK_size 6 -#define COL_PUTC 7 -#define COL_NUM_FILES 19 -#define COL_MAX_size 20 -#define COL_MIN_size 21 -#define COL_NUM_DIRS 22 -#define COL_FILE_CHUNK_size 23 -#define COL_RAN_DEL_CPU 35 -#define COL_PUTC_LATENCY 36 -#define COL_SEEKS_LATENCY 41 -#define COL_SEQ_CREATE_LATENCY 42 -#define COL_RAN_DEL_LATENCY 47 +#define COL_FILE_SIZE 5 +#define COL_DATA_CHUNK_SIZE 6 +#define COL_PUTC 9 +#define COL_PUT_BLOCK 11 +#define COL_REWRITE 13 +#define COL_GET_BLOCK 17 +#define COL_NUM_FILES 21 +#define COL_MAX_SIZE 22 +#define COL_MIN_SIZE 23 +#define COL_NUM_DIRS 24 +#define COL_FILE_CHUNK_SIZE 25 +#define COL_RAN_DEL_CPU 37 +#define COL_PUTC_LATENCY 38 +#define COL_SEEKS_LATENCY 43 +#define COL_SEQ_CREATE_LATENCY 44 +#define COL_RAN_DEL_LATENCY 49 void usage() { @@ -94,7 +97,7 @@ int j; for(j = COL_CONCURRENCY; j < MAX_ITEMS; j++) { - if( (j >= COL_NUM_FILES && j <= COL_FILE_CHUNK_size) || j <= COL_DATA_CHUNK_size ) + if( (j >= COL_NUM_FILES && j <= COL_FILE_CHUNK_SIZE) || j <= COL_DATA_CHUNK_SIZE ) { props[i][j] = "class=\"size\" bgcolor=\"#FFFFFF\""; } @@ -113,24 +116,24 @@ print_item(i, COL_NAME, "rowspan=\"2\""); if(col_used[COL_CONCURRENCY] == true) print_item(i, COL_CONCURRENCY); - print_item(i, COL_FILE_size); // file_size - if(col_used[COL_DATA_CHUNK_size] == true) - print_item(i, COL_DATA_CHUNK_size); + print_item(i, COL_FILE_SIZE); // file_size + if(col_used[COL_DATA_CHUNK_SIZE] == true) + print_item(i, COL_DATA_CHUNK_SIZE); print_a_line(i, COL_PUTC, COL_NUM_FILES); - if(col_used[COL_MAX_size]) - print_item(i, COL_MAX_size); - if(col_used[COL_MIN_size]) - print_item(i, COL_MIN_size); + if(col_used[COL_MAX_SIZE]) + print_item(i, COL_MAX_SIZE); + if(col_used[COL_MIN_SIZE]) + print_item(i, COL_MIN_SIZE); if(col_used[COL_NUM_DIRS]) print_item(i, COL_NUM_DIRS); - if(col_used[COL_FILE_CHUNK_size]) - print_item(i, COL_FILE_CHUNK_size); - print_a_line(i, COL_FILE_CHUNK_size + 1, COL_RAN_DEL_CPU); + if(col_used[COL_FILE_CHUNK_SIZE]) + print_item(i, COL_FILE_CHUNK_SIZE); + print_a_line(i, COL_FILE_CHUNK_SIZE + 1, COL_RAN_DEL_CPU); printf("</tr>\n"); // Now print the latency line printf("<tr>"); int lat_width = 1; - if(col_used[COL_DATA_CHUNK_size] == true) + if(col_used[COL_DATA_CHUNK_SIZE] == true) lat_width++; if(col_used[COL_CONCURRENCY] == true) lat_width++; @@ -366,18 +369,18 @@ int header() { int vers_width = 2; - if(col_used[COL_DATA_CHUNK_size] == true) + if(col_used[COL_DATA_CHUNK_SIZE] == true) vers_width++; if(col_used[COL_CONCURRENCY] == true) vers_width++; int mid_width = 1; - if(col_used[COL_MAX_size]) + if(col_used[COL_MAX_SIZE]) mid_width++; - if(col_used[COL_MIN_size]) + if(col_used[COL_MIN_SIZE]) mid_width++; if(col_used[COL_NUM_DIRS]) mid_width++; - if(col_used[COL_FILE_CHUNK_size]) + if(col_used[COL_FILE_CHUNK_SIZE]) mid_width++; printf("<!DOCTYPE html PUBLIC \"-//W3C//Dtd XHTML 1.0 Strict//EN\" \"http://www.w3.org/tr/xhtml1/Dtd/xhtml1-strict.dtd\">" "<html xmlns=\"http://www.w3.org/1999/xhtml\">" @@ -406,18 +409,18 @@ else printf("<td></td>"); printf("<td>Size</td>"); - if(col_used[COL_DATA_CHUNK_size] == true) + if(col_used[COL_DATA_CHUNK_SIZE] == true) printf("<td>Chunk Size</td>"); heading("Per Char"); heading("Block"); heading("Rewrite"); heading("Per Char"); heading("Block"); printf("<td>Num Files</td>"); - if(col_used[COL_MAX_size]) + if(col_used[COL_MAX_SIZE]) printf("<td>Max Size</td>"); - if(col_used[COL_MIN_size]) + if(col_used[COL_MIN_SIZE]) printf("<td>Min Size</td>"); if(col_used[COL_NUM_DIRS]) printf("<td>Num Dirs</td>"); - if(col_used[COL_FILE_CHUNK_size]) + if(col_used[COL_FILE_CHUNK_SIZE]) printf("<td>Chunk Size</td>"); heading("Create"); heading("Read"); heading("Delete"); heading("Create"); heading("Read"); heading("Delete"); @@ -430,7 +433,7 @@ "<td class=\"ksec\"><font size=-2>%% CPU</font></td>"; for(i = 0; i < 5; i++) { - printf(ksec_form, "K"); + printf(ksec_form, "M"); } printf(ksec_form, ""); printf("<td colspan=\"%d\"></td>", mid_width); @@ -484,8 +487,20 @@ void print_item(int num, int item, CPCCHAR extra) { PCCHAR line_data; + char buf[1024]; if(int(data[num].size()) > item) + { line_data = data[num][item]; + switch(item) + { + case COL_PUT_BLOCK: + case COL_REWRITE: + case COL_GET_BLOCK: + int tmp = (atoi(line_data) + 512) / 1024; + snprintf(buf, sizeof(buf), "%d", tmp); + line_data = buf; + } + } else line_data = ""; printf("<td"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_csv2txt new/bonnie++-1.98/bon_csv2txt --- old/bonnie++-1.97.3/bon_csv2txt 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/bon_csv2txt 2018-12-26 05:14:28.000000000 +0100 @@ -1,10 +1,14 @@ #!/usr/bin/perl +use strict; + +my @io; +my $iocount = 0; +my @file; +my $filecount = 0; { my $line; - $iocount = 0; - $filecount = 0; - while($line = <STDIN>) + while(my $line = <STDIN>) { while($line =~ /^name,/) { @@ -19,17 +23,17 @@ sub IOHeader { - my $version = '1.97'; + my $version = '1.98'; printf(STDOUT "Version %9s ------Sequential Output------ --Sequential Input- --Random-\n", $version); print " -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--\n"; -print "Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP\n"; +print "Name:Size etc /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP\n"; } sub FileHeader { print " ------Sequential Create------ --------Random Create--------\n"; print " -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--\n"; -print "files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP\n"; +print " files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP\n"; } sub process @@ -39,60 +43,57 @@ chomp($line); $line =~ s/\r//; my @arr = split(',', $line); - my $csv_version = '1.97'; + my $csv_version = '1.98'; if($arr[0] ne $csv_version) { - printf(STDERR "Can't process: %s\n", $line); + printf(STDERR "Expected %s, got %s from %s\n", $csv_version, $arr[0], $line); return; } my $name = $arr[2]; # merge size and chunk-size - my $tmp = $arr[5]; - if($arr[6] ne "") - { - $tmp .= ":" . $arr[6]; - } - $arr[6] = $tmp; + my $tmp = join(':', @arr[5 .. 8]); + $tmp =~ s/:*$//; + $arr[8] = $tmp; # $ioline contains the file-IO data, IE we strip off the data on file creation - my @ioline = @arr[6 .. 18]; + my @ioline = @arr[8 .. 20]; if(join('', @ioline) ne "") { $io[$iocount] = $name . "," . join(',', @ioline); - if($#arr > 37) + if($#arr > 39) { - $io[$iocount] .= "," . join(',', @arr[36..41]); + $io[$iocount] .= "," . join(',', @arr[38..43]); } $iocount++; } # merge num_files, max_size, min_size, num_dirs, and file_chunk_size - $tmp = $arr[19]; - if($arr[20] ne "") + $tmp = $arr[21]; + if($arr[22] ne "") { - $tmp .= ":" . $arr[20]; + $tmp .= ":" . $arr[22]; } - if($arr[21] ne "") + if($arr[23] ne "") { - $tmp .= ":" . $arr[21]; + $tmp .= ":" . $arr[23]; } - if($arr[22] ne "") + if($arr[24] ne "") { - $tmp .= "/" . $arr[22]; + $tmp .= "/" . $arr[24]; } - if($arr[23] ne "") + if($arr[25] ne "") { - $tmp .= ":" . $arr[23]; + $tmp .= ":" . $arr[25]; } - $arr[23] = $tmp; + $arr[25] = $tmp; # $fileline contains the file creation data - everything but $ioline - my @fileline = @arr[23 .. 35]; + my @fileline = @arr[25 .. 37]; if(join('', @fileline) ne "") { $file[$filecount] = $name . "," . join(',', @fileline); - if($#arr > 41) + if($#arr > 43) { - $file[$filecount] .= "," . join(',', @arr[42..$#arr]); + $file[$filecount] .= "," . join(',', @arr[44..$#arr]); } $filecount++; } @@ -102,14 +103,20 @@ { if($filecount < 1){ return; } FileHeader(); - for($i = 0; $i < $filecount; $i++) + for(my $i = 0; $i < $filecount; $i++) { - @arr = split(/,/,$file[$i]); + my @arr = split(/,/,$file[$i]); my $size = $arr[1]; - $size =~ s/:0:0:/\//; my $desc = $arr[0] . " "; - $desc = substr($desc, 0, 18 - length($size) ); - $desc .= " " . $size; + if(length($size) < 18) + { + $desc = substr($desc, 0, 18 - length($size) ); + $desc .= " " . $size; + } + else + { + $desc = $size; + } printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n" , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7] , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]); @@ -121,20 +128,50 @@ } } +sub convSpd +{ + my ($speed) = @_; + if($speed eq "") + { + return ""; + } + if($speed < 10000) + { + return sprintf("%4dk", $speed); + } + if($speed / 1024 < 1000) + { + my $tmp = $speed / 1024; + if($tmp < 100) + { + return sprintf("%4.1fm", $tmp); + } + return sprintf("%4dm", ($tmp + 0.5)); + } + return sprintf("%4.1fg", $speed / 1024 / 1024); +} + sub printIOData { if($iocount < 1){ return; } IOHeader(); - for($i = 0; $i < $iocount; $i++) + for(my $i = 0; $i < $iocount; $i++) { - @arr = split(/,/,$io[$i]); + my @arr = split(/,/,$io[$i]); my $size = $arr[1]; my $desc = $arr[0] . " "; - $desc = substr($desc, 0, 18 - length($size) ); - $desc .= " " . $size; + if(length($size) < 18) + { + $desc = substr($desc, 0, 18 - length($size) ); + $desc .= " " . $size; + } + else + { + $desc = $size; + } printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n" - , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7] - , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]); + , $desc, convSpd($arr[2]), $arr[3], convSpd($arr[4]), $arr[5], convSpd($arr[6]), $arr[7] + , convSpd($arr[8]), $arr[9], convSpd($arr[10]), $arr[11], $arr[12], $arr[13]); if($#arr > 13 && join("", @arr[14..$#arr]) ne "") { printf(STDOUT "Latency %9s %9s %9s %9s %9s %9s\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_csv2txt.in new/bonnie++-1.98/bon_csv2txt.in --- old/bonnie++-1.97.3/bon_csv2txt.in 2001-06-12 17:57:17.000000000 +0200 +++ new/bonnie++-1.98/bon_csv2txt.in 2018-12-26 05:12:51.000000000 +0100 @@ -1,10 +1,14 @@ #!/usr/bin/perl +use strict; + +my @io; +my $iocount = 0; +my @file; +my $filecount = 0; { my $line; - $iocount = 0; - $filecount = 0; - while($line = <STDIN>) + while(my $line = <STDIN>) { while($line =~ /^name,/) { @@ -22,14 +26,14 @@ my $version = '@version@'; printf(STDOUT "Version %9s ------Sequential Output------ --Sequential Input- --Random-\n", $version); print " -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--\n"; -print "Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP\n"; +print "Name:Size etc /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP\n"; } sub FileHeader { print " ------Sequential Create------ --------Random Create--------\n"; print " -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--\n"; -print "files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP\n"; +print " files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP\n"; } sub process @@ -42,57 +46,54 @@ my $csv_version = '@csv_version@'; if($arr[0] ne $csv_version) { - printf(STDERR "Can't process: %s\n", $line); + printf(STDERR "Expected %s, got %s from %s\n", $csv_version, $arr[0], $line); return; } my $name = $arr[2]; # merge size and chunk-size - my $tmp = $arr[5]; - if($arr[6] ne "") - { - $tmp .= ":" . $arr[6]; - } - $arr[6] = $tmp; + my $tmp = join(':', @arr[5 .. 8]); + $tmp =~ s/:*$//; + $arr[8] = $tmp; # $ioline contains the file-IO data, IE we strip off the data on file creation - my @ioline = @arr[6 .. 18]; + my @ioline = @arr[8 .. 20]; if(join('', @ioline) ne "") { $io[$iocount] = $name . "," . join(',', @ioline); - if($#arr > 37) + if($#arr > 39) { - $io[$iocount] .= "," . join(',', @arr[36..41]); + $io[$iocount] .= "," . join(',', @arr[38..43]); } $iocount++; } # merge num_files, max_size, min_size, num_dirs, and file_chunk_size - $tmp = $arr[19]; - if($arr[20] ne "") + $tmp = $arr[21]; + if($arr[22] ne "") { - $tmp .= ":" . $arr[20]; + $tmp .= ":" . $arr[22]; } - if($arr[21] ne "") + if($arr[23] ne "") { - $tmp .= ":" . $arr[21]; + $tmp .= ":" . $arr[23]; } - if($arr[22] ne "") + if($arr[24] ne "") { - $tmp .= "/" . $arr[22]; + $tmp .= "/" . $arr[24]; } - if($arr[23] ne "") + if($arr[25] ne "") { - $tmp .= ":" . $arr[23]; + $tmp .= ":" . $arr[25]; } - $arr[23] = $tmp; + $arr[25] = $tmp; # $fileline contains the file creation data - everything but $ioline - my @fileline = @arr[23 .. 35]; + my @fileline = @arr[25 .. 37]; if(join('', @fileline) ne "") { $file[$filecount] = $name . "," . join(',', @fileline); - if($#arr > 41) + if($#arr > 43) { - $file[$filecount] .= "," . join(',', @arr[42..$#arr]); + $file[$filecount] .= "," . join(',', @arr[44..$#arr]); } $filecount++; } @@ -102,14 +103,20 @@ { if($filecount < 1){ return; } FileHeader(); - for($i = 0; $i < $filecount; $i++) + for(my $i = 0; $i < $filecount; $i++) { - @arr = split(/,/,$file[$i]); + my @arr = split(/,/,$file[$i]); my $size = $arr[1]; - $size =~ s/:0:0:/\//; my $desc = $arr[0] . " "; - $desc = substr($desc, 0, 18 - length($size) ); - $desc .= " " . $size; + if(length($size) < 18) + { + $desc = substr($desc, 0, 18 - length($size) ); + $desc .= " " . $size; + } + else + { + $desc = $size; + } printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n" , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7] , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]); @@ -121,20 +128,50 @@ } } +sub convSpd +{ + my ($speed) = @_; + if($speed eq "") + { + return ""; + } + if($speed < 10000) + { + return sprintf("%4dk", $speed); + } + if($speed / 1024 < 1000) + { + my $tmp = $speed / 1024; + if($tmp < 100) + { + return sprintf("%4.1fm", $tmp); + } + return sprintf("%4dm", ($tmp + 0.5)); + } + return sprintf("%4.1fg", $speed / 1024 / 1024); +} + sub printIOData { if($iocount < 1){ return; } IOHeader(); - for($i = 0; $i < $iocount; $i++) + for(my $i = 0; $i < $iocount; $i++) { - @arr = split(/,/,$io[$i]); + my @arr = split(/,/,$io[$i]); my $size = $arr[1]; my $desc = $arr[0] . " "; - $desc = substr($desc, 0, 18 - length($size) ); - $desc .= " " . $size; + if(length($size) < 18) + { + $desc = substr($desc, 0, 18 - length($size) ); + $desc .= " " . $size; + } + else + { + $desc = $size; + } printf(STDOUT "%19s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s %5s %3s\n" - , $desc, $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7] - , $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13]); + , $desc, convSpd($arr[2]), $arr[3], convSpd($arr[4]), $arr[5], convSpd($arr[6]), $arr[7] + , convSpd($arr[8]), $arr[9], convSpd($arr[10]), $arr[11], $arr[12], $arr[13]); if($#arr > 13 && join("", @arr[14..$#arr]) ne "") { printf(STDOUT "Latency %9s %9s %9s %9s %9s %9s\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_io.cpp new/bonnie++-1.98/bon_io.cpp --- old/bonnie++-1.97.3/bon_io.cpp 2009-07-03 04:26:00.000000000 +0200 +++ new/bonnie++-1.98/bon_io.cpp 2018-09-13 15:07:36.000000000 +0200 @@ -96,9 +96,10 @@ return 0; } -int CFileOp::seek_test(Rand &r, bool quiet, Sync &s) +int CFileOp::seek_test(Rand &r, bool quiet, int Seeks, int SeekProcCount, Sync &s) { - int seek_tickets[SeekProcCount + Seeks]; + int message_count = SeekProcCount + Seeks; + int *seek_tickets = (int *)malloc(sizeof(int) * message_count); int next; for(next = 0; next < Seeks; next++) { @@ -118,7 +119,7 @@ if(s.decrement_and_wait(Lseek)) return 1; if(!quiet) fprintf(stderr, "start 'em..."); - if(Write(seek_tickets, sizeof(seek_tickets), 0) != int(sizeof(seek_tickets)) ) + if(Write(seek_tickets, sizeof(int) * message_count, 0) != (int)sizeof(int) * message_count) { fprintf(stderr, "Can't write tickets.\n"); return 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_io.h new/bonnie++-1.98/bon_io.h --- old/bonnie++-1.97.3/bon_io.h 2009-07-03 04:19:38.000000000 +0200 +++ new/bonnie++-1.98/bon_io.h 2018-09-13 15:07:36.000000000 +0200 @@ -23,7 +23,7 @@ int read_block(PVOID buf); int seek(int offset, int whence); int doseek(unsigned int where, bool update); - int seek_test(Rand &r, bool quiet, Sync &s); + int seek_test(Rand &r, bool quiet, int Seeks, int SeekProcCount, Sync &s); void Close(); // reopen a file, bool for whether the file should be unlink()'d and creat()'d int reopen(bool create); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_time.cpp new/bonnie++-1.98/bon_time.cpp --- old/bonnie++-1.97.3/bon_time.cpp 2012-11-23 08:22:33.000000000 +0100 +++ new/bonnie++-1.98/bon_time.cpp 2018-09-13 16:54:36.000000000 +0200 @@ -124,7 +124,31 @@ else { if(m_type == txt) - fprintf(m_fp, " %5d", int(stat)); + { + if(test < Lseek) + { + if(stat < 10000.0) + { + fprintf(m_fp, " %4dk", (int)stat); + } + else if(stat / 1024.0 < 1000.0) + { + stat = stat / 1024.0; + if(stat < 100.0) + fprintf(m_fp, " %4.1fm", stat); + else + fprintf(m_fp, " %4dm", (int)(stat + 0.5)); + } + else + { + fprintf(m_fp, " %4.1fg", stat / 1024.0 / 1024.0); + } + } + else + { + fprintf(m_fp, " %5d", stat); + } + } else fprintf(m_fp, ",%d", int(stat)); } @@ -211,7 +235,7 @@ int BonTimer::DoReportIO(int file_size, int char_file_size - , int io_chunk_size, FILE *fp) + , int io_chunk_size, int Seeks, int SeekProcCount, FILE *fp) { int i; m_fp = fp; @@ -226,26 +250,54 @@ fprintf(m_fp, "Version %5s ", BON_VERSION); fprintf(m_fp, "------Sequential Output------ --Sequential Input- --Random-\n"); - fprintf(m_fp, "Concurrency %3d ", m_concurrency); + fprintf(m_fp, " "); fprintf(m_fp, "-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--\n"); - if(io_chunk_size == DefaultChunkSize) - fprintf(m_fp, "Machine Size "); - else - fprintf(m_fp, "Machine Size:chnk "); - fprintf(m_fp, "K/sec %%CP K/sec %%CP K/sec %%CP K/sec %%CP K/sec "); + fprintf(m_fp, "Name:Size etc "); + fprintf(m_fp, " /sec %%CP /sec %%CP /sec %%CP /sec %%CP /sec "); fprintf(m_fp, "%%CP /sec %%CP\n"); } char size_buf[1024]; print_size(size_buf, file_size, "MG"); char *tmp = size_buf + strlen(size_buf); - if(io_chunk_size != DefaultChunkSize) + if(m_type == txt) { strcat(tmp, separator); - tmp += strlen(tmp); - print_size(tmp, io_chunk_size, " km"); + tmp++; + if(io_chunk_size != DefaultChunkSize) + { + print_size(tmp, io_chunk_size, " km"); + tmp += strlen(tmp); + } + strcat(tmp, separator); + tmp++; + if(m_concurrency != 1) + { + sprintf(tmp, "%d", m_concurrency); + tmp += strlen(tmp); + } + strcat(tmp, separator); + tmp++; + if(Seeks != DefaultSeeks) + { + sprintf(tmp, "%d", Seeks); + tmp += strlen(tmp); + } + strcat(tmp, separator); + tmp++; + if(SeekProcCount != DefaultSeekProcCount) + { + sprintf(tmp, "%d", SeekProcCount); + tmp += strlen(tmp) - 1; + } + tmp--; + while(*tmp == separator[0] && tmp > size_buf) + { + *tmp = 0; + tmp--; + } } - else if(m_type == csv) + else { strcat(tmp, separator); tmp += strlen(tmp); @@ -264,16 +316,25 @@ // set cur to point to a byte past where we end the machine name // size of the buf - size of the new data - 1 for the space - 1 for the // terminating zero on the string - char *cur = &buf[txt_machine_size - strlen(size_buf) - 2]; - *cur = ' '; // make cur a space - cur++; // increment to where we store the size + char *cur; + int offset = txt_machine_size - strlen(size_buf) - 2; + if(offset < 0) + { + cur = buf; + } + else + { + cur = &buf[offset]; + *cur = ' '; // make cur a space + cur++; // increment to where we store the size + } strcpy(cur, size_buf); // copy the size in fputs(buf, m_fp); } else { - printf(CSV_VERSION "," BON_VERSION ",%s,%d,%s,%s", m_name - , m_concurrency, random_source.getSeed().c_str(), size_buf); + printf(CSV_VERSION "," BON_VERSION ",%s,%d,%s,%s,%d,%d", m_name + , m_concurrency, random_source.getSeed().c_str(), size_buf, Seeks, SeekProcCount); } for(i = ByteWrite; i < Lseek; i++) { @@ -293,7 +354,7 @@ } else if(m_type == csv) { - fprintf(m_fp, CSV_VERSION "," BON_VERSION ",%s,%d,%s,,,,,,,,,,,,,,", m_name + fprintf(m_fp, CSV_VERSION "," BON_VERSION ",%s,%d,%s,,,,,,,,,,,,,,,,", m_name , m_concurrency, random_source.getSeed().c_str()); } return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bon_time.h new/bonnie++-1.98/bon_time.h --- old/bonnie++-1.97.3/bon_time.h 2008-12-23 23:30:27.000000000 +0100 +++ new/bonnie++-1.98/bon_time.h 2018-09-13 15:07:36.000000000 +0200 @@ -33,7 +33,7 @@ void stop_and_record(tests_t test); void add_delta_report(report_s &rep, tests_t test); int DoReportIO(int file_size, int char_file_size - , int io_chunk_size, FILE *fp); + , int io_chunk_size, int Seeks, int SeekProcCount, FILE *fp); int DoReportFile(int directory_size , int max_size, int min_size, int num_directories , int file_chunk_size, FILE *fp); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bonnie++.8 new/bonnie++-1.98/bonnie++.8 --- old/bonnie++-1.97.3/bonnie++.8 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/bonnie++.8 2018-09-13 15:07:36.000000000 +0200 @@ -4,7 +4,7 @@ .SH "SYNOPSIS" .B bonnie++ -.I [\-d dir] [\-c concurrency] [\-s size(MiB)[:chunk\-size(b)]] +.I [\-d dir] [\-c concurrency] [\-s size(MiB)[:chunk\-size(b)[:seeks[:seekers]]]] .I [\-n number\-to\-stat(*1024)[:max\-size[:min\-size][:num\-directories[:chunk\-size]]]] .I [\-m machine\-name] [\-r ram\-size\-in\-MiB] [\-x number\-of\-tests] .I [\-u uid\-to\-use:gid\-to\-use] [\-g gid\-to\-use] @@ -53,7 +53,9 @@ seperated from the size by a colon. The chunk\-size is measured in bytes and must be a power of two from 256 to 1048576, the default is 8192. NB You can specify the size in giga\-bytes or the chunk\-size in kilo\-bytes if you add -\f3g\f1 or \f3k\f1 to the end of the number respectively. +\f3g\f1 or \f3k\f1 to the end of the number respectively. This parameter may +also include the number of seeks (default 8192) and the number of seeker +processes (default 5). If the specified size is 0 then this test will be skipped. .TP @@ -198,6 +200,9 @@ .B bon_csv2txt to convert CSV data to HTML and plain\-ascii respectively. .P +The "Name:Size etc" field has the name, filesize, IO chunk size, concurrency, +number of seeks, and number of seek processes separated by : characters. +.P For every test two numbers are reported, the amount of work done (higher numbers are better) and the percentage of CPU time taken to perform the work (lower numbers are better). If a test completes in less than 500ms then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bonnie++.cpp new/bonnie++-1.98/bonnie++.cpp --- old/bonnie++-1.97.3/bonnie++.cpp 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/bonnie++.cpp 2018-09-16 03:13:24.000000000 +0200 @@ -67,6 +67,8 @@ bool bufSync; int io_chunk_bits; int file_chunk_bits; + int file_seeks; + int file_seek_procs; int io_chunk_size() const { return m_io_chunk_size; } int file_chunk_size() const { return m_file_chunk_size; } bool *doExit; @@ -132,6 +134,8 @@ , bufSync(false) , io_chunk_bits(DefaultChunkBits) , file_chunk_bits(DefaultChunkBits) + , file_seeks(DefaultSeeks) + , file_seek_procs(DefaultSeekProcCount) , doExit(exitFlag) , m_io_chunk_size(DefaultChunkSize) , m_file_chunk_size(DefaultChunkSize) @@ -299,11 +303,21 @@ #else file_size = size_from_str(size, "g"); #endif - size = strtok(NULL, ""); - if(size) + char * chunk_size = strtok(NULL, ":"); + if(chunk_size) { - int tmp = size_from_str(size, "k"); - globals.set_io_chunk_size(tmp); + char *seeks, *seek_procs; + seeks = strtok(NULL, ":"); + globals.set_io_chunk_size(size_from_str(chunk_size, "k")); + if(seeks) + { + seek_procs = strtok(NULL, ""); + globals.file_seeks = size_from_str(seeks, "k"); + if(seek_procs) + { + globals.file_seek_procs = size_from_str(seek_procs, NULL); + } + } } setSize = true; free(sbuf); @@ -503,7 +517,7 @@ { globals.timer.SetType(BonTimer::txt); rc = globals.timer.DoReportIO(file_size, globals.byte_io_size - , globals.io_chunk_size(), globals.quiet ? stderr : stdout); + , globals.io_chunk_size(), globals.file_seeks, globals.file_seek_procs, globals.quiet ? stderr : stdout); rc |= globals.timer.DoReportFile(directory_size , directory_max_size, directory_min_size, num_directories , globals.file_chunk_size() @@ -512,7 +526,7 @@ // print a csv version in every case globals.timer.SetType(BonTimer::csv); rc = globals.timer.DoReportIO(file_size, globals.byte_io_size - , globals.io_chunk_size(), stdout); + , globals.io_chunk_size(), globals.file_seeks, globals.file_seek_procs, stdout); rc |= globals.timer.DoReportFile(directory_size , directory_max_size, directory_min_size, num_directories , globals.file_chunk_size(), stdout); @@ -690,7 +704,7 @@ if(!globals.quiet) fprintf(stderr, "done\n"); globals.timer.start(); - if(file.seek_test(globals.timer.random_source, globals.quiet, *globals.syn)) + if(file.seek_test(globals.timer.random_source, globals.quiet, globals.file_seeks, globals.file_seek_procs, *globals.syn)) return 1; /* @@ -727,7 +741,7 @@ // then the storage of file names will take more than half RAM and there // won't be enough RAM to have Bonnie++ paged in and to have a reasonable // meta-data cache. - if(globals.ram && directory_size * MaxDataPerFile * 2 > int((globals.ram << 10))) + if(globals.ram && directory_size * MaxDataPerFile * 2 > (unsigned int)((globals.ram << 10))) { fprintf(stderr , "When testing %dK of files in %d MiB of RAM the system is likely to\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bonnie++.spec new/bonnie++-1.98/bonnie++.spec --- old/bonnie++-1.97.3/bonnie++.spec 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/bonnie++.spec 2018-12-26 05:14:28.000000000 +0100 @@ -1,6 +1,6 @@ Summary: A program for benchmarking hard drives and filesystems Name: bonnie++ -Version: 1.97 +Version: 1.98 Release: 1 Copyright: GPL Group: Utilities/Benchmarking diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bonnie.h new/bonnie++-1.98/bonnie.h --- old/bonnie++-1.97.3/bonnie.h 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/bonnie.h 2018-12-26 05:14:28.000000000 +0100 @@ -3,8 +3,8 @@ using namespace std; -#define BON_VERSION "1.97" -#define CSV_VERSION "1.97" +#define BON_VERSION "1.98" +#define CSV_VERSION "1.98" #include "port.h" #include <stdio.h> @@ -23,9 +23,9 @@ // the name and pointer to file name #define MaxDataPerFile (MaxNameLen + 6 + 1 + sizeof(void *)) #define MinTime (0.5) -#define Seeks (8192) +#define DefaultSeeks (8192) #define UpdateSeek (10) -#define SeekProcCount (5) +#define DefaultSeekProcCount (5) #define DefaultChunkBits (13) #define DefaultChunkSize (1 << DefaultChunkBits) #define UnitBits (20) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/bonnie.h.in new/bonnie++-1.98/bonnie.h.in --- old/bonnie++-1.97.3/bonnie.h.in 2009-07-03 05:39:33.000000000 +0200 +++ new/bonnie++-1.98/bonnie.h.in 2018-09-13 15:07:36.000000000 +0200 @@ -23,9 +23,9 @@ // the name and pointer to file name #define MaxDataPerFile (MaxNameLen + 6 + 1 + sizeof(void *)) #define MinTime (0.5) -#define Seeks (8192) +#define DefaultSeeks (8192) #define UpdateSeek (10) -#define SeekProcCount (5) +#define DefaultSeekProcCount (5) #define DefaultChunkBits (13) #define DefaultChunkSize (1 << DefaultChunkBits) #define UnitBits (20) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/configure.in new/bonnie++-1.98/configure.in --- old/bonnie++-1.97.3/configure.in 2011-01-18 22:35:28.000000000 +0100 +++ new/bonnie++-1.98/configure.in 2018-09-13 15:07:36.000000000 +0200 @@ -2,9 +2,9 @@ AC_INIT(bonnie++.cpp) AC_CONFIG_HEADER(conf.h) AC_SUBST(version) -version="1.97" +version="1.98" AC_SUBST(csv_version) -csv_version="1.97" +csv_version="1.98" AC_ARG_ENABLE(stripping, [ --disable-stripping disables stripping of installed binaries], @@ -22,7 +22,7 @@ AC_SUBST(debug) AC_ARG_ENABLE(debug, - [ --with-debug enables debug code generation for binaries], + [ --enable-debug enables debug code generation for binaries], debug=-g, debug="") echo $DEB_BUILD_OPTIONS | grep -q debug if [[ "$?" = "0" ]]; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/debian/changelog new/bonnie++-1.98/debian/changelog --- old/bonnie++-1.97.3/debian/changelog 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/debian/changelog 2018-12-26 05:14:28.000000000 +0100 @@ -1,3 +1,19 @@ +bonnie++ (1.98) unstable; urgency=medium + + * Fixed macros in bon_csv2html.cpp that had lower case due to excessive + matching on a regex. + * Changed debian/compat to level 10 + * Allow specifying the number of random seeks and the number of seeker + processes and store that in the CSV. + * Changed bon_csv2html and bon_csv2txt to take the new CSV format. + * Changed the text output to use KiB/MiB/GiB as units of measurement so we + can fit NVMe results on screen. + * Changed the HTML to be in MiB/s for the bulk IO tests. + * Changed the default size for getc_putc to work with faster CPUs and more + optimised libc. + + -- Russell Coker <[email protected]> Wed, 26 Dec 2018 15:14:28 +1100 + bonnie++ (1.97.3) unstable; urgency=medium * In bonnie++.8 documented -c option. Closes: #639452 #631484 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/debian/compat new/bonnie++-1.98/debian/compat --- old/bonnie++-1.97.3/debian/compat 2016-06-30 11:21:46.000000000 +0200 +++ new/bonnie++-1.98/debian/compat 2017-09-09 11:46:19.000000000 +0200 @@ -1 +1 @@ -9 +10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/debian/control new/bonnie++-1.98/debian/control --- old/bonnie++-1.97.3/debian/control 2016-06-30 11:28:22.000000000 +0200 +++ new/bonnie++-1.98/debian/control 2017-09-09 11:46:50.000000000 +0200 @@ -3,7 +3,7 @@ Priority: optional Maintainer: Russell Coker <[email protected]> Standards-Version: 3.5.6 -Build-Depends: debhelper (>= 9) +Build-Depends: debhelper (>= 10) XS-Testsuite: autopkgtest Package: bonnie++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/getc_putc.8 new/bonnie++-1.98/getc_putc.8 --- old/bonnie++-1.97.3/getc_putc.8 2008-07-23 03:02:40.000000000 +0200 +++ new/bonnie++-1.98/getc_putc.8 2018-09-15 09:00:31.000000000 +0200 @@ -35,9 +35,9 @@ the size of the file for byte IO performance measured in kilobytes. NB You can specify the size in mega\-bytes if you add 'm' to the end of the number. -The default for this test is to test with a 40MiB file. Of the file only 1/32 +The default for this test is to test with a 512MiB file. Of the file only 1/64 of it will be used for write() and read() system calls (anything else takes -too long), and only 1/4 of it will be used for locked getc() and putc(). +too long). .TP .B \-m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/getc_putc.cpp new/bonnie++-1.98/getc_putc.cpp --- old/bonnie++-1.97.3/getc_putc.cpp 2009-07-03 04:26:02.000000000 +0200 +++ new/bonnie++-1.98/getc_putc.cpp 2018-09-15 09:00:31.000000000 +0200 @@ -34,12 +34,11 @@ static void print_stat(FILE *fp, double elapsed, int test_size, bool csv); static void print_all_res(CPCCHAR machine, FILE *fp, double *res, int size, bool csv); -#define WRITE_SIZE_FACT 32 -#define GETC_SIZE_FACT 4 +#define WRITE_SIZE_FACT 64 int main(int argc, char *argv[]) { - int file_size = 40 << 10; + int file_size = 512 << 10; PCCHAR dir = "."; bool quiet = false; char *userName = NULL, *groupName = NULL; @@ -199,7 +198,7 @@ return 1; } fflush(NULL); - size = file_size / GETC_SIZE_FACT; + size = file_size; TEST_FUNC_WRITE("putc(c, fp)", if(putc(c, fp) == EOF), res[Putc]); if(fseek(fp, 0, SEEK_SET) != 0) { @@ -250,8 +249,8 @@ print_stat(fp, res[Read], size / WRITE_SIZE_FACT, csv); print_stat(fp, res[PutcNoTh], size, csv); print_stat(fp, res[GetcNoTh], size, csv); - print_stat(fp, res[Putc], size / GETC_SIZE_FACT, csv); - print_stat(fp, res[Getc], size / GETC_SIZE_FACT, csv); + print_stat(fp, res[Putc], size, csv); + print_stat(fp, res[Getc], size, csv); print_stat(fp, res[PutcUnlocked], size, csv); print_stat(fp, res[GetcUnlocked], size, csv); fprintf(fp, "\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/bonnie++-1.97.3/sun/pkginfo new/bonnie++-1.98/sun/pkginfo --- old/bonnie++-1.97.3/sun/pkginfo 2016-12-13 03:37:51.000000000 +0100 +++ new/bonnie++-1.98/sun/pkginfo 2018-12-26 05:14:28.000000000 +0100 @@ -1,6 +1,6 @@ PKG=bonnie++ ARCH=sparc -VERSION=1.97 +VERSION=1.98 CATEGORY=application NAME=Bonnie++ DESC=Hard drive benchmark suite
