Alasir Enterprises
Main Page >  Software >  RAMspeed  

 
Main Page
 
 
Reviews
 
Articles
 
Software
 
Reference
 
Motley
 
 
About Us
 
 
RAMspeed,
a cache and memory benchmarking tool
 
Project released: November, 2002
Project status: active

Time flies. RAMspeed, a free open source command line utility to measure cache and memory performance of computer systems, changes as well. It has evolved successfully from v1.00 released in November of 2002 as a result of Rhett's personal amusement containing about 100 lines of C code to produce one simple benchmark, to the latest versions written in assembly language mostly. There are 3 hardware platforms supported (i386, amd64, alpha) and several most popular UNIX-like operating systems. A quite popular DOS (and Windows) version exists as well. Nowadays, the software offers 18 cache and memory benchmarks for i386 and amd64 machines, though 6 only for alpha ones.
 
So far, RAMspeed has been tested to compile and run with assembly level optimisations on:
  • Linux (i386, amd64, alpha)
  • FreeBSD (i386, amd64, alpha)
  • NetBSD (i386, amd64, alpha)
  • Digital UNIX (alpha)

No need to explain here in depth all the benchmarking algorithms implemented in RAMspeed, better look at the documentation supplied and the source code. In general, there are *mark benchmarks such as INTmark, FLOATmark, MMXmark and SSEmark. They operate with linear (sequential) data streams passed through ALU, FPU, MMX and SSE units respectively. They allocate certain memory space and start either writing to or reading from it using continuous blocks sized in power of 2 from 1Kb up to the array boundary. This simple algorithm allows to show how fast are both cache and memory subsystems. There are also *mem benchmarks such as INTmem, FLOATmem, MMXmem and SSEmem. These are supposed to illustrate how fast is actual read\write memory performance. Each of them includes four subtests called Copy, Scale, Add and Triad. They're synthetic simulations, but correlate with many real world applications. You may have seen them already within STREAM and SiSoft Sandra. All *mem benchmarks support the BatchRun mode to enable high-precision memory performance measurement through multiple passes with averages calculated per pass and per run.
 
There are also non-temporal versions of MMX and SSE benchmarks. They have been coded with special instructions to minimise cache pollution on memory reads and to eliminate it completely on memory writes. In addition, they operate with a built in aggressive data prefetching algorithm, though actual behaviour is hardware dependent very much. In a matter of fact, use of non-temporal code allows for significant performance improvements over regular MMX and SSE benchmarks. In some cases, non-temporal MMXmark and SSEmark can deliver almost 100% of theoretical bandwidth while reading.
 
There is also RAMspeed/SMP for multiprocessor machines running UNIX-like operating systems. To be absolutely correct, there are two distinct branches: 2.x.x features support for POSIX threads, and 3.x.x utilises System V shared memory for IPC (Inter-Process Communication) and operates with multiple processes. RAMspeed/SMP v2.x.x is developed no longer due to numerous compatibility and performance issues.
 
Here are several screen-shots to illustrate RAMspeed (FreeBSD) v2.5.0 in action (from 6Kb to 11Kb in size each):
 
Introduction
Additional Information (CPUinfo)
INTmark [writing]
INTmark [reading]
INTmem
 
RAMspeed is more accurate than many other benchmarking tools, more customisable, open source, compact, and gives you much more information to analyse. Some people may say that the lack of some graphical interface is a large drawback, but it may be considered as an advantage as well.
 
RAMspeed (UNIX) v2.6.0 (August, 2009) — for uniprocessor machines running UNIX-like operating systems. The source code is available for download (76Kb).
 
RAMspeed/SMP (UNIX) v3.5.0 (August, 2009) — for multiprocessor machines running UNIX-like operating systems and supporting System V IPC extensions. The source code is available for download (78Kb).
 
RAMspeed (DOS) v2.5.0 (August, 2009) — for DOS as well as 32-bit Windows operating systems (95 to 2003; i386 only). Both the source code and a pre-compiled executable are available for download (109Kb).
 
