Benchmarks - 1.3.14

Carlo Emilio Prelz (fluido@telepac.pt)
Wed, 2 Aug 1995 09:25:26 +0200 (MET DST)


Hi. Late for the comparisons for this release. Many reasons. The most
important is that I found the REAL filesystem benchmark bug, the one
that caused the disk full message.

The program first writes (and rewrites) a file with a total size of
2.048.000 bytes. Then, it tests read performance by rereading the same
file, and it tests copy performance by copying & recopying the
previously written file to a second file.

Well, in read & copy, it goes on reading the (previously written)
file, and at each read block it tests if the alarm call (end of
benchmark time) was received. In the case the end of the read file was
reached, the program was supposed to rewind it & start over
again. Well, the error loop is entered only if read() returns -1,
while (as the read() man page clearly specifies) read returns 0 if the
end-of-file is reached. Is that THE STANDARD (tm) ?

The result is that, in the read test, once the end of file was
reached, the test went on happily reading 0 characters at the end of
file until the end. In the copy test, since the reading operation
never failed, the program went on happily appending blocks to the end
of file. In the 10-second test, my ~25MB were enough. In the 30-second
test, the disk got full.

Well, as you may well understand, past results for file read/copy are
invalid, and I am deleting them from the past log files, both in my
archive and in the WWW archive. Hope you won't mind. PS, you can find
the kernel comparison WWW page at:

http://neon.ingenia.com/cgi-bin/bm-request

In the near future, I may find the courage to reboot with 1.2.10 and
run the correct file tests so as to include them in the reference log
file.

Here is the diff for the fstime.c program. The past (alarm) bug
difference is also included:

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

