Contents
General
Performance investigation of Raspberry Pi USB drives formatted with F2fs, compared with Ext4, were prompted by reports in
XBMC Community Forum
that copying files to the former was significantly faster than to the same drive formatted as Ext4. The particular page is not now directly available but might still be found by Googling for some of the following content, showing the claims.
OpenELEC:~ # time sh -c "cp -r /storage/.xbmc/userdata/Thumbnails/*
/storage/downloads/Thumbnails && sync"
Silicon -power USB 2.0 4GB - EXT4 vs. F2FS
Worst
EXT4 Worst EXT4 Best F2FS Worst F2FS Best Size Ratio
real 5m 46.35s 2m 19.73s 0m 38.67s 0m 36.25s 152M F2FS 8.95
user 0m 0.19s 0m 0.18s 0m 0.20s 0m 0.20s
sys 0m 5.80 0m 5.70s 0m 4.03s 0m 4.46s 1.42
4GB Sandisk Cruzer
real 3m 47.21s 3m 40.32s 2m 28.96s 2m 15.49s 301M F2FS 1.58
u+s 0m 14.98s 0m 11.16s 248M EXT4 1.34
|
The initial investigation is reported in
Raspberry Pi Benchmarks.htm.
This involved a range of file copying exercises on the Raspberry Pi. Results, using a high speed SanDisk Extreme USB 3.0 drive, are repeated below, and indicating that F2fs was only faster at larger file sizes.
The most unusual thing on the above Silicon results is the huge difference between copying time and CPU time.
Copying Files Via Raspbian - Ratio > 1 F2FS is faster
------ Windows ----- F2FS Ext4 F2FS Ext4 F2FS Ext4
Files KB/file MB Drv MB du MB du MB Secs Secs Ratio CPsecs CPsecs Ratio
1 22945 6 129 173 269 178 106.9 63.0 0.59 32.06 26.7 0.83
2 12974 11 140 171 227 176 66.5 57.0 0.86 20.87 16.7 0.80
3 7118 23 161 179 212 184 47.2 39.1 0.83 12.74 12.29 0.96
4T 4370 34 148 156 178 161 35.9 30.0 0.84 7.84 8.2 1.05
5 932 107 100 102 109 105 14.9 18.0 1.21 3.1 4.3 1.38
6 959 492 472 474 466 462 46.2 51.6 1.12 11.82 18.7 1.58
|
Differences between Ext4 and F2fs file sizes are considered below under Copying Files and Data Volumes.
The exercise also included running my DriveSpeed benchmark, where the standard version showed no real benefit of F2fs formatting, except on writing random access speed.
Modified versions of the benchmark were produced to run for extended periods with RAM based file caching enabled. These showed some benefits with F2fs handling small files but up to 8 times faster on random writing speed.
XBMC is a Media Center that can be installed on different Operating Systems. This was installed under Windows to produce a Thumbnail directory (4T above) of the type used for the claimed high speed operation. Copying and benchmark speed results in this report are with files and directories generated and used by XBMC installed on the Raspberry Pi.
To Start
Setup
XBMC for the Raspberry Pi is part of OpenElec (Open Embedded Linux Entertainment Center), a small Linux distribution. Instructions how to install it for use with USB based files can be found
here.
Besides OpenElec 3.2.4, that was found not to support F2fs format, two other varieties were installed on different SD cards (see [1] below). The SanDisk Extreme drive, mentioned above, was formatted via Linux Ubuntu 13.10, initially using GParted Partition Editor, with separate Ext4, F2fs and FAT partitions. For use under OpenElec/XBMC, the F2fs partition needs a label for automatic mounting, the command shown below being used [2].
There is no Terminal available in OpenElec but commands can be executed from an SSH client, in my case via PuTTY installed under Windows 7. Copies of benchmark programs used were saved in the USB stick’s partitions and run from there.
To allow XBMC to use a USB drive, cmdline.txt has to be produced and copied to the system SD drive (see below [3]). There can be complications in specifying the correct drive/partition path, in my case, further complicated as I use a multi-port USB hub.
With multiple partitions, the F2fs partition address (/dev/sd??) can be deduced on using the df command, but experimenting under the normal Raspberry Pi Operating System might be necessary.
When first used, XBMC generates a series of directories (some hidden) on the USB drive. Then, such as thumbnail files are added later. These directories can be copied to other drives or partitions but it might be necessary to change ownership.
[4] below shown F2FS mount command needed for Raspbian. This is mounted by [3] file with OpenElec (when F2FS available [6]). The different versions of Linux used are also shown [5].
[2] Linux Format Command mkfs.f2fs -l Storage /dev/sdxy
OpenElec 3.2.4 dowloaded from http://openelec.tv/
[1] Other OpenElec Varieties downloaded from http://netlir.dk/rbej/builds/MilhouseVH/
Milhouse 2013 OpenELEC_Gotham (Milhouse) Version: devel-20131231164326-r16759-g7260614
Milhouse 2014 OpenELEC_Gotham (Milhouse) Version: devel-20140120161445-r17060-g5ecc934
[3] cmdline.txt on SD card (one line)
boot=/dev/mmcblk0p1 disk=/dev/sdc1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
console=tty1 ssh
[4] Mounting via Raspbian mount -t f2fs /dev/sdc1 /mnt
[5] Systems used with F2FS support for USB Files
Ubuntu 13.10 Linux version 3.12.0
Raspbian Linux version 3.8.4+
Milhouse 2013 Linux version 3.12.6
Milhouse 2014 Linux version 3.12.8
[6] No F2FS support for USB Files
OpenElec 3.2.4 Linux version 3.10.20
|
To Start
OpenElec Overheads
OpenElec has an RSS Feeds option, that scrolls news headlines across the bottom of the screen. This is reported to degrade performance. Before considering other test results, it is appropriate to measure these overheads and to see if there are others imposed on running OpenElec.
The measurement were made using Raspbian and the three OpenElec versions, the latter with and without RSS feeds. The Milhouse varieties produced similar results, the average being shown.
Performance Monitor - The top command was used to measure utilisation after settling down immediately following booting (top -d 5 -n 5 five second intervals, five samples). Memory utilisation is shown below [7], initial demands for OpenElec being far greater than Raspbian, particularly the Milhouse versions, but RSS scrolling makes little difference.
My stressInt program,
see here,
can be used to reduce cache space, as shown below (using ./stressInt KB 200000), but attempting larger demands caused a crash, not the case with Raspbian at 450 MB (with swapping).
CPU loading measurements at [8] show that OpenElec leads to a much higher utilisation than Raspbian, particularly when running RSS News Feeds. This must mainly be at a lower priority, as demonstrated with some of the following benchmark scores.
Raspberry Pi Benchmarks
include Dhrystone and Linpack test programs that measure integer and floating point arithmetic speeds respectively, see [9]. Here, RSS scrolling produces some degradation (lower score).
Similarly using BusSpeed , that measures data transfer speed from data in caches and RAM, a small sample being provided below [10].
Significant RSS performance differences are identified by my multithreading MP-MFLOPS benchmark
(see details here).
This executes 2 and 32 floating point operations per data word from caches and RAM, using 1, 2, 4, and 8 threads, a sample being shown below [11].
Running the top monitor, whilst running MP-MFLOPS, shows that XBMC/MP-MFLOPS CPU utilisation is up to 45%/52% with RSS Feeds running, but typically 18%/81% without. Results suggests that each thread is given the same priority as RSS, leading to worst MP-MFLOPS performance using one thread.
No RSS News Feeds RSS News Feeds Scrolling
[7] Top Monitor KBytes
Used Free Buffer Cached Used Free Buffer Cached
Raspbian 114256 334256 14372 53524
OE 3.2.4 309200 72740 31536 231332 311052 70888 32260 232156
Mil 2013/14 334574 47486 35870 252014 339034 43026 36318 254448
Mil stressInt 354412 27356 4332 106500
[8] Top Monitor CPU Utilisation
%usr %sys %nic %idle %usr %sys %nic %idle
Raspbian 2.3 1.1 0.0 96.6
OE 3.2.4 20.8 2.8 1.2 75.1 83.2 11.2 1.0 4.4
Mil 2013/14 14.5 3.0 0.9 81.5 77.9 13.6 1.4 6.9
[9] Dhrystone Vax MIPS, Linpack MFLOPS
MIPS MFLOPS MIPS MFLOPS
Raspbian 822 40.8
OE 3.2.4 835 42.8 824 33.6
Mil 2013/14 833 41.1 812 37.4
[10] BusSpeed MBytes/second
KBytes 16 64 128 65536 16 64 128 65536
Raspbian 920 372 267 176
OE 3.2.4 1164 398 251 179 989 277 222 170
Mil 2013/14 1127 381 222 163 1044 326 187 146
[11] MP-MFLOPS 1 nad 2 Threads
2 Ops/Word 32 Ops/Word 2 Ops/Word 32 Ops/Word
KBytes 12.8 12.8 12800 12800 12.8 12.8 12800 12800
Threads 1 2 1 2 1 2 1 2
Raspbian 50 52 166 169
OE 3.2.4 42 41 129 130 22 32 74 102
Mil 2013/14 43 43 128 130 21 29 70 95
|
To Start
DriveSpeed Benchmark
On running, results are displayed and saved in driveSpeed.txt log file, as shown below. This shows the file path, helping to identify that the correct partition has been used. Tests carries out are:
[12] Test 1 - Write and read three 8 and 16 MB; Results given in MBytes/second
[13] Test 2 - Write 8 MB, read can be cached in RAM; Results given in MBytes/second
[14] Test 3 - Random write and read 1 KB from 4 to 16 MB; Results are Average time in milliseconds.
The original version appeared to enable caching on reading.
[15] Test 4 - Write and read 200 files 4 KB to 16 KB; Results in MB/sec, msecs/file and delete seconds.
The execution file and source code are in
Raspberry_Pi_Benchmarks.zip.
The source code was modified for other variations.
DriveSpeed RasPi 1.1 Thu Feb 13 11:59:46 2014
Current Directory Path: /mnt/test
Total MB 7998, Free MB 7448, Used MB 550
MBytes/Second
MB Write1 Write2 Write3 Read1 Read2 Read3
[12]
8 17.83 6.03 20.52 26.84 26.96 27.39
16 9.52 14.51 11.55 26.87 27.12 27.41
[13] Cached
8 43.41 64.85 93.34 147.48 148.58 146.71
[14] Random Read Write
From MB 4 8 16 4 8 16
msecs 0.798 0.822 0.856 2.28 2.26 2.23
[15] 200 Files Write Read Delete
File KB 4 8 16 4 8 16 secs
MB/sec 2.51 5.82 8.47 4.55 8.04 12.64
ms/file 1.63 1.41 1.93 0.90 1.02 1.30 0.029
End of test Thu Feb 13 12:00:15 2014
|
To Start
DriveSpeed Results
The following shows DriveSpeed results, via Raspbian and different releases of OpenElec, providing average speeds or running times over all tests and three runs of the benchmark. Relative F2fs/Ext4 speeds are also provided.
It was found that mounting F2fs files was not possible in the first OpenElec tests. Further examination of the posts for reported high speed F2fs copying appeared to suggest that Milhouse releases were used, but earlier versions than those currently available. The first and last ones identified at this time were used here.
It is difficult to be conclusive due to wide variations in speed, but F2fs appears to be slower on writing with the large file and random tests. Except for writing large files, performance via OpenElec is slower than running via Raspbian. Milhouse versions of OpenElec at least support F2fs but provide no real advantage over using Ext4 format. Caching requires further consideration.
Ratio = F2fs/Ext4 Speed - >1 F2fs is faster
[12] Large Files Ext4 F2fs Ratio
MB/second Write Read Write Read Write Read
Raspbian 16.2 26.4 14.6 27.2 0.91 1.03
OpeElec 3.2.4 16.7 24.4 N/A N/A
Milhouse 2013 18.4 23.6 11.9 23.2 0.65 0.98
Milhouse 2014 19.9 22.2 16.6 23.7 0.83 1.06
[13] Caching Ext4 F2fs Ratio
MB/second Write Read Write Read Write Read
Raspbian 50.0 151.8 67.7 148.9 1.35 0.98
OpeElec 3.2.4 37.4 82.5 N/A N/A
Milhouse 2013 42.7 69.8 49.3 64.7 1.15 0.93
Milhouse 2014 34.1 40.4 62.2 77.2 1.82 1.91
[14] Random Ext4 F2fs Ratio
milliseconds Write Read Write Read Write Read
Raspbian 0.76 0.81 2.20 0.82 0.35 0.99
OpeElec 3.2.4 1.13 0.89 N/A N/A
Milhouse 2013 1.57 1.00 3.26 0.99 0.48 1.02
Milhouse 2014 1.07 1.00 2.77 0.99 0.38 1.01
[15] 200 Files Ext4 F2fs Ratio
msecs per file Write Read Write Read Write Read
Raspbian 1.90 1.11 1.63 1.07 1.16 1.03
OpeElec 3.2.4 1.96 1.32 N/A N/A
Milhouse 2013 2.12 1.37 2.06 1.31 1.03 1.05
Milhouse 2014 2.02 1.32 2.05 1.29 0.99 1.02
|
To Start
Cached Small Files
The above DriveSpeed results suggested that caching could benefit F2fs performance. A modified version of the benchmark was produced to measure writing an reading times of 1000 files of increasing sizes, with caching enabled.
The first example below [16] shows writing and reading times separately, where reading speeds are particularly fast, handling data cached in RAM. This one runs out of cache space at 256 KB x 1000 files (half RAM size), with reading time increasing by more than six times compared with the earlier measurement at 128 KB.
Other results [17-20] are for writing plus reading time to compare F2fs and Ext4 with something more resembling copying tests, which are also subject to caching.
Generally, F2Fs is up to 40% faster at file sizes less than 64 KB, but are then hit harder up to 256 KB, probably due to caching differences. At the larger file sizes, Ext4 test are slightly faster.
Performance of the three OpenElec based systems is quite similar (except no F2fs support with 3.2.4). Then, all are slower that running via Raspbian [17], in some cases at less than half speed.
This is probably caused by XBMC overheads.
With scrolling RSS News Feeds enabled [21], Raspbian is typically three times faster.
Anyway, it was here that F2fs demonstrated the best relative performance to Ext4.
As indicated later, there are some issues by a program attempting to allocate more than 200 MB. This and excessive CPU overheads might be associated with OpenElec crashing.
1000 Files With Caching, Milliseconds/File, Lower is better, Ratio >1 F2fs is faster
File KB 4 8 16 32 64 128 256 512 1024
[16]
MH 2014 Wrt Ext4 0.45 0.55 0.76 1.56 3.28 8.59 13.25 25.51 50.54
MH 2014 Rd Ext4 0.11 0.16 0.26 0.58 1.05 1.92 13.72 25.03 47.39
Write + Read
[17]
Raspbian Ext4 0.57 0.59 0.81 1.32 2.58 6.06 13.64 39.40 78.58
F2fs 0.58 0.48 0.57 0.98 2.19 6.41 20.49 39.97 78.98
Ratio 0.99 1.22 1.41 1.34 1.18 0.95 0.67 0.99 0.99
[18]
OpeElec 3.2.4 Ext4 0.55 0.70 1.04 1.95 5.15 9.45 26.13 49.44 97.14
F2fs N/A N/A N/A N/A N/A N/A N/A N/A N/A
[19]
Milhouse 2013 Ext4 0.57 0.73 1.16 2.52 4.50 10.25 30.84 58.66 113.03
F2fs 0.48 0.57 1.83 1.93 6.24 24.93 29.89 53.44 119.55
Ratio 1.18 1.28 0.63 1.31 0.72 0.41 1.03 1.10 0.95
[20]
Milhouse 2014 Ext4 0.56 0.71 1.02 2.14 4.33 10.51 26.96 50.54 97.93
F2fs 0.44 0.57 0.79 1.82 3.99 18.54 29.86 57.05 117.20
Ratio 1.26 1.25 1.30 1.17 1.08 0.57 0.90 0.89 0.84
With Scrolling RSS News Feeds
[21]
MH 2014 Wr+Rd Ext4 1.24 1.52 2.25 5.02 10.33 21.68 36.05 69.84 128.63
F2fs 0.89 1.00 1.64 3.08 6.47 23.12 Crashed
Ratio 1.38 1.51 1.37 1.63 1.60 0.94
|
To Start
Copying Files
The command used [22] and example output [23] are shown below.
For these tests, a Thumbnails directory was produced on the Raspberry Pi via OpenElec/XBMC. Under Windows the size is indicated as 75 MB occupying 82 MB, with 3,471 Files with average size around 22 KB.
Using the du command, drive space reported by Raspbian, for Ext4 files, is only slightly higher than that by Windows and, as the earlier data above, average F2fs file sizes are 4 KB greater than those in the Ext4 format. OpenElec du reported file space approximately twice that indicated by Raspbian (IMPOSSIBLE!), with average F2fs files being 8 KB greater than Ext4. This is considered at Data Volumes below.
On measuring speed of copying files, particularly of the volume used here, the system should be powered down and rebooted between tests, to clear the RAM based cache. As shown below, deleting copied files and repeating the copy process can be much faster.
The difference is more significant under Raspbian, indicating that OpenElec has caching issues. These are considered later.
Copying, after booting, under Raspbian [24] is a little faster than via OpenElec [25-27] with Ext4 format and more so with F2fs files, also using less CPU time in both cases. OpenElec performance is similar across the three versions, where Ext4 is a little faster than F2fs but somewhat better with repeated tests, due to caching effects.
Performance is again degraded with RSS Feeds enabled [28]. The last results [29] shown are for an old slow drive where F2fs formatting did not show any significant performance improvements over Ext4.
[22]
time sh -c "cp -r /storage/.xbmc/userdata/Thumbnails/*
/storage/downloads/Thumbnails && sync"
[23]
real 0m 27.01s
user 0m 0.54s
sys 0m 6.81s
Ext4 F2fs Ext4 F2fs
Boot 1 Boot 2 Repeat Boot 1 Boot 2 Repeat KBytes KBytes
Copy Via Secs Secs Secs Secs Secs Secs &Files &Files
[24]
Raspbian Elap 20.43 17.47 10.04 18.37 19.58 6.17 80584 94679
CPU 6.14 5.54 4.05 5.89 5.19 3.72 3522 3531
[25]
OpenElec 3.2.4 Elap 22.44 23.31 9.88 N/A N/A N/A 161168 N/A
CPU 6.91 6.84 4.50 3522
[26]
Milhouse 2013 Elap 25.06 22.48 13.28 27.14 25.87 20.07 161168 189904
CPU 7.55 7.53 5.47 6.52 6.45 5.47 3522 3531
[27]
Milhouse 2014 Elap 23.18 25.13 11.95 27.83 27.53 23.84 161168 189904
CPU 7.60 7.53 5.19 6.49 6.56 6.19 3522 3531
[28]
Milhouse 2014 Elap 34.37 34.55 19.31 33.38 34.19 19.51 161168 189904
RSS Feed On CPU 8.06 9.10 5.36 6.80 6.80 5.70 3522 3531
[29]
Milhouse 2014 Elap 109.90 99.93 88.45 81.55 98.26 53.26 161168 189904
Old Drive +RSS CPU 7.90 8.08 5.68 7.22 6.85 5.43 3522 3531
|
To Start
Data Volumes
Linux - Performance monitors were used in an attempt to confirm drive and memory data volumes, again using the SanDisk Extreme drive. For Linux (Ubuntu [31] and Raspbian [32]), the vmstat command [30] was used, taking 1 second samples.
Memory and cache size used was calculated from start and end free memory and cache occupancy data. Total KBytes read and written are sums of the 1 second samples of bi (KBytes in per second) and bo (KBytes out per second). User and System CPU time, idle time and waiting for I/O time were calculated from the %us, %sy, %id and %wa utilisation entries.
The Linux PC CPU is much faster than that in the RPi, confirmed by the CPU seconds used.
Memory and drive I/O data sizes were effectively the same on the two systems. The results further confirm that F2fs file sizes are larger than with Ext4 format (4 KB per file was noted earlier), but CPU time used is not much higher.
OpenElec - Vmstat is not available using OpenElec (at least the versions I installed). For recording memory occupancy, the top command was used, shown below [33], along with a sample of output. Then, iostat was executed [34] to measure drive data volumes and CPU utilisation (-m for MB/second, -z omit output when no activity). Each of these, and the copy command, were run using three separate PuTTY SSH client terminals via Windows.
Of particular note, memory and drive data volumes [35], recorded under OpenElec, are effectively the same as Raspbian and Ubuntu. This implies that those measured by the du command [25-29] reflect memory demands and should not be used to calculate drive MB/second speeds.
Recorded CPU utilisation for OpenElec Ext4 and F2fs copying are not much different but quite a bit higher than using Raspbian.
Note that the start and end cache occupancies are different between Raspbian and OpenElec. However, attempts were made to reduce initial demands by running my stressInt reliability test to clear some space (command at least ./stressInt KB 200000) - see
Raspberry Pi Stress Tests.htm.
Initial demands and the impact of running stressInt are shown below [36]. The program managed to reduce demands under Raspbian to the extent that pages could be swapped out to the SD drive (see [32] above). Running under OpenElec, stressInt could not allocate more than 200 MBytes and initial cache occupancy could not be reduced below 100 MB. Perhaps there are some tuning options that allow this and enable swapping.
Of the initial Raspbian copying exercise above, test 5 data, at 472 MB, clearly could not be cached and cache occupancy would not reflect data volume. It was also found that vmstat results for test 1, with 22945 files, did not reflect memory expected to be used. Two further directories were created with fewer of the larger and smaller files. Results [37] below show that measured memory occupancy still reflects twice the size of data read. It seems that the latter equates to size on disk, rather than data size (small files size/data space on Windows was 34/46 MB), but much smaller files would be needed to show significant differences.
This depends on drive sector size, most frequently being 4 KB.
Linux Ubuntu and Raspbian
[30] vmstat 1 50 > vmstatExt4.txt
procs ----------memory---------- ---swap-- ------io----- -system-- ----cpu----
[31]
Ubuntu r b swpd free buff cache si so bi bo in cs us sy id wa
Ext4
Start 0 0 0 2761384 91764 594824 0 0 0 0 515 1386 3 1 96 0
End 0 0 0 2589468 94020 755612 0 0 0 9116 1330 2674 0 1 34 64
Used 171916 160804 Total 81656 83688 Seconds .1 .4 8 12
F2fs
Start 0 0 0 3402724 34076 337712 0 0 0 0 406 1321 4 1 94 0
End 0 0 0 3207148 34108 527440 0 0 0 0 206 231 1 0 99 0
Used 196360 189728 Total 94352 111272 Seconds .1 .5 7 7
[32]
Raspbi r b swpd free buff cache si so bi bo in cs us sy id wa
Ext4
Start 0 0 24548 367092 5760 35044 0 0 0 0 8108 136 1 8 91 0
End 0 0 24540 193036 9164 197160 0 0 0 0 8099 64 1 3 96 0
Used 174484 162116 Total 84112 88304 Seconds 1 9 1 11
F2fs
Start 0 0 0 361984 932 25028 0 0 0 0 8108 348 16 4 80 0
End 0 0 0 164916 1140 215120 0 0 4 144 8326 409 12 2 67 19
Used 197472 190092 Total 95012 96976 Seconds .3 10 1 10
OpenElec
[33] top -d 5 -n 20 > topf2fs.txt
Mem: 176676K used, 205676K free, 0K shrd, 9728K buff, 115796K cached
[34] iostat -m -z 1 50 > > iostf2fs.txt
drive Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdc1 309.57 4.40 0.00 4 0
CPU %user %nice %system %iowait %steal %idle
19.78 0.00 57.14 23.08 0.00 0.00
[35] used free buff cache Rd-MB Wr-MB us sy id wa
Ext4
Start 176676 205676 9728 115796
End 348648 33704 12100 276604
Used 171972 171972 160808 Total 83.8 85.6 Seconds 5 14 1 10
F2fs
Start 159468 222884 2692 112588
End 354180 28172 3272 301588
Used 194712 194712 189000 Total 95.1 106.5 Seconds 6 12 2 8
[36] Startup Memory
Raspbian OpenElec
free buff cache free buff cache
After Boot 330624 20780 50380 36348 32480 260160
stressInt KB 200000 329584 21152 50412 221068 3800 107104
stressInt KB 250000 N/A
stressInt KB 400000 408444 880 9296
[37] Larger and Smaller Files Raspbian/Linux
Large Files Small Files
du 139400, files 374, average 373 KB du 45304, files 5863, average 7.7 KB
Linux free buff cache bi bo free buff cache bi bo
Start 352716 948 17116 358188 1424 15244
End 67716 2224 297580 253048 4328 107344
Used 285000 280464 142248 140296 105140 92100 48096 55996
|
To Start
Roy Longbottom March 2014
The Official Internet Home for my Benchmarks is via the link
Roy Longbottom's PC Benchmark Collection
|