RAMspeed (Win32) v1.1.1 (August, 2009) — for 32-bit as well as 64-bit Windows operating systems (95 to 7; i386 or amd64). Both the source code and a pre-compiled executable are available for download (71Kb).
 
All of them are distributed under the terms of The Alasir Licence (TAL), a liberal fairly one.

There are new and old benchmark results below. The oldest of them were taken several years ago. Although still of some use, they're phased out continuously in favour of new results in the new format which is better readable than old good plain text. Click on a system description for a complete performance report.
 
The colour bars and figures below represent actual performance shown by particular systems: RED stands for INTmem, GREEN — for FLOATmem, BLUE — for MMXmem, VIOLET — for SSEmem. Non-temporal MMXmem and SSEmem are shown in CYAN and MAGENTA respectively. Most machines listed below were running either FreeBSD or NetBSD — because they deliver very good performance, because they run on a wide range of computer hardware, because there is no need to pay for them, and because they are just very good operating systems.
 
Memory timings shown are CAS latency (tCAS), RAS-to-CAS delay (tRCD) and row precharge time (tRP). If unknown, question marks are. Other timings are not important as much, though set usually to the most optimal values for a memory type given.
 
New Results
RED
6580
GREEN
7420
BLUE
7550
CYAN
13100
VIOLET
7840
MAGENTA
12660
RED
4410
GREEN
4870
BLUE
4780
CYAN
8600
VIOLET
5180
MAGENTA
8330
RED
3930
GREEN
3940
BLUE
3930
CYAN
5580
VIOLET
4050
MAGENTA
5660
RED
360
GREEN
370
BLUE
370
CYAN
650
VIOLET
400
MAGENTA
650
 
Old Results
RED
8040
GREEN
8490
BLUE
8490
CYAN
 11470
VIOLET
8460
MAGENTA
 11460
RED
3093
GREEN
3149
BLUE
3166
VIOLET
3208
RED
2610
GREEN
2660
BLUE
2650
CYAN
4910
VIOLET
2690
MAGENTA
5120
RED
2254
GREEN
2307
BLUE
2239
VIOLET
2286
RED
1505
GREEN
1597
BLUE
1589
VIOLET
1551
RED
1410
GREEN
1670
BLUE
1660
CYAN
2440
VIOLET
1460
MAGENTA
2730
RED
1167
GREEN
1277
BLUE
1268
VIOLET
1279
RED
1002
GREEN
1173
BLUE
1140
VIOLET
1088
 
1Gb/s barrier

RED
922
GREEN
991
BLUE
993
CYAN
1490
VIOLET
983
MAGENTA
1500
RED
844
GREEN
899
BLUE
901
VIOLET
891
RED
784
GREEN
1231
BLUE
1164
VIOLET
1058
RED
670
GREEN
735
BLUE
738
VIOLET
731
RED
501
GREEN
564
BLUE
561
VIOLET
546
RED
453
GREEN
468
BLUE
473
VIOLET
475
RED
380
GREEN
402
BLUE
404
CYAN
475
VIOLET
418
MAGENTA
475
RED
372
GREEN
601
BLUE
606
RED
341
GREEN
374
BLUE
374
VIOLET
393
RED
349
GREEN
357
BLUE
359
RED
329
GREEN
476
BLUE
487
CYAN
817
RED
242
GREEN
276
BLUE
275
RED
223
GREEN
225
RED
158
GREEN
193
BLUE
197
RED
141
GREEN
195
BLUE
192
 
100Mb/s barrier

RED
99
GREEN
124
BLUE
122
RED
94
GREEN
94
BLUE
97
RED
69
GREEN
89
BLUE
89
RED
64
GREEN
86
BLUE
86
RED
37
GREEN
34
RED
31
RED
27

 

Copyright (c) Rhett M. Hollander and Paul V. Bolotoff, 2002-11. All rights reserved.
 
Designed and maintained by Alasir Enterprises, 1999-2011
rhett from alasir.com, walter from alasir.com