--- fstime.old
+++ fstime.c
@@ -146,7 +146,7 @@
alarm(seconds);
while(!sigalarm)
{
- if (read(f, buf, BUFF_SIZE) < 0) /* read while checking for an error */
+ if (read(f, buf, BUFF_SIZE) != BUFF_SIZE) /* read while checking for an error */
switch(errno)
{
case 0:
@@ -189,7 +189,7 @@
alarm(seconds);
while(!sigalarm)
{
- if (read(f, buf, BUFF_SIZE) < 0)
+ if (read(f, buf, BUFF_SIZE) != BUFF_SIZE)
switch(errno)
{
case 0:
@@ -226,6 +226,7 @@
{
extern int sigalarm;
sigalarm = 1;
+alarm(0);
return(0);
}

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

And here are the benchmarks.

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

From:
* Linux pimpinel.fluido.org 1.3.13 #25 Thu Jul 27 20:36:51 MET DST 1995 i486
* Thu Jul 27 21:03:47 MET DST 1995

To:
* Linux pimpinel.fluido.org 1.3.14 #27 Mon Jul 31 20:44:57 MET DST 1995 i486
* Mon Jul 31 23:24:20 MET DST 1995

File Copy (10 seconds) - Found only in [To]
File Copy (30 seconds) - Found only in [To]
File Read (10 seconds) - Found only in [To]
File Read (30 seconds) - Found only in [To]
*******
Results
*******

Pipe-based Context Switching Test || 9270.9 -> 9878.0 +6.55%
File Write (30 seconds) || 9106.0 -> 9536.0 +4.72%
Process Creation Test || 125.8 -> 129.5 +2.94%
Pipe Throughput Test || 18048.2 -> 18444.4 +2.20%
Recursion Test--Tower of Hanoi || 723.6 -> 724.3 +0.10%
Arithmetic Test (type = arithoh) || 127045.0 -> 127054.2 +0.01%
Arithmetic Test (type = double) || 5062.4 -> 5062.4 +0.00%
C Compiler Test || 45.5 -> 45.5 +0.00%
Shell scripts (8 concurrent) || 11.0 -> 11.0 +0.00%
Arithmetic Test (type = int) || 8362.3 -> 8362.2 -0.00%
Arithmetic Test (type = register) || 8363.3 -> 8363.1 -0.00%
Arithmetic Test (type = float) || 5062.7 -> 5062.3 -0.01%
Arithmetic Test (type = long) || 8363.7 -> 8362.6 -0.01%
Arithmetic Test (type = short) || 7503.4 -> 7501.7 -0.02%
Dhrystone 2 using register variables || 49717.4 -> 49670.0 -0.10%
Shell scripts (1 concurrent) || 85.5 -> 85.2 -0.35%
Shell scripts (2 concurrent) || 45.0 -> 44.7 -0.67%
Dhrystone 2 without register variables || 49419.0 -> 48929.8 -0.99%
System Call Overhead Test || 30652.7 -> 30284.0 -1.20%
Shell scripts (4 concurrent) || 23.0 -> 22.6 -1.74%
File Write (10 seconds) || 9170.0 -> 8940.0 -2.51%
Execl Throughput Test || 64.9 -> 63.1 -2.77%
Dc: sqrt(2) to 99 decimal places || 5770.2 -> 5570.4 -3.46%

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

From:
* Linux pimpinel.fluido.org 1.2.10 #59 Tue Jun 13 09:46:17 MET DST 1995 i486
* Tue Jun 27 10:18:13 MET DST 1995

To:
* Linux pimpinel.fluido.org 1.3.14 #27 Mon Jul 31 20:44:57 MET DST 1995 i486
* Mon Jul 31 23:24:20 MET DST 1995

File Copy (10 seconds) - Found only in [To]
File Copy (30 seconds) - Found only in [To]
File Read (10 seconds) - Found only in [To]
File Read (30 seconds) - Found only in [To]
*******
Results
*******

Pipe-based Context Switching Test || 3446.9 -> 9878.0 +186.58%
Execl Throughput Test || 51.6 -> 63.1 +22.29%
File Write (10 seconds) || 8100.0 -> 8940.0 +10.37%
Shell scripts (8 concurrent) || 10.0 -> 11.0 +10.00%
Shell scripts (2 concurrent) || 41.0 -> 44.7 +9.02%
Shell scripts (1 concurrent) || 78.3 -> 85.2 +8.81%
Process Creation Test || 119.9 -> 129.5 +8.01%
C Compiler Test || 42.2 -> 45.5 +7.82%
Shell scripts (4 concurrent) || 21.0 -> 22.6 +7.62%
File Write (30 seconds) || 8911.0 -> 9536.0 +7.01%
Dhrystone 2 without register variables || 46284.2 -> 48929.8 +5.72%
System Call Overhead Test || 29238.2 -> 30284.0 +3.58%
Recursion Test--Tower of Hanoi || 709.2 -> 724.3 +2.13%
Arithmetic Test (type = float) || 5055.6 -> 5062.3 +0.13%
Arithmetic Test (type = register) || 8353.2 -> 8363.1 +0.12%
Arithmetic Test (type = double) || 5056.8 -> 5062.4 +0.11%
Arithmetic Test (type = arithoh) || 126914.4 -> 127054.2 +0.11%
Arithmetic Test (type = long) || 8353.5 -> 8362.6 +0.11%
Arithmetic Test (type = int) || 8353.4 -> 8362.2 +0.11%
Arithmetic Test (type = short) || 7496.0 -> 7501.7 +0.08%
Dhrystone 2 using register variables || 49802.4 -> 49670.0 -0.27%
Pipe Throughput Test || 18512.0 -> 18444.4 -0.37%
Dc: sqrt(2) to 99 decimal places || 5906.2 -> 5570.4 -5.69%

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

Still no standard deviation. Sorry. I am in the process of installing
my first Internet dedicated-line server 8-) and I am a bit busy!

Enjoy!
Carlo

--
  *                                          ...Ma appena fuori tutto e' gomma,
* K * Carlo E. Prelz - fluido@telepac.pt      tutto e' cicca impiastricciata...
  *                                     (Marco Zappa-Niente cicca nella scuola)