⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tiosum.pl

📁 Linux Distributed Replication Block Device
💻 PL
字号:
#!/usr/bin/perl -w#    Author: Randy Hron <rwhron (at) earthlink dot net>#       This software may be used and distributed according to the terms of#       the GNU General Public License, http://www.gnu.org/copyleft/gpl.html# #     Summarize output of tiobench2.pl for multiple kernels/runs.#       Assumes logfiles created with: #       ./tiobench2.pl > tiobench-`uname -r` 2> tiobench-`uname -r`.erruse strict;$|++;# these keywords in tiobench.pl logfile determine "field"# Sequential Reads# Random Reads# Sequential Writes# Random Writesmy $field = 'none';my $file;# each "paydirt" line has these fields.my ($kver, $size, $block, $thread, $rate, $cpu, $avg_lat, $max_lat, $lat_gt_2, $lat_gt_10, $cpu_eff);my (%kver, %size, %block, %thread, %rate, %cpu, %avg_lat, %max_lat, %lat_gt_2, %lat_gt_10, %cpu_eff);# read in tiobench.pl output filesopendir(DIR, ".") or die $!;while ($file = (readdir(DIR))) {	# convention is logs are called tiobench-`uname -r`	next unless $file =~ /tiobench-.*/o;	next if $file =~ /.err$/o;	open(FILE, $file) or die $!;	while (<FILE>) {		next if /^$/o;		next if /---------/o;		next if /Kernel|Maximum/o;	# headers		next if /^File|^Read|^Latency|^Percent/o;		# old logfile format		next if /^ /o;		if (/Sequential Reads/o) {			$field = 'read';			next;		} elsif (/Random Reads/o) {			$field = 'rread';			next;		} elsif (/Sequential Writes/o) {			$field = 'write';			next;		} elsif (/Random Writes/o) {			$field = 'rwrite';			next;		} 		next if $field eq 'none';		($kver, $size, $block, $thread, $rate, $cpu, $avg_lat, 		$max_lat, $lat_gt_2, $lat_gt_10, $cpu_eff) = split;		# track versions, etc for later looping		next unless $kver;		$kver{$kver}		= $kver;		$block{$block}		= $block;		$thread{$thread}	= $thread;		$size{$size}		= $size;		# fields		$cpu =~ s/%//o;		$rate{$kver}{$thread}{$size}{$block}{$field}		= $rate;		$cpu{$kver}{$thread}{$size}{$block}{$field}		= $cpu;		$avg_lat{$kver}{$thread}{$size}{$block}{$field}		= $avg_lat;		$max_lat{$kver}{$thread}{$size}{$block}{$field}		= $max_lat;		$lat_gt_2{$kver}{$thread}{$size}{$block}{$field}	= $lat_gt_2;		$lat_gt_10{$kver}{$thread}{$size}{$block}{$field}	= $lat_gt_10;		$cpu_eff{$kver}{$thread}{$size}{$block}{$field}		= $cpu_eff;	}}my $header = "                              File  Blk   Num                    Avg       Maximum     Lat%     Lat%    CPUKernel                        Size  Size  Thr   Rate  (CPU%)   Latency     Latency      >2s     >10s    Eff---------------------------- ------ ----- ---  ------------------------------------------------------------";format REPORT = @<<<<<<<<<<<<<<<<<<<<<<<<<<< @||||| @|||| @##  @##.## @#.##% @####.### @#######.## @#.##### @#.##### @#####$kver, $size{$size}, $block{$block}, $thread{$thread}, $rate{$kver}{$thread}{$size}{$block}{$field}, $cpu{$kver}{$thread}{$size}{$block}{$field}, $avg_lat{$kver}{$thread}{$size}{$block}{$field}, $max_lat{$kver}{$thread}{$size}{$block}{$field}, $lat_gt_2{$kver}{$thread}{$size}{$block}{$field}, $lat_gt_10{$kver}{$thread}{$size}{$block}{$field}, $cpu_eff{$kver}{$thread}{$size}{$block}{$field}.# print summaryprint "File size in megabytes, Blk Size in bytes. Read, write, and seek rates in MB/sec. Latency in milliseconds.Percent of requests that took longer than 2 and 10 seconds.";my %report;$report{'read'}		= "Sequential Reads";$report{'rread'}	= "Random Reads";$report{'write'}	= "Sequential Writes";$report{'rwrite'}	= "Random Writes";$-=0; $~='REPORT'; $^L=''; # reporting variablesmy ($a, $b);foreach $field ('read', 'rread', 'write', 'rwrite') {	print "\n", $report{$field};	print $header;	foreach $block (sort keys %block) {		foreach $size (sort keys %size) {			#foreach $thread (keys %thread) {			foreach $thread (8, 16, 32, 64, 128) {				foreach $kver (sort keys %kver) {					next unless $rate{$kver}{$thread}{$size}{$block}{$field};					write;				}			}		